应用场景
- 金融分析:检测股票价格和收益率的多重分形结构
- 生理信号:分析心跳间隔、脑电图等生物信号
- 气候数据:研究温度和降水的长程相关性
- 地球物理序列:地震、地震波和潮汐分析
使用示例
基础用法
import numpy as np
from FreeAeonFractal.FASeriesMFS import CFASeriesMFS
x = np.cumsum(np.random.randn(5000)) # 示例:随机游走
mfs = CFASeriesMFS(x, q_list=np.linspace(-5, 5, 21))
df_mfs = mfs.get_mfs()
print(df_mfs.head(10))
mfs.plot(df_mfs)
自定义尺度窗口
from FreeAeonFractal.FASeriesMFS import CFASeriesMFS, recommended_lag
x = np.cumsum(np.random.randn(10000))
lag = recommended_lag(len(x), order=2, num_scales=40)
mfs = CFASeriesMFS(x)
df_mfs = mfs.get_mfs(lag_list=lag, order=2)
print(df_mfs)
安装(额外依赖)
pip install FreeAeon-Fractal MFDFA
类说明
CFASeriesMFS
初始化参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
data | array-like | 必填 | 输入1D时间序列 |
q_list | array-like | linspace(-5,5,51) | q矩值 |
with_progress | bool | True | 是否显示进度条 |
get_mfs(lag_list=None, order=2)
通过MFDFA计算多重分形谱。返回DataFrame,列:
| 列名 | 描述 |
|---|---|
q | 矩阶数 |
h(q) | 广义Hurst指数 |
t(q) | 质量指数 τ(q) = q·h(q) − 1 |
a(q) | 奇异性强度 α(q) = dτ/dq |
f(a) | 多重分形谱 f(α) = q·α − τ(q) |
d(q) | 广义维度 D(q) = τ(q)/(q−1) |
plot(df_mfs)
2×3子图:H(q)、τ(q)、D(q)、α(q)、f(α) vs α、归一化概览图
recommended_lag(x_len, order, num_scales, s_min, s_max_ratio)
生成几何间距尺度窗口集合。序列太短时抛出ValueError。
理论背景 (MFDFA)
1. 累积曲线:Y(i) = Σ_t x(t) - mean(x)
2. 分段:划分为大小为s的不重叠窗口
3. 去趋势:在每窗口内拟合order阶多项式,计算F²(s,v)
4. 波动函数:Fq(s) = (1/N Σ [F²]^(q/2))^(1/q)
5. 标度律:Fq(s) ~ s^h(q) → 斜率 = h(q)
重要说明
- 建议最少1000个点;低于500点结果不可靠
- 推荐
np.linspace(-5, 5, 21);Δh > 0.1表示多重分形特性 - 需要
pip install MFDFA