1

次の分析を実行して、モデルの逆ロジットをプロットしようとしています。

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)) 

invlogitSTAP経由でアクセスしているR関数です。

すべてがうまく機能しますが、curve関数を実行するとエラーが発生しTypeError: unsupported operand type(s) for *: 'float' and 'ListVector'ます...

これを処理するさまざまな方法を試しましたnp.multiplyが、とりわけ使用するなど、すべて役に立ちませんでした。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 に答える