1. 基本概念
1.1 熵
熵原本是一个热力学概念,是用来描述热力学系统混乱(无序)程度的度量。在信息论建立之后,关于上的概念和理论得到了发展。作为衡量时间序列中新信息发生率的非线性动力学参数,熵在众多的科学领域得到了应用。八十年代最常用的熵的算法是K-S熵及由它发展来的E-R熵,但这两种熵的计算即使对于维数很低的混沌系统也需要上万点的数据,而且它们对于噪声很敏感,时间序列叠加了随机噪声后这两种熵的计算可能不收敛。
1.2 近似熵
近似熵(APEN, Aproximate Entropy),是由Pincus在九十年代初提出的。主要是从衡量时间序列复杂性的角度来度量信号中产生新模式的概率大小,产生新模式的概率越大,序列的复杂性越大,相应的近似熵也越大。 近似熵己成功应用于生理性时间序列的分析,如心率信号,血压信号,男性性激素分泌曲线等时间序列的复杂性研究中,还预示了近似熵表征人的某些生理变化情况的能力。
1.3 样本熵
样本熵(Sample Entropy )是由Richman和Moornan提出的一种新的时间序列复杂性的度量方法。样本熵在算法上相对于近似熵算法的改进:相对于近似熵而言,样本熵计算的则是和的对数。样本熵旨在降低近似熵的误差,与已知的随机部分有更加紧密的一致性,样本熵是一种与现在的近似熵类似但精度更好的方法。
1.4 样本熵的优势(与近似熵相比)
与近似熵相比,样本熵具有两大优势:
- 第一,样本熵不包含自身数据段的比较,它是条件概率的负平均自然对数的精确值,因此样本熵的计算不依赖数据长度;
- 第二,样本熵具有更好的一致性。即如一时间序列比另一时间序列有较高的值的话,那对于其他m和r值,也具有较高的值。
2. 计算方法
3. 代码实现
3.0 官方使用文档
官方使用文档
3.1 安装需要的包
pip install sampen
3.2 核心代码
from sampen import sampen2
series_data = []
with open('relative/path/to/file.txt', 'r') as file:
for row in file:
series_data.append(float(row.strip(' \t\n\r')))
sampen_of_series = sampen2(series_data)
默认最大历元长度 m =2,默认公差 r =0.2。
The estimate of the conditional probability that the subseries of the epoch length that matches pointwise within the tolerance (that is, the Sample Entropy) will be the last item in the returned tuple.
The earlier items in the returned tuple will be the sample entropies for lengths 0 up to the maximum epoch.
返回类似:
[
(0, 2.140629540027156, 0.0028357991885715863)
(1, 2.162868347337613, 0.004903248034526253),
(
2,
2.123328492035711,
0.007596323621379352
),
]
|