我试图在R中拟合线性时间序列模型。我的第一种方法是使用lm:
> m1 = lm(logp~logg, data = data)
> summary(m1)
Call:
lm(formula = logp ~ logg, data = data)
Residuals:
Min 1Q Median 3Q Max
-0.56209 -0.21766 -0.02728 0.20243 0.82112
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.14218 0.59651 3.591 0.000556 ***
logg -0.57819 0.04931 -11.725 < 2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.2921 on 83 degrees of freedom
Multiple R-squared: 0.6236, Adjusted R-squared: 0.619
F-statistic: 137.5 on 1 and 83 DF, p-value: < 2.2e-16
然而,我意识到残差是自相关的,我想补偿它。所以我用gls代替:
> m2 = gls(logp~logg, data = data, correlation=corAR1(form=~1))
> summary(m2)
Generalized least squares fit by REML
Model: logp ~ logg
Data: data
AIC BIC logLik
-83.1498 -73.47444 45.5749
Correlation Structure: AR(1)
Formula: ~1
Parameter estimate(s):
Phi
0.9313839
Coefficients:
Value Std.Error t-value p-value
(Intercept) 4.82358 1.1435778 4.217972 1e-04
logg -0.35891 0.0925918 -3.876257 2e-04
Correlation:
(Intr)
logg 0.986
Standardized residuals:
Min Q1 Med Q3 Max
-1.5206442 -0.7602385 -0.2905489 0.6310135 2.7341294
Residual standard error: 0.3788309
Degrees of freedom: 85 total; 83 residual
我的理解是参数估计值仍应相同,但t统计量应该不同,如here所示。但是,我得到了非常不同的参数估计值。这是为什么?我做错了什么,还是我误解了统计数据?
当我使用m1$fitted.values
和m2$fitted
比较拟合值时,它们完全相同。这让我相信gls的参数估计应该以不同于lm的方式解释,但是如何?
答案 0 :(得分:3)
看起来AR(1)已经吞噬了一些趋势 - 参数phi
非常大。基本上,GLS模型具有对应于AR(1)部分的额外模型。因此你有
回归 + AR(1) + $ \ epsilon $
将回归和 AR(1)结合起来,使lm()
拟合中的回归具有相同的拟合值,但拟合只是分解不同,解释也不同。
GLS 估计上面输出中参数$ \ phi $(phi
)的值,这就是系数的其他估计值发生变化的原因。相反,您可以通过corAR1(value = myphi)
指定$ \ phi $的值,其中myphi
是$ \ phi $的输入值。一种选择可能是拟合lm()
模型,然后根据该模型的残差估计$ \ phi $,然后将$ \ phi $ anbd插件的估计值带入GLS模型并拟合。这样,您最终会得到一个GLS模型,其中包括自相关,因此标准错误等会在summary()
输出中将其考虑在内。
所有这一切,如此庞大的AR(1)很可能表明某些事情是错误的,或者这不是正确的模型。我一定会检查模型适合等。