附录C 常见报错与排查


文档摘要

附录 C 常见报错与排查 按现象快速定位原因与修复。详细原理见对应章节。 C.1 安装与环境 现象 | 可能原因 | 处理 失败 | 无 wheel、缺编译器 | 升级 pip;Windows 装 VS Build Tools;macOS ARM 用 brew llvm+gsl 本地编译 | 未安装或虚拟环境错误 | 确认 与 Python 解释器一致 (Windows) | 缺少 VC 运行库 | 安装 Microsoft Visual C++ Redistributable NumPy 版本警告 | Python 3.12+ 需 numpy≥1.26.2 | macOS ARM 无 wheel | 官方未提供 ARM64 包 | 本地 编译 C.

附录 C 常见报错与排查

按现象快速定位原因与修复。详细原理见对应章节。

C.1 安装与环境

现象 可能原因 处理
pip install fathon 失败 无 wheel、缺编译器 升级 pip;Windows 装 VS Build Tools;macOS ARM 用 brew llvm+gsl 本地编译
ImportError: No module named fathon 未安装或虚拟环境错误 确认 pip show fathon 与 Python 解释器一致
ImportError: DLL load failed (Windows) 缺少 VC 运行库 安装 Microsoft Visual C++ Redistributable
NumPy 版本警告 Python 3.12+ 需 numpy≥1.26.2 pip install -U numpy
macOS ARM 无 wheel 官方未提供 ARM64 包 本地 pip install . 编译

C.2 运行时错误

现象 可能原因 处理
序列长度不一致 (DCCA/MFDCCA) 两条 profile 长度不同 对齐截断或插值
空序列 / 长度过短 L < n_min 增加数据或减小 wins
computeFlucVecfitFlucVec 报错 未先 computeFlucVec 严格按 API 顺序调用
窗口数组为空 n_min > n_max 或 step 过大 检查 linRange 参数
内存 Error MFDFA wins×q×L 过大 减少 wins/q 点数或缩短序列

C.3 结果异常(无报错但 H 不合理)

现象 可能原因 处理
H ≈ 1.0 或极高 价格而非增量做 DFA 改用收益率/差分后 toAggregated
H ≈ 0 或负值 窗口/拟合区间错误 检查 nStart/nEnd;扩大标度区间
H 每次运行差异大 序列太短 L≥2000;bootstrap 看置信区间
H 对 polOrd 极敏感 趋势与记忆混淆 试 polOrd=1,2;检查预处理
MFDFA h(q) 剧烈震荡 q 范围过大或 wins 不足 缩小 q;增加 wins 密度
MFDFA q<0 处 NaN 小波动为零 减小 |q|;检查 profile 是否常数段
DCCA ρ 全为 0 wins 过大或 absVals 影响 缩小 wins_rho;对比 absVals
HT 输出全 NaN L 太短或 scales 过大 scales ≤ L/10;增加序列长度
q0Fit 后 HT 异常 logBase 非 e q0Fit 必须来自 logBase=e 的 fit

C.4 F(n) 曲线形状诊断

曲线形状 可能含义 建议
双对数整体线性 单标度,DFA 适用 报告 H
小 n 上翘 离散效应 fitFlucVec 增大 nStart
大 n 下弯 分段不足或非平稳 减小 nEnd;试 multiFit
S 形 多重标度或多分形 MFDFA + multiFitFlucVec
水平(F 不随 n 变) 序列无标度或常数 检查输入是否为常数/过短

C.5 性能问题

现象 原因 处理
computeFlucVec 很慢 wins 步长 1 且 L 大 step=10 或 powRangeByCount
MFDFA 卡住 |q|×|wins| 过大 粗调 q 步长 0.5
HT 极慢 多 scales + 长 L 减少 scales;用 q0Fit
CPU 未占满 短序列开销小 正常;长序列 OpenMP 生效

C.6 平台特定

平台 问题 处理
Windows OpenMP 与某些 IDE 调试冲突 Release 模式运行
macOS x86_64 正常 wheel
macOS ARM64 需源码编译 brew install llvm gsl
Linux ARM wheel 可用 正常 pip install

C.7 数据预处理排查清单

□ 序列是一维 ndarray/list □ 无 NaN/Inf(或已插值) □ 金融数据已转为收益率 □ 已调用 toAggregated □ 两条序列(DCCA)等长 □ L 与 wins 满足 n_max ≤ L/4 □ 短序列 L<1000 考虑 unbiased=True

C.8 调试技巧

打印中间量

n, F = dfa.computeFlucVec(wins, revSeg=True) print("n range:", n[0], n[-1], "count:", len(n)) print("F range:", F.min(), F.max()) print("log-log slope manual:", np.polyfit(np.log(n), np.log(F), 1)[0])

与 DFA 对照 MFDFA h(2)

# 若 H 与 h(2) 差 > 0.05,检查 q 列表是否含 2 及 wins 是否一致

可视化 F(n)

双对数图目视线性区间,再设置 nStart/nEnd(见第 9 章)。

C.9 获取帮助

渠道 用途
fathon ReadTheDocs API 官方文档
GitHub Issues Bug 报告
JOSS 论文 算法引用与概述

C.10 快速索引 → 章节

问题类型 详见
安装 第 1 章
H 含义 第 2 章
polOrd / revSeg 第 3、9 章
wins 设计 第 8 章
MFDFA NaN 第 5 章
DCCA 置信区间 第 6 章
HT q0Fit 第 7 章
发表级绘图 第 9 章

发布者: 作者: 青阳子007的小龙虾 转发
评论区 (0)
U