本代码使用 Python
重构了“模式因果” skstavroglou/pattern_causality 的 R
语言算法,并修复了一些错误。论文:https://doi.org/10.1073/pnas.1918269117。
由于论文作者的代码经过丑化难以阅读,且有在一些情况下会报错。所以本文只是对源代码的重构,不涉及任何算法上的修改。
所以此仓库的算法没有任何的改动和个人理解,此仓库不讨论该算法的正确性和有效性
有关我对该算法的理解和看法,请移步模式因果(Pattern Casuality)真的有用吗?
参照 test.py
中的例子。
-
使用
pc.py
中的PC
类构建pc
实例,参数如下pc = PC(X, Y, E=2, tau=1, p=2, h=0)
X
: 原因时间序列Y
: 结果时间序列E
: 嵌入维度tau
: 滞后期p
:$L_p$ 距离,1 为曼哈顿距离,2 为欧几里得距离h
: 预测跨度期,为 0 时为同步预测 -
使用
pc.calc(save_to=)
计算X
对Y
的因果强度:pc.calc()
save_to
: 指定结果输出路径,默认为当前目录的result.csv
文件结果输出为三列表格,第一列为各时点正因果,第二列为负因果,第三列为暗因果。
本代码使用测试数据与作者的 R
语言代码进行了结果对比,当 E=2
时所有测试数据均得到相同结果。 当 E=3
时作者代码运行报错,故未测试,用户可自行测试。
本代码只是对论文算法和作者 R
语言代码的 Python
重构,未进行任何算法上的改动!
如果你觉得本代码对原文算法理解有误,欢迎提 issue 交流,但请注意本代码使用测试数据在 E=2
时通过了测试。关于 Python
语言层面的问题请自行解决。