[英]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.