繁体   English   中英

我在 Python 中实现 R 的 Transfer Entropy 包时遇到问题

[英]I'm having problems implementing R's Transfer Entropy package from within Python

我希望通过使用 rpy2 调用 R 的 RTransferEntropy 包来计算 JupyterLab 笔记本中的传输熵,但在这样做时遇到了问题。

我将 Anaconda 与 Python 3.7 一起使用,并将 RStudio 安装为我的环境之一。 在 RStudio 中,我成功实现了 RTransferEntropy 包中的一个示例:

 install.packages('RTransferEntropy')
 library(RTransferEntropy)
 set.seed(12345)
 n <- 2500
 x <- rep(0, n + 1)
 y <- rep(0, n + 1)

 for (i in 2:(n + 1)) {
    x[i] <- 0.2 * x[i - 1] + rnorm(1, 0, 2)
   y[i] <- x[i - 1] + rnorm(1, 0, 2)}

 x <- x[-1]
 y <- y[-1]

 library(future)
 plan(multiprocess)
 set.seed(12345)
 shannon_te <- transfer_entropy(x, y)

 shannon_te 

一切正常,我能够获得文档中显示的正确结果。

现在我想使用 rpy2。 这是我在 Jupyter 笔记本中输入的内容:

 from rpy2.robjects.packages import importr
 base = importr('base')
 utils = importr('utils')
 te=rpackages.importr('RTransferEntropy')

我试过只导入前两个 R 包,并且没有任何困难。 但是,在尝试导入 RTransferEntropy 时,我收到一条冗长的错误消息,最后几行如下:

 RRuntimeError: Error in loadNamespace(name) : 
 there is no package called ‘RTransferEntropy’
 Calls: <Anonymous> ... tryCatch -> tryCatchList -> tryCatchOne -> 
 <Anonymous>

我不确定是什么导致了错误。 可能是因为 RTransferEntropy 不在正确的目录中?

此外,我确实意识到存在可在 Python 中直接使用的传递熵计算方法,例如 NPEET 和 JIDT。 但是,我未能成功启动和运行它们。

谢谢你。 根据您的见解,我发现这有效:

在 R 中: .libPaths()

生成的路径名(只有一个)在 Jupyter notebook 中用于正确定位包:

from rpy2.robjects.packages import importr

importr('RTransferEntropy', lib_loc="pathname")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM