[英]How to plot regression line with rpy2
在R中,可以使用以下命令繪制回歸線:
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
任何提示? 謝謝!
繼續@joran的評論之后,Rpy2要求你為公式提供一個特殊的對象。 文檔說robjects.Formula
類代表一個R公式 。 因此,在您的最后一行(對r.abline
的調用)之前,您需要創建一個Formula對象並將其傳遞給您的lm()
調用。
順便說一句,您的問題代碼看起來足夠接近您可能考慮將其用作模板的rpy2
示例:
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.