【问题标题】:Straight line through time series with atocorrelated residuals (auto.arima in forecast package)具有自相关残差的时间序列的直线(预测包中的 auto.arima)
【发布时间】:2019-02-19 18:18:53
【问题描述】:

我有一个带有自相关残差的时间序列。因此,我的想法是使用 R 中的预测包中的 auto.arima() 函数来找到截距和斜率。

不幸的是,auto.arima() 函数的输出导致拟合线明显不正确。斜率很可能是正确的,但截距太低了。

我正在使用的 r 代码:

require(forecast)
y <- as.numeric(readClipboard())
x <- 1:length(y)
arimareg <- auto.arima(y, xreg=x, max.p=5, max.q=10, max.order = 12, stepwise=FALSE,  approximation=FALSE, seasonal=FALSE)
intercept <- unname(arimareg$coef[length(arimareg$coef)-1])
slope <- unname(arimareg$coef[length(arimareg$coef)])

结果: 截取:0.474869856067 斜率:0.00539552660742

我复制到剪贴板的时间序列如下所示:

1.0000
0.9999
0.9993
1.0299
1.0267
1.0305
1.1427
1.1339
1.1323
1.2051
1.2091
1.2087
1.3343
1.3381
1.3361
1.3848
1.3853
1.3865
1.4207
1.4378
1.4394
1.4546
1.4506
1.4518
1.4495
1.4458
1.4461
1.4468
1.4461
1.4470
1.4645
1.4621
1.4592
1.4833
1.4773
1.4738
1.5398
1.5284
1.5302
1.5562
1.5541
1.5501
1.5740
1.5703
1.5715
1.5893
1.5874
1.5867
1.6213
1.6211
1.6175
1.6206
1.6131
1.6038
1.6034
1.6041
1.6015
1.6009
1.5940
1.5865
1.5877
1.5890
1.5885
1.6111
1.6100
1.6065
1.6241
1.6263
1.6250
1.6490
1.6565
1.6560
1.6911
1.6864
1.6837
1.7143
1.7103
1.7102
1.7298
1.7253
1.7341
1.7567
1.7512
1.7455
1.7338
1.7329
1.7276
1.7022
1.6975
1.6928
1.6454
1.6361
1.6293
1.5601
1.5591
1.5508
1.4704
1.4650
1.4655
1.4439
1.4464
1.4486
1.4669
1.4810
1.4872
1.5151
1.5191
1.5223
1.5384
1.5417
1.5449
1.5650
1.5714
1.5741

我确信我在做一些愚蠢的事情,但不幸的是我不知道是什么。

任何帮助将不胜感激!

编辑:我明白现在出了什么问题。如果我的观察值少于 ~160,那么输出中将没有截距。这意味着我存储为截距的值实际上是最后一个 MA() 滞后系数。

上面的代码应该调整自:

intercept <- unname(arimareg$coef[length(arimareg$coef)-1])

收件人:

intercept <- unname(arimareg$coef['intercept'])

问题仍然存在;为什么观察的数量很少时输出中没有截距。

【问题讨论】:

  • 为什么不只拟合线性回归?
  • @DmytroFedoriuk 我在许多时间序列中使用该函数,自相关残差越来越严重。所以我需要把它做好,即使在这种特殊情况下这可能有点过头了。

标签: r arima


【解决方案1】:

根据forecastdevelopersauto.arima() 旨在自动包含在常量上:

默认情况下,对于 d=0 或 d=1,如果提高 AIC 值,将包含一个常数;对于 d>1,常数总是被省略。

因此,您的模型似乎没有intercept 术语,这很正常。

如果您想检查模型是否适用于提供的数据,您可以使用fitted() functon:

plot(x = x, y = fitted(arimareg), col = "blue", type = "l", lwd = 3, 
    panel.first = grid(col = "black"))
points(x = x, y = y, bg = "red", col = "darkred", pch = 21)

这给了

它回答了你的问题吗?

【讨论】:

  • 非常感谢@Ekatef,它很好地回答了我提出的问题。不幸的是,我无法(从直观的角度)理解在这种情况下常量如何不能改进模型规范。如果我需要拟合具有截距和斜率的趋势线,但由于残差中的自相关而不能使用正态 OLS,是否有明显的替代方案?
猜你喜欢
  • 2013-09-10
  • 1970-01-01
  • 1970-01-01
  • 2016-07-03
  • 1970-01-01
  • 2020-10-22
  • 2017-05-29
  • 1970-01-01
  • 2018-07-23
相关资源
最近更新 更多