我有一个固定的时间序列,我想用一个线性模型拟合一个自回归项来校正序列相关性,即使用公式At = c1 * Bt + c2 * Ct + ut,其中ut = r * ut -1 + et
(ut是AR(1)术语,用于纠正错误术语中的序列相关性)
有人知道在R中使用什么来建模吗?
由于 卡尔
答案 0 :(得分:9)
GLMMarp包适合这些模型。如果您只想要一个具有高斯误差的线性模型,可以使用arima()
函数来执行此操作,其中通过xreg
参数指定协变量。
答案 1 :(得分:4)
在R中有几种方法可以使用R附带的"Seatbelts" time series dataset in the datasets package。
arima()
函数包含在:R中包含的统计信息。该函数采用order=c(p, d, q)
形式的参数,您可以在其中指定自动回归,积分和移动平均线成分。在您的问题中,您建议您要创建一个AR(1)模型来纠正错误中的一阶自相关,就是这样。我们可以使用以下命令执行此操作:
arima(Seatbelts[,"drivers"], order=c(1,0,0),
xreg=Seatbelts[,c("kms", "PetrolPrice", "law")])
订单的值指定我们需要AR(1)模型。 xreg组件应该是我们想要作为回归的一部分添加的一系列其他X.输出看起来有点像summary.lm()
的输出。{/ p>
另一个替代流程可能比您更适合回归模型,以便在nlme package中使用gls()
。以下代码将Seatbelt时间序列对象转换为数据框,然后提取并添加一个新列( t ),它只是已排序时间序列对象中的计数器:
Seatbelts.df <- data.frame(Seatbelts)
Seatbelts.df$t <- 1:(dim(Seatbelts.df)[1])
上面两行只是获取数据的形状。由于arima()
函数是为时间序列设计的,因此它可以更轻松地读取时间序列对象。要使用nlme拟合模型,您将运行:
library(nlme)
m <- gls(drivers ~ kms + PetrolPrice + law,
data=Seatbelts.df,
correlation=corARMA(p=1, q=0, form=~t))
summary(m)
以“关联”开头的行是您将ARMA关联结构传递给GLS的方式。结果将不完全相同,因为arima()
使用最大似然估计模型,gls()
默认使用受限制的最大似然。如果您在method="ML"
的通话中添加gls()
,您将获得与上述ARIMA功能相同的估算值。
答案 2 :(得分:2)
你的链接功能是什么?
您描述它的方式听起来像是具有自相关错误的基本线性回归。在这种情况下,一种选择是使用lm
来获得系数的一致估计并使用Newey-West HAC standard errors。
我不太确定GLM的最佳答案。