我已尝试将以下代码与预测包一起使用:
fit = Arima(data [,1],order = c(1,0,0),include.mean = TRUE,include.drift = TRUE)
然而,这仅包括均值和线性趋势。如何通过包含二次趋势项来预测?
答案 0 :(得分:1)
您可以使用xreg
参数包含任意回归量,包括任何确定性多项式趋势。有关模拟数据的示例,请参阅下面的代码:
library(forecast)
# Simulate some fake data with a quadratic trend
set.seed(123)
t <- 1:100
y <- (t^2)/500 + arima.sim(model = list(ar=0.5),n = length(t))
# Create regressor matrix and fit model
regressors <- cbind(trend=t,quad=t^2)
mod <- Arima(y, order = c(1,0,0),xreg = regressors,include.constant = TRUE)
summary(mod)
# Will print:
# Series: y
# ARIMA(1,0,0) with non-zero mean
#
# Coefficients:
# ar1 intercept trend quad
# 0.4960 -0.1021 0.0112 0.0019
# s.e. 0.0864 0.5177 0.0237 0.0002
#
# sigma^2 estimated as 0.83: log likelihood=-130.68
# AIC=271.36 AICc=272 BIC=284.38
注意:另一种方法是通过两次差分数据并包含一个常数项来创建二次趋势,如下所示:
mod <- Arima(y, order = c(1,2,0), include.drift = TRUE)
如果您尝试它,将出现一条警告消息,您将看到漂移项已消失且根本没有二次趋势。这是因为二次趋势在实践中不太可能发生,并且往往导致不正确的爆炸性预测。我会避免它们,除非你有足够的领域知识让你相信它们是合适的。