跳到内容

BZ纸张/R传递熵

存储库文件导航

R-CMD检查 CRAN_状态_标签

R传递熵

的目标R传递熵是实现使用Shannon或Renyi方法的传递熵度量。

下面可以找到一个简短的介绍,以获得更全面的介绍传递熵方法和R传递熵软件包,请参见渐晕R传递熵纸张.如果您在学术工作中使用该软件包,请务必引用我们,另请参见引文(“转移熵”).

作者传输熵包不再开发其包,自2018-08-10,并建议使用此软件包。

安装

您可以安装R传递熵具有

安装.包("R传递熵")

或github的开发版本

#install.packages(“devtools”)
开发工具::安装github("BZ纸张/R传递熵")

使用模拟数据的示例

模拟一个简单的模型以获得两个非独立(参见Dimpfl和Peter(2013)中的模拟研究),即时间序列是其他加性噪声的滞后。在这种情况下,人们期望重要信息从x流向y,而没有从y流向x。

模拟时间序列

图书馆(R传递熵)图书馆(未来)#启用并行处理计划(多会话)设置种子(20180108)n个 <- 2000
x个 <-代表(0,n个 + 1) <-代表(0,n个 + 1)对于( 在里面序列(n个)) {x个[ + 1]<- 0.2 * x个[]+rnorm公司(1,0,2)[ + 1]<- x个[]+rnorm公司(1,0,2)}x个 <- x个[-1] <- [-1]

可视化

图书馆(ggplot2)图书馆(额外网格)主题集(主题灯光())#滞后X图
第1页 <-ggplot图(数据帧(x个 =c(c)(不适用,x个[1:(长度(x个)- 1)]), = ),aes(x个,))+地理_平滑()+地理点(阿尔法 = 0.5,大小 = 0.5)+实验室(x个 =表达式(X(X)[t吨 - 1]), =表达式(Y(Y)[t吨]))+坐标_固定(1)+scalex连续(限制 =范围(x个))+scale_y_连续(限制 =范围())#X-Y图
第2页 <-ggplot图(数据帧(x个 = x个, = ),aes(x个,))+地理_平滑()+地理点(阿尔法 = 0.5,大小 = 0.5)+实验室(x个 =表达式(X(X)[t吨]), =表达式(Y(Y)[t吨]))+坐标_固定(1)+scalex连续(限制 =范围(x个))+scale_y_连续(限制 =范围())#滞后Y图
第3页 <-ggplot图(数据帧(x个 = x个, =c(c)(不适用,[1:(长度()- 1)])),aes(x个,))+地理_平滑()+地理点(阿尔法 = 0.5,大小 = 0.5)+实验室(x个 =表达式(X(X)[t吨]), =表达式(Y(Y)[t吨 - 1]))+坐标_固定(1)+scalex连续(限制 =范围(x个))+scale_y_连续(限制 =范围()) <-网格排列(第1页,第2页,第3页,ncol公司 = )

香农转移熵

设置种子(20180108 + 1)香农特 <-传递_熵(x个 = x个, = )#>香农熵在8个核心上100次洗牌。
#>x和y的长度为2000(删除了0个NA)
#>【计算】X->Y传递熵
#>[计算]Y->X传递熵
#>[bootstrap]300次
#>完成-总时间4.2秒

香农特
#>香农转移熵结果:
#> -----------------------------------------------------------
#>方向TE效率。TE标准错误。p值信号
#> -----------------------------------------------------------
#>X->Y 0.1245 0.1210 0.0014 0.0000***
#>Y->X 0.0020 0.0000 0.0014 0.8467
#> -----------------------------------------------------------
#>引导TE分位数(300次复制):
#> -----------------------------------------------------------
#>方向0%25%50%75%100%
#> -----------------------------------------------------------
#>X->Y 0.0005 0.0022 0.0029 0.0040 0.0083
#>Y->X 0.0008 0.0024 0.0031 0.0041 0.0088
#> -----------------------------------------------------------
#>观察次数:2000
#> -----------------------------------------------------------
#>p值:<0.001’***’,<0.01’**',<0.05’*',<0.1’摘要(香农特)#>香农转移熵
#>
#>系数:
#>te ete se p值
#>X->Y 0.1244709 0.1210119 0.0014<2e-16***
#>Y->X 0.0020383 0.0000000 0.0014 0.8467
#> ---
#>Signif(签名)。代码:0’***’0.001’**'0.01’*'0.05’0.1 ' ' 1
#>
#>引导TE分位数(300次复制):
#>方向0%25%50%75%100%
#>X->Y 0.0005 0.0022 0.0029 0.0040 0.0083
#>Y->X 0.0008 0.0024 0.0031 0.0041 0.0088
#>
#>观察次数:2000

