【问题标题】:Call R library DirichletReg from Python using rpy2使用 rpy2 从 Python 调用 R 库 DirichletReg
【发布时间】:2017-07-24 19:37:41
【问题描述】:
我正在尝试使用 Python 进行 Dirichlet 回归。不幸的是,我找不到可以完成这项工作的 Python 包。所以我尝试使用rpy2 调用R 库DirichletReg。但是,对我来说如何调用回归函数(例如DirichReg(Y ~ X1 + X2 + X3, data=predictorData) where Y = DR_data(compositionalData))并不是很直观。我在rpy2的文档中看到了一个调用线性回归函数lm的例子。但我的情况略有不同,因为 Y 不是表中的列名,而是 R 对象 DR_data。
我想知道执行此操作的正确方法是什么,或者是否有用于 Dirichlet 回归的 Python 包。
【问题讨论】:
标签:
python
r
rpy2
dirichlet
【解决方案1】:
您可以从 python 将对象发送到“公式”环境。此示例来自 rpy2 文档:
import array
from rpy2.robjects import IntVector, Formula
from rpy2.robjects.packages import importr
stats = importr('stats')
x = IntVector(range(1, 11))
y = x.ro + stats.rnorm(10, sd=0.2)
fmla = Formula('y ~ x')
env = fmla.environment
env['x'] = x
env['y'] = y
fit = stats.lm(fmla)
您还可以在 R 环境中(在公式之外)创建命名变量。见here。最坏的情况是,您通过 rpy2 将一些 python 数据移动到 R 中,然后通过 rpy2 桥直接在 R 中发出命令,如here 所述。