与线性回归不同的 ARIMA(0,0,0) 误差回归

机器算法验证 r 回归 时间序列 有马 预测
2022-03-25 01:56:50

带有 ARIMA 误差的回归由以下公式给出(见于 Hyndman 等人,1998 年):

Yt=b0+b1X1,t++bkXk,t+Nt

在哪里Nt被建模为 ARIMA 过程。

如果我们有这个模型Nt是 ARIMA(0,0,0), 然后Nt=et, 和Yt由普通回归建模。

假设以下数据:

a <- structure(c(29305, 9900, 9802, 17743, 49300, 17700, 24100, 11000, 
10625, 23644, 38011, 16404, 14900, 16300, 18700, 11814, 13934, 
12124, 18097, 30026, 3600, 15700, 12300, 14600), .Tsp = c(2010.25, 
2012.16666666667, 12), class = "ts")
b <- structure(c(1.108528016, 1.136920872, 1.100239002, 1.057191265, 
1.044200511, 1.102063834, 1.083847756, 1.068585841, 1.084879628, 
1.232979511, 1.168894672, 1.257302058, 1.264967051, 1.234793782, 
1.306452369, 1.252644047, 1.178593218, 1.124432965, 1.132878661, 
1.189926986, 1.17249669, 1.176285957, 1.176552, 1.179178082), .Tsp = 
c(2010.25, 2012.16666666667, 12), class = "ts")

如果我使用auto.arima函数对其建模,我有:

auto.arima(a, xreg=b)
Series: a 
ARIMA(0,0,0) with zero mean     

Coefficients:
              b
      15639.266
s.e.   1773.186

sigma^2 estimated as 101878176:  log likelihood=-255.33
AIC=514.65   AICc=515.22   BIC=517.01

lm(a~b)

Call:
lm(formula = a ~ b)

Coefficients:
(Intercept)            b  
      48638       -26143  

模型的系数不同。他们不应该是一样的吗?我错过了什么?

1个回答

正如评论中指出的那样,模型之间的区别在于auto.arima()没有包含拦截。它使用 AICc 选择一个模型,可能包括常数。有一个协变量,模型是

yt=β0xt+nt
在哪里nt是一个 ARIMA 过程。请注意,截距转移到 ARIMA 过程。在本例中,为nt不包括常数。

如果你知道你想要什么型号,为什么要使用auto.arima()相反,您可以使用

arima(a,xreg=b)

这使

Series: a 
ARIMA(0,0,0) with non-zero mean 

Coefficients:
      intercept          b
       48638.40  -26143.23
s.e.   32410.27   27893.41

sigma^2 estimated as 93138232:  log likelihood=-254.25
AIC=514.5   AICc=515.7   BIC=518.03

这与使用 获得的模型相同lm(a~b)估计值是相同的,但标准误差是不同的,因为它们是用不同的方式估计的(从 hessian 矩阵的数值而不是使用(XX).)