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}")