Constants and ARIMA models in R
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
This post is from my new book Forecasting: principles and practice, available freely online at OTexts.com/fpp/.
A non-seasonal ARIMA model can be written as
(1) 
(2) 
where
is the backshift operator,
and
is the mean of
. R uses the parametrization of equation (2).
Thus, the inclusion of a constant in a non-stationary ARIMA model is equivalent to inducing a polynomial trend of order
in the forecast function. (If the constant is omitted, the forecast function includes a polynomial trend of order
.) When
, we have the special case that
is the mean of
.
Including constants in ARIMA models using R
arima()
By default, the arima() command in R sets
when
0″ title=”Rendered by QuickLaTeX.com” style=”vertical-align: 0px;”/> and provides an estimate of
when
. The parameter
is called the “intercept” in the R output. It will be close to the sample mean of the time series, but usually not identical to it as the sample mean is not the maximum likelihood estimate when
0″ title=”Rendered by QuickLaTeX.com” style=”vertical-align: -4px;”/>.
The arima() command has an argument include.mean which only has an effect when
and is TRUE by default. Setting include.mean=FALSE will force
.
Arima()
The Arima() command from the forecast package provides more flexibility on the inclusion of a constant. It has an argument include.mean which has identical functionality to the corresponding argument for arima(). It also has an argument include.drift which allows
when
. For
1″ title=”Rendered by QuickLaTeX.com” style=”vertical-align: -1px;”/>, no constant is allowed as a quadratic or higher order trend is particularly dangerous when forecasting. The parameter
is called the “drift” in the R output when
.
There is also an argument include.constant which, if TRUE, will set include.mean=TRUE if
and include.drift=TRUE when
. If include.constant=FALSE, both include.mean and include.drift will be set to FALSE. If include.constant is used, the values of include.mean=TRUE and include.drift=TRUE are ignored.
When
and include.drift=TRUE, the fitted model from Arima() is
![Rendered by QuickLaTeX.com \[(1-\phi_1B - \cdots - \phi_p B^p) (y_t - a - bt) = (1 + \theta_1 B + \cdots + \theta_q B^q)e_t.\]](https://i0.wp.com/robjhyndman.com/researchtips/wp-content/ql-cache/quicklatex.com-006ea28bd7f36b8a2538dff8805dc8c4_l3.png?w=578)
In this case, the R output will label
as the “intercept” and
as the “drift” coefficient.
auto.arima()
The auto.arima() function automates the inclusion of a constant. By default, for
or
, a constant will be included if it improves the AIC value; for
1″ title=”Rendered by QuickLaTeX.com” style=”vertical-align: -1px;”/> the constant is always omitted. If allowdrift=FALSE is specified, then the constant is only allowed when
.
Eventual forecast functions
The eventual forecast function (EFF) is the limit of
as a function of the forecast horizon
as
.
The constant
has an important effect on the long-term forecasts obtained from these models.
- If
and
, the EFF will go to zero. - If
and
, the EFF will go to a non-zero constant determined by the last few observations. - If
and
, the EFF will follow a straight line with intercept and slope determined by the last few observations. - If
and
, the EFF will go to the mean of the data. - If
and
, the EFF will follow a straight line with slope equal to the mean of the differenced data. - If
and
, the EFF will follow a quadratic trend.
Seasonal ARIMA models
If a seasonal model is used, all of the above will hold with
replaced by
where
is the order of seasonal differencing and
is the order of non-seasonal differencing.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.