R中具有自相关误差的简单线性模型


19

如何在R中具有自相关误差的线性模型拟合?在stata中,我将使用prais命令,但找不到R等效项...

Answers:


23

看一下nlmegls软件包中的(广义最小二乘)

您可以为回归中的错误设置相关配置文件,例如ARMA等:

 gls(Y ~ X, correlation=corARMA(p=1,q=1))

对于ARMA(1,1)错误。


1
我可以在新数据集中使用“预测”功能,并保留相同的错误结构吗?gls命令如何知道观测的顺序?
Zach

27

除了中的gls()功能外nlme,您还可以使用MLE来使用软件包中的arima()功能stats。这是两个功能的示例。

x <- 1:100
e <- 25*arima.sim(model=list(ar=0.3),n=100)
y <- 1 + 2*x + e

###Fit the model using gls()
require(nlme)
(fit1 <- gls(y~x, corr=corAR1(0.5,form=~1)))
Generalized least squares fit by REML
  Model: y ~ x 
  Data: NULL 
  Log-restricted-likelihood: -443.6371

Coefficients:
(Intercept)           x 
   4.379304    1.957357 

Correlation Structure: AR(1)
 Formula: ~1 
 Parameter estimate(s):
      Phi 
0.3637263 
Degrees of freedom: 100 total; 98 residual
Residual standard error: 22.32908 

###Fit the model using arima()
(fit2 <- arima(y, xreg=x, order=c(1,0,0)))

Call:
arima(x = y, order = c(1, 0, 0), xreg = x)

Coefficients:
         ar1  intercept       x
      0.3352     4.5052  1.9548
s.e.  0.0960     6.1743  0.1060

sigma^2 estimated as 423.7:  log likelihood = -444.4,  aic = 896.81 

arima()函数的优点是您可以适应更多种类的ARMA错误过程。如果使用预测包中的auto.arima()函数,则可以自动识别ARMA错误:

require(forecast)    
fit3 <- auto.arima(y, xreg=x)

1
“ corr = corAR1(0.5,form =〜1)”中的0.5是什么?
Zach

1
它为优化提供了一个起始值。如果省略它几乎没有区别。
罗伯·海德曼

1
+1该arima选项prais乍一看看上去与Stata的区别更大,但它更灵活,您还可以tsdiag用来很好地了解AR(1)假设的实际适用性。
韦恩

1
如果仅对常数进行y回归,如何使用arima()?
user43790 2015年

7

使用软件包nlme中的gls函数。这是例子。

##Generate data frame with regressor and AR(1) error. The error term is 
## \eps_t=0.3*\eps_{t-1}+v_t
df <- data.frame(x1=rnorm(100), err=filter(rnorm(100)/5,filter=0.3,method="recursive"))

##Create ther response
df$y <- 1 + 2*df$x + df$err

###Fit the model
gls(y~x, data=df, corr=corAR1(0.5,form=~1))

Generalized least squares fit by REML
  Model: y ~ x 
  Data: df 
  Log-restricted-likelihood: 9.986475

 Coefficients:
 (Intercept)           x 
   1.040129    2.001884 

 Correlation Structure: AR(1)
 Formula: ~1 
 Parameter estimate(s):
     Phi 
 0.2686271 
Degrees of freedom: 100 total; 98 residual
Residual standard error: 0.2172698 

由于使用最大似然拟合模型,因此您需要提供初始值。默认起始值​​为0,但一如既往,最好尝试多个值以确保收敛。

正如G博士所指出的,您还可以使用其他关联结构,即ARMA。

请注意,如果回归误差的协方差矩阵不是单位矩阵的倍数,则通常,最小二乘估计值是一致的,因此,如果您使用特定协方差结构拟合模型,则首先需要测试它是否合适。


“ corr = corAR1(0.5,form =〜1)”中的0.5是什么?
Zach

3

您可以在gls输出上使用预测。请参阅?predict.gls。您也可以通过相关结构中的“形式”项指定观察顺序。例如:
corr=corAR1(form=~1)指示数据的顺序就是表中的顺序。 corr=corAR1(form=~Year)最后,corr=corAR1(0.5,form=~1)?通常将in的“ 0.5”值设置为估计的代表方差结构的参数的值(对于AR,为phi;对于MA,为theta。)。 )。如Rob Hyndman所述,可以选择将其设置并用于优化。


尽管正确(gls()与Arima()),但预测值或拟合值将大不相同?由于gls仅会使用固定效果,而Arima会将Arima错误包括在拟合值中。
B_Miner
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.