majianthu的个人博客分享 http://blog.sciencenet.cn/u/majianthu

博文

Copula熵及copent包典型问题解答

已有 4153 次阅读 2022-12-9 12:57 |系统分类:观点评述

copent包实现了copula熵(Copula Entropy:CE)、传递熵(Transfer Entropy:TE)和正态性检验统计量的估计算法,有R和Python语言两个版本,分别在CRANPyPI上共享。算法包发布以来,得到了世界各地的广泛使用。同时,不少使用者也来信反映使用中遇到的各种问题,这里将典型的问题列举并解答如下,以供大家参考。如有其他问题,欢迎留言。


问1:Python版的copent包使用时报错“math domain error”,是什么原因?如何解决?

答1:请更新至最新版(v0.3.2),该版已解决此问题,此问题存在于0.2以前版本中。原因是因为KSG熵估计算法过程中有对样本间距离取对数的步骤,当有相同样本时就会出现距离为0,从而导致计算log0的数值错误。


问2:Python版的copent包使用时报错“RecursionError: maximum recursion depth exceeded ... ...”,如何解决?

答2:请更新至最新版(v0.3.2)。这是由一处变量初始化bug所致,已修正。


问3:估计值中出现了部分负数是怎么回事?

答3:这是正常的算法估计偏差,因为copent包使用了KSG熵估计算法,而KSG熵估计会带来偏差。一般负数仅为少量的、个别的,而CE值的估计是可靠的,大小顺序是不受影响的,仍然可以比较CE的大小。


问4:Python版的包怎么多次估计值有点不一样?

答4:这是因为为了处理第一问的log0数值错误,算法异常处理中对变量加了轻微的随机噪声扰动所至。但估计值大体是准确的,加的噪声会导致估计值的小幅偏差,一般不影响后续分析。且如必要,可通过多次估计求平均消除偏差。出现这种log0错误情况的机会非常小,大多数情况都不会遇到。


问5:数据比较大,计算速度慢怎么办?内存不够怎么办?

答5:Python用户请更新至最新版(v0.3.2),此版已大幅提高算法的速度,且可更好地处理内存要求高的大数据情况。此前(v0.3版以前),处理内存不够的方式是给估计算法函数(copent和transent)设有一个mode参数,已不建议使用。


问6:如何根据CE值来确定是否具有相关性?有没有一个统一的标准?可以像相关系数那样有一个[-1,1]的取值范围吗?

答6:CE衡量的是相关性的信息量,是一个绝对的量,没有明确的上限,因此也就没有统一的数值标准来决定是否相关,相关性的标准阈值要根据具体的情况来决定。而相关系数衡量的是相关性的程度,是一个相对的量,因此有固定取值范围。CE适用于任何类型分布,而相关系数只在高斯分布情况下才是合理的。顺便多说一句,在高斯分布的情况下,CE与相关系数是有等价关系的,如下式所示:

Hc(x)=|rho|/2

其中rho是高斯分布随机向量X的相关系数矩阵。


问7:能否计算多变量之间的CE?

答7:可以。CE是多变量相关性/独立性度量,可以直接调用copent函数计算之。


问8:能否计算两个多变量之间的CE?

答8:可以。只要将多变量看成单变量计算CE,再减去每个多变量内的CE即可。数学公式如下:

Hc(X;Y)=Hc(X,Y)-Hc(X)-Hc(Y)

具体请自行推导。


问9:copent是否有其他语言实现?

答9:有Julia语言版实现,请见JuliaHub上的CopEnt包。另外,R语言的Cylcop包和Python语言的MLFinlab包也实现了简单的基于Copula熵的互信息估计算法。


问10:哪里能了解到Copula熵的更多信息?

答10:请见此综述论文:

马健.Copula熵:理论和应用.ChinaXiv:202105.00070, 2021.

文中有Copula熵的理论和应用的最新信息,特别是介绍了其在30多个学科领域的实际应用。


问11:有copent包的示例代码吗?

答11:简单使用示例请参考随包附带的测试用例,更多实际应用的示例代码请参考我的GitHub,包括:


问12:如何引用copent包?

答12:请引用如下论文,文献1提出了copula熵及其估计算法,文献2介绍了copent包。

  1. Ma, Jian, and Sun, Zengqi. Mutual information is copula entropy. Tsinghua Science & Technology, 2011, 16(1): 51-54. See also arXiv preprint arXiv:0808.0845, 2008.

  2. Ma, Jian. copent: Estimating Copula Entropy and Transfer Entropy in R. arXiv preprint arXiv:2005.14025, 2020.




https://wap.sciencenet.cn/blog-3018268-1367222.html

上一篇:Copula熵的多学科实际应用 (十一)
下一篇:Copula熵的多学科实际应用 (十二)
收藏 IP: 221.218.140.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (2 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-15 11:15

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部