或者,您可以只计算传递熵或有效传递熵

计算(_te)(x个,)#> [1] 0.1244709计算(_T)(,x个)#> [1] 0.002038284计算(_ET)(x个,)#> [1] 0.1213265计算(_ET)(,x个)#> [1] 0

仁义传递熵

设置种子(20180108 + 1)仁义(_te) <-传递_熵(x个 = x个, = , = "仁义",q个 = 0.5)#>Renyi在8核100次洗牌中的熵。
#>x和y的长度为2000(删除了0个NA)
#>【计算】X->Y传递熵
#>[计算]Y->X传递熵
#>[bootstrap]300次
#>完成-总时间3.62秒

重复(_T)
#>仁义传递熵结果:
#> -----------------------------------------------------------
#>方向TE效率。TE标准错误。p值信号
#> -----------------------------------------------------------
#>X->Y 0.0852 0.0393 0.0217 0.0300*
#>Y->X 0.0276-0.0139 0.0226 0.7233
#> -----------------------------------------------------------
#>引导TE分位数(300次复制):
#> -----------------------------------------------------------
#>方向0%25%50%75%100%
#> -----------------------------------------------------------
#>X->Y-0.0094 0.0273 0.0404 0.0557 0.1132
#>Y->X-0.0358 0.0266 0.0421 0.0576 0.1141
#> -----------------------------------------------------------
#>观察次数:2000
#>问题:0.5
#> -----------------------------------------------------------
#>p值:<0.001’***’,<0.01’***’,<0.05’*’,<0.1’计算(_te)(x个,, = "仁义",q个 = 0.5)#> [1] 0.08515726计算(_te)(,x个, = "仁义",q个 = 0.5)#> [1] 0.02758021计算(_ET)(x个,, = "仁义",q个 = 0.5)#> [1] 0.04393078计算(_ET)(,x个, = "仁义",q个 = 0.5)#> [1] -0.01612456

功能详细度akaquiet=真

要禁用函数的详细性,可以使用参数安静的.请注意,我们已设置nboot=0因为我们不需要自举本例中的分位数。

时间 <-传递_熵(x个,,步行 = 0,安静的 = T型)时间
#>香农转移熵结果:
#> -----------------------------------------------------------
#>方向TE效率。TE标准错误。p值信号
#> -----------------------------------------------------------
#>X->Y 0.1245 0.1212 NA不适用
#>Y->X 0.0020 0.0000 NA不适用
#> -----------------------------------------------------------
#>对于标准误差和p值的计算,设置为boot>0
#> -----------------------------------------------------------
#>观察次数:2000
#> -----------------------------------------------------------
#>p值:<0.001’***’,<0.01’**',<0.05’*',<0.1’

如果要禁用来自的反馈传递_熵函数,您可以通过使用set_quiet(真)

设置安静(真的)时间 <-传递_熵(x个,,步行 = 0)时间
#>香农转移熵结果:
#> -----------------------------------------------------------
#>方向TE效率。TE标准错误。p值信号
#> -----------------------------------------------------------
#>X->Y 0.1245 0.1211 NA不适用
#>Y->X 0.0020 0.0000 NA不适用
#> -----------------------------------------------------------
#>对于标准误差和p值的计算,设置为boot>0
#> -----------------------------------------------------------
#>观察次数:2000
#> -----------------------------------------------------------
#>p值:<0.001’***’,<0.01’**',<0.05’*',<0.1’

#返回设置安静(错误的)时间 <-传递_熵(x个,,步行 = 0)#>香农熵在8个核心上100次洗牌。
#>x和y的长度为2000(删除了0个NA)
#>【计算】X->Y传递熵
#>[计算]Y->X传递熵
#>完成-总时间0.13秒

并行编程

使用未来程序包及其计划我们可以执行所有像这样并行计算

图书馆(未来)计划(多会话)时间 <-转移_复制(x个,,步行 = 100)#>香农熵在8个核心上100次洗牌。
#>x和y的长度为2000(删除了0个NA)
#>【计算】X->Y传递熵
#>[计算]Y->X传递熵
#>[bootstrap]100次
#>完成-总时间1.92秒

#恢复到顺序模式计划(相继的)时间 <-传递_熵(x个,,nboot公司 = 100)#>香农熵在1核上100次洗牌。
#>x和y的长度为2000(删除了0个NA)
#>【计算】X->Y传递熵
#>[计算]Y->X传递熵
#>[bootstrap]100次
#>完成-总时间4.08秒

#关闭多会话,另请参阅?计划计划(相继的)

关于

实现传递熵的代码(Shannon和Renyi)

资源

许可证

星星

观察者

叉子

发布

未发布版本

包装

未发布包

贡献者4

  •  
  •  
  •  
  •