用R中的二次趋势预测AR模型

时间:2016-11-18 21:05:29

标签: r time-series

我已尝试将以下代码与预测包一起使用:

  

fit = Arima(data [,1],order = c(1,0,0),include.mean = TRUE,include.drift = TRUE)

然而,这仅包括均值和线性趋势。如何通过包含二次趋势项来预测?

1 个答案:

答案 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)

如果您尝试它,将出现一条警告消息,您将看到漂移项已消失且根本没有二次趋势。这是因为二次趋势在实践中不太可能发生,并且往往导致不正确的爆炸性预测。我会避免它们,除非你有足够的领域知识让你相信它们是合适的。