我在python中使用rpy2模块来计算两个时间序列(ts1和ts2)之间的回归。残差是自相关的,所以我需要使用gls模型而不是lm。我应该能够将我的相关结构设置为corAR1(),如下面的代码所示。
import rpy2.robjects as robjects
from rpy2.robjects import FloatVector
from rpy2.robjects.packages import importr
nlme = importr('nlme')
y = FloatVector(ts1)
x = FloatVector(ts2)
fmla = robjects.Formula('y ~ x - 1')
env = fmla.environment
env['x'] = x
env['y'] = y
fit = nlme.gls(fmla, cor=corAR1(value=c(0.5)))
然而,我收到错误
*** NameError: name 'corAR1' is not defined
由于我不是R用户并且对rpy2不熟悉,我不确定这里发生了什么!任何想法都会非常感激。
干杯, 幸福
答案 0 :(得分:0)
调用importr('nlme')
时,返回的对象就像一个Python包/命名空间。
如果在corAR1()
包中定义nlme
,您应该告诉Python它在那里:
fit = nlme.gls(fmla, cor=nlme.corAR1(value=c(0.5)))