2012-04-03 4 views
0

との回帰直線をプロットするために、一つは回帰直線をプロットするために、次のコマンドを使用することができます。どのようにRでrpy2

res=lm(height~age) 
abline(res) 

http://msenux.redwoods.edu/math/R/regression.php私はrpy2と同じことを行うことができますどのように

によって示唆されるように?私は

from rpy2 import robjects 
r = robjects.r 
r.png('test.png') 
x = range(10) 
y = range(10) 
r.plot(x, y) 
r.abline(r.lm(x, y)) 

を試みたが、rpy2で訴えました:

Error in formula.default(object, env = baseenv()) : invalid formula 
Traceback (most recent call last): 
    File "plot_ratio_price.py", line 34, in <module> 
    r.abline(r.lm(x, y)) 
    File "/Library/Python/2.7/site-packages/rpy2/robjects/functions.py", line 82, in __call__ 
    return super(SignatureTranslatedFunction, self).__call__(*args, **kwargs) 
    File "/Library/Python/2.7/site-packages/rpy2/robjects/functions.py", line 34, in __call__ 
    res = super(Function, self).__call__(*new_args, **new_kwargs) 
rpy2.rinterface.RRuntimeError: Error in formula.default(object, env = baseenv()) : invalid formula 

任意のヒント?ありがとう!

+0

:ところで

は、あなたの問題のコードは、あなたがそれをテンプレートとして使用して検討するかもしれないrpy2例に十分近くに見えます式[r.lm]には、[ここ](http://rpy.sourceforge.net/rpy2/doc-2.2/html/robjects_formulae.html)で概説されていますか? – joran

答えて

2

@ joranのコメントに続いて、Rpy2では、数式に特別なオブジェクトを指定する必要があります。ドキュメントには、クラスrobjects.Formula represents an R formulaが記載されています。したがって、最後の行(r.ablineへの呼び出し)の前に、式オブジェクトを作成し、それをlm()呼び出しに渡す必要があります。エラーメッセージが多分あなたは合格している必要があり、あなたは無効な式を渡されたと言うので

import array 
from rpy2.robjects import IntVector, Formula 
from rpy2.robjects.packages import importr 
stats = importr('stats') 

x = IntVector(range(1, 10)) 
y = IntVector(range(1, 10)) 

fmla = Formula('y ~ x') 
env = fmla.environment 
env['x'] = x 
env['y'] = y 

fit = stats.lm(fmla) 
関連する問題