transfer_entropy
描述
计算从序列x到序列y的转移熵(Transfer Entropy)。 转移熵衡量了一个时间序列对另一个时间序列的影响程度,是一种非线性的因果关系度量。 具体来说,它测量了在已知x的过去k个状态的情况下,对y的当前状态预测能力的提升程度。
函数签名
transfer_entropy(x_, y_, k, c) -> None
参数
x_
(array_like)
源序列,用于预测目标序列
y_
(array_like)
目标序列,我们要预测的序列
k
(int)
历史长度,考虑过去k个时间步的状态
c
(int)
离散化的类别数,将连续值离散化为c个等级
返回值
float 从x到y的转移熵值。值越大表示x对y的影响越大。
Python调用示例: ```python import numpy as np from rust_pyfunc import transfer_entropy
创建两个相关的时间序列
x = np.array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0]) y = np.array([0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]) # y比x滞后一个时间步
计算转移熵
k = 2 # 考虑过去2个时间步 c = 4 # 将数据离散化为4个等级 te = transfer_entropy(x, y, k, c) print(f"从x到y的转移熵: {te}") # 应该得到一个正值,表示x确实影响y
反向计算
te_reverse = transfer_entropy(y, x, k, c) print(f"从y到x的转移熵: {te_reverse}") # 应该比te小,因为y不影响x ```
示例
输入:
transfer_entropy(
[1.0, 2.0, 3.0, 4.0, 5.0],
[1.5, 2.5, 3.5, 4.5, 5.5],
2,
3
)
输出:
-inf
输入:
transfer_entropy(
[1.0, 2.0, 3.0, 4.0, 5.0],
[5.0, 4.0, 3.0, 2.0, 1.0],
2,
3
)
输出:
0.0
Python使用示例
import numpy as np
from rust_pyfunc import transfer_entropy
# 使用示例
result = transfer_entropy([1.0, 2.0, 3.0, 4.0, 5.0], [1.5, 2.5, 3.5, 4.5, 5.5], 2, 3)
print(f"结果: {result}")