在 ts 的移动平均上使用 'residuals' 时出错

Error using 'residuals' on moving average for ts

我一直致力于使用 ts 对象进行预测。为了测试移动平均线的准确性,我使用了以下代码:

fixt_ma <- ma(fixtures_training, 3)
residuals(fixt_ma)
acc_fixt_ma <- accuracy(fixt_ma, fixtures_test)

输入 fixtures_training

structure(c(161L, 338L, 393L, 405L, 439L, 386L, 442L, 406L, 413L, 
421L), .Tsp = c(2019.48076923077, 2019.65384615385, 52), class = "ts")

当我使用 residuals(fixt_ma) 函数时,或者当我编写像 residuals$fixt_ma[ 这样的代码时=26=],我得到以下错误:

Error: $ operator is invalid for atomic vectors

有谁知道我该如何解决这个问题?

forecast::ma 进行移动平均平滑。它不是模型,因此没有残差。

也许您想要一个 MA(3) 模型,在这种情况下您可以使用

fixt_ma <- Arima(fixtures_training, order=c(0,0,3))

然后 residuals() 将起作用:

residuals(fixt_ma)
#> Time Series:
#> Start = c(2019, 26) 
#> End = c(2019, 35) 
#> Frequency = 52 
#>  [1] -79.553356  99.757891 -16.836345  -8.949918  42.906861   4.752855
#>  [7]  39.762007 -29.453682  47.281713  11.804971

但是 accuracy() 使用您问题中的代码会出错。如果你想在测试集上进行预测准确性测量,你首先必须生成预测:

fc_ma <- forecast(fixt_ma, h=length(fixtures_test))
acc_fixt_ma <- accuracy(fc_ma, fixtures_test)