0

我在 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 很陌生,所以我不确定这里发生了什么!任何想法将不胜感激。

干杯,费利西蒂

4

1 回答 1

0

调用时importr('nlme'),返回的对象就像一个 Python 包/命名空间。如果corAR1()nlme包中定义,你应该告诉 Python 它在那里:

fit = nlme.gls(fmla, cor=nlme.corAR1(value=c(0.5)))  
于 2013-06-27T08:34:04.830 回答