1

我正在运行以下分析并尝试绘制模型的逆 logit:

R.plot(formula, data=data, ylab = 'P(outcome =  1 | outcome)', xlab = 'SURVRATE: Probability of Survival after 5 Years', xaxp = c(0, 95, 19))
a = R.coef(mod1)[0] 
b = R.coef(mod1)[1]
R.curve(invlogit(a + b*R.x)) 

invlogit是我通过 STAP 访问的 R 函数。

一切正常,但是当我运行该curve功能时,我收到一个错误TypeError: unsupported operand type(s) for *: 'float' and 'ListVector'...

我尝试了各种方法来处理这个问题,比如使用np.multiply其他方法,但都无济于事。python - 如何处理python中ListVector对标量的乘法?

4

2 回答 2

0

Kludgey 的解决方案是只使用rmagic命令。将我的所有 R 代码转换为 rpy2 等效项似乎是阻力最小的路径。

于 2016-10-02T15:30:56.093 回答
0

这里的关键是要理解“+”和“*”本质上是 R 函数,就像其他任何函数一样。这意味着我们也需要“导入”它们。您的示例不可重现,因此我将尽力绘制解决方案:

import rpy2.robjects as ro
from rpy2.robjects.vectors import FloatArray
add = ro.r['+']
multi = ro.r['*']
R.curve(invlogit(add(FloatArray([a]), multi(FloatArray([b]), R.x))))
于 2021-09-26T12:35:14.327 回答