序列多重分形谱 - CFASeriesMFS

基于MFDFA的1D时间序列多重分形分析

应用场景

使用示例

基础用法

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

初始化参数

参数类型默认值说明
dataarray-like必填输入1D时间序列
q_listarray-likelinspace(-5,5,51)q矩值
with_progressboolTrue是否显示进度条

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)

重要说明

  1. 建议最少1000个点;低于500点结果不可靠
  2. 推荐 np.linspace(-5, 5, 21);Δh > 0.1表示多重分形特性
  3. 需要 pip install MFDFA