"""ex01smoketest.py — 第 1 章 冒烟测试 目标:5 分钟内验证 fathon 安装正确,拿到第一个 Hurst 指数。 对应教程:tutorials/01-environment.md 的 1.3 节「验证安装」。 运行: python ex01smoketest.py 预期输出: fathon imported OK H ≈ 0.5(白噪声的理论值) """ import numpy as np import fathon from fathon import fathonUtils as fu def main(): 确认导入链路正常 print("fathon imported OK") print("numpy", np.
"""ex01_smoke_test.py — 第 1 章 冒烟测试
目标:5 分钟内验证 fathon 安装正确,拿到第一个 Hurst 指数。
对应教程:tutorials/01-environment.md 的 1.3 节「验证安装」。
运行:
python ex01_smoke_test.py
预期输出:
fathon imported OK
H ≈ 0.5(白噪声的理论值)
"""
import numpy as np
import fathon
from fathon import fathonUtils as fu
def main():
# 1. 确认导入链路正常
print("fathon imported OK")
print("numpy", np.version)
# 2. 造一段白噪声增量(期望 H ≈ 0.5) np.random.seed(0) raw = np.random.randn(1000) # 3. toAggregated = 去均值 + 累积和,得到 DFA 需要的 profile # 详见教程第 3.2 节、第 8 章 profile = fu.toAggregated(raw) # 4. DFA 三连:构造对象 → 算波动向量 → log-log 拟合 dfa = fathon.DFA(profile) wins = fu.linRangeByStep(10, 200) # 窗口范围 [10, 200] n, F = dfa.computeFlucVec(wins, revSeg=True, polOrd=1) H, intercept = dfa.fitFlucVec() # 5. 报告结果。白噪声 H 应落在 [0.45, 0.55] 附近 print(f"Smoke test H = {H:.3f} (理论值 ≈ 0.5)") if 0.3 <= H <= 0.7: print("[OK] 环境就绪,可继续后续示例。") else: print("[WARN] H 超出 [0.3, 0.7],请检查 fathon / numpy 版本与随机种子。")
if name == "main":
main()