Kar*_*arl 7 statistics model r correlation
我有一个固定的时间序列,我想要拟合一个带有自回归项的线性模型来校正序列相关性,即使用公式At = c1*Bt + c2*Ct + ut,其中ut = r*ut-1 +等
(ut是AR(1)术语,用于纠正错误术语中的序列相关性)
有谁知道在R中使用什么来模拟这个?
谢谢卡尔
R中有多种方法可以执行此操作。这是两个示例,这些示例使用R随附的数据集包中的“安全带”时间序列数据集。
该arima()函数位于R附带的package:stats中。该函数采用以下形式的参数:order=c(p, d, q)您可以在其中指定自回归,积分和移动平均线成分的顺序。在您的问题中,建议您创建一个AR(1)模型来纠正错误中的一阶自相关,仅此而已。我们可以使用以下命令来做到这一点:
arima(Seatbelts[,"drivers"], order=c(1,0,0),
xreg=Seatbelts[,c("kms", "PetrolPrice", "law")])
Run Code Online (Sandbox Code Playgroud)
order的值指定我们需要一个AR(1)模型。xreg组件应该是我们要作为回归的一部分添加的一系列其他X。输出看起来有点像summary.lm()侧面打开的输出。
拟合回归模型的另一种方法可能是gls()在nlme软件包中使用。以下代码将Seatbelt时间序列对象转换为数据框,然后提取并添加一个新列(t),该列仅是已排序时间序列对象中的计数器:
Seatbelts.df <- data.frame(Seatbelts)
Seatbelts.df$t <- 1:(dim(Seatbelts.df)[1])
Run Code Online (Sandbox Code Playgroud)
上面的两行仅使数据成形。由于该arima()功能是为时间序列设计的,因此它可以更轻松地读取时间序列对象。要使用nlme拟合模型,请运行:
library(nlme)
m <- gls(drivers ~ kms + PetrolPrice + law,
data=Seatbelts.df,
correlation=corARMA(p=1, q=0, form=~t))
summary(m)
Run Code Online (Sandbox Code Playgroud)
以“相关”开头的行是将ARMA相关结构传递给GLS的方式。结果将不完全相同,因为默认情况下arima()使用最大似然估计模型并gls()使用受限的最大似然。如果添加method="ML"到呼叫中,gls()您将获得与上述ARIMA函数相同的估计。