In the previous article, all possibilities for performing **Autoregressive Integrated Moving Average (ARIMA) **modeling for the time series GDP were identified as under.

S. No |
ARIMA |

1 | (1,1,1) |

2 | (1,1,2) |

3 | (1,1,3) |

4 | (1,1,4) |

5 | (1,1,5) |

6 | (1,1,6) |

7 | (1,2,1) |

8 | (4,2,1) |

9 | (9,2,1) |

* *Table 1: **ARIMA** models as per ACF and PACF graphs.

## Testing ARIMA models in STATA for time series analysis

The present article tests all these **ARIMA** models and identifies the appropriate one for the process of forecasting time series GDP. To start with testing **ARIMA** models in STATA:

- Click on ‘Statistics’ in ribbon
- Click on ‘time series’
- Select ‘
**ARIMA**and ARMAX models’ (Figure 1 below)

## Test 1: ARIMA (1,1,1)

A dialogue box will appear as shown in the figure below. Here fill four important options to carry out **ARIMA** testing. First select the time series variable fitting **ARIMA** model. In the present case, the time series variable is GDP. Therefore select ‘gdp’ in the ‘Dependent variable’ option. Second, record the **ARIMA** model specifications estimated in previous article. Therefore for the first **ARIMA** model, (1, 1, 1) (Table 1 above), select ‘1’ in ‘Autoregressive order (p)’, ‘1’ in ‘Integrated order (d)’, and ‘1’ in ‘Moving-average order (q)’.

After selecting the values for **ARIMA** model specifications, click on ‘Ok’ to proceed for results (Figure 3 below).

Now ARIMA (1, 1, 1) results will appear, as the figure below shows.

**ARIMA** results can be analysed through several components.

**Log likelihood: **The log likelihood component of **ARIMA** model should be high, like in the present case. The value of log likelihood (ignoring negative sign) is 554. This is sufficiently high. Compare log likelihood value of different **ARIMA** models and select the one which has the highest.

**Coefficient of AR:** The coefficient of

**should be less than 1 and at least 5% level of significance. Here, the coefficient of**

*AR***is significant at 5% (0.000) but is close to 1 (0.98967). This suggests that differenced time series GDP may still be non-stationary. Therefore, compare different**

*AR***ARIMA**models based on the coefficients of

**and**

*AR***, their value (if close to zero) and their significance.**

__MA__**AIC/BIC: **The value of ‘AIC’ and ‘BIC’ should be lowest in comparison to other **ARIMA** models. The value of AIC/BIC is usually the reverse of log likelihood function. Therefore instead of log likelihood, compare different **ARIMA** models based on the value of AIC/BIC. The **ARIMA** model with lowest AIC/BIC value will be more appropriate for forecasting.

Similarly, to compare the applicability of ARIMA (1,1,1) calculate next ARIMA model (1,1,2) to compare these two models.

### Test 2: ARIMA (1,1,2)

Again filled the values in **ARIMA** specifications as per (1, 1, 2). After selecting the values for **ARIMA** model specifications, click on ‘OK’ to proceed for results (Figure 5).

The figure below shows the results for ARIMA (1,1,2).

** **

**ARIMA** results as presented in above Figure 6 can be analysed through several components, as below:

**Log likelihood: **the value of log likelihood (ignoring negative sign) is 552 which is similar to previous **ARIMA** model (1, 1, 1).

**Coefficient of AR:** The coefficient of

**and**

*AR***are significant but coefficient of**

__MA__**is insignificant at 5%. This suggests that differenced time series GDP may still be non-stationary. Therefore, similar to previous model, ARIMA (1,1,2) also is not appropriate for forecasting.**

*AR***AIC/BIC: **The value of AIC and BIC is less than previous model but only up to 1 point. Therefore, no significant difference between ARIMA (1,1,1) and (1,1,2) can be seen. Thus both are inappropriate for forecasting time series GDP.

Test the remaining **ARIMA** models with different specifications following same procedures (Figures 1, 2 and 3). Then click on ‘OK’ for results.

**Comparison of all ARIMA Models**

This section presents a comparison of all **ARIMA** forecasting models mentioned in Table 1. Values of AR and MA coefficients, their significance and values of AIC and BIC are evaluated.

As mentioned previously, the variables of interest in appropriate **ARIMA** modeling are ** AR** and

**component, AIC/BIC values and significance level. The Table 2 above has been organized as per these variables. Significance level of coefficients is indicated with sign “*”.**

__MA__To select the best **ARIMA** model, first identify those models which have ** AR** and

**coefficients as significant as well as lesser than 1. In the table above all the ARIMA models either have**

__MA__**or**

*AR***coefficients close to 0 (indicating non-stationarity) or are insignificant at 5%. However, in case of**

__MA__**ARIMA**model (9, 2, 1), majority of

**and**

*AR***coefficients are lesser than 1 and significant at 5%. Therefore, in terms of coefficient selection, ARIMA model (9, 2, 1) is appropriate.**

__MA__Second, identify those **ARIMA** models with minimum value of AIC or BIC. As per the table 2, ARIMA model (1, 2, 1) and ARIMA model (9, 2, 1) are the only ones with lowest AIC/BIC values. However, in ARIMA model (1, 2, 1), the coefficient of ** MA** is almost 1, with insignificance greater than 5%. Therefore, this model cannot be treated for estimating the time series GDP. Therefore, ARIMA (9, 2, 1) is the most appropriate one to estimate the GDP time series.

Thus, ARIMA model (9, 2, 1) is the perfect model exhibiting all the structural trends in GDP data and can be useful for forecasting GDP. The following article explains prediction and forecasting using **ARIMA** in STATA.

Building univariate ARIMA model for time series analysis in STATA | How to predict and forecast using ARIMA in STATA? |

### Priya Chetty

#### Latest posts by Priya Chetty (see all)

- Interview & survey method to understand the factors affecting online shopping behaviour - October 10, 2019
- Order fulfilment strategies in supply chain management - October 9, 2019
- A conceptual framework for factors affecting online shopping behaviour of generation Z and millennials - October 7, 2019

All the discussions you have posted on time series analysis in STATA are excellent, brief and applicable. Thank You Very Much.

Dear Dejan,

Greetings! Thanks for the compliment! We are happy to help 🙂

Hello,

Thank you for this information. I have found the ARIMA model for the time series I will be analyzing. I am not sure, however, how to perform the interrupted time series analysis in stata using these ARIMA models. I am not sure what commands I would use to perform this analysis in STATA with the ARIMA models.

Thank you.

Dear Colleen,

Thanks for sharing your concern!

For interrupted time series analysis (ITSA), it’s better to use OLS over ARIMA, as the former is more flexible and broadly applicable in an interrupted time-series context.

The syntax (code) to use for itsa is:

itsa depvar [indepvars] [if] [in] [weight], trperiod(numlist) [ single treatid(#) contid(numlist) prais lag(#) figure posttrend replace prefix(string) model_options ]

Note, this code is data specific but I have presented the full form of the common codes below:

trperiod(numlist) specifies the time period when the intervention begins. The values entered for time period must be in the same units as the panel time variable specified in tsset timevar; see [TS] tsset. More than one period may be specified.

trperiod() is required.

single indicates that itsa will be used for a single group analysis. Conversely, omitting single indicates that itsa is for a multiple group comparison.

treatid(#) specifies the identifier of the single treated unit under study when the dataset contains multiple panels. The value entered must be in the same units as the panel variable specified in tsset panelvar timevar; see [TS] tsset. When the dataset contains data for only a single panel, treatid() must be omitted.

contid(numlist) specifies a list of identifiers to be used as control units in the multiple group analysis. The values entered must be in the same units as the panel variable specified in tsset panelvar timevar; see [TS] tsset. If contid() is not specified, all non-treated units in the data will be used as controls.

prais specifies that a prais model should be estimated. If prais is not specified, itsa will use newey as the default model.

lag(#) specifies the maximum lag to be considered in the autocorrelation structure when a newey model is chosen. If the user specifies lag(0), the output is the same as regress, vce(robust); Default is lag(0). An error message will appear if both prais and lag() are specified, as prais implements an AR(1) model, by design.

figure produces a line plot of the predicted depvar variable combined with a scatter plot of the actual values of depvar over time. In a multiple group analysis, figure plots the average values of all controls used in the analysis (more specifically, data for specified controls are collapsed and the monthly observations averaged).

posttrend produces post-treatment trend estimates using lincom, for the specified model. In the case of a single-group ITSA, one estimate is produced. In the case of a multiple-group ITSA, an estimate is produced for the treatment group, the control

group, and the difference. In the case of multiple treatment periods, a separate table is produced for each treatment period.

replace replaces variables created by itsa if they already exist. If prefix() is specified, only variables created by itsa with the same prefix will be replaced.

prefix(string) adds a prefix to the names of variables created by itsa. Short prefixes are recommended.

model_options specifies all available options for prais when the prais option is chosen; otherwise all available options of newey other than lag().

Hope the above notes help. Do let us know!

This is super helpful!

One question I have is in extracting the data from Stata in my do file?

I can find the value of, eg. AR(1) in the returned e(b), but can’t find the standard error or confidence interval in any of the returned lists (although they’re displayed on the screen I’d like to store the values in a local macro).

Is there a way to do this?

Thanks!

Hello Simon,

Thanks that you found the article helpful. I would like to share that you can also use commands for ARIMA modeling in STATA instead of using menus from drop down lists as shown in this article. That way you will be able to store all your commands in a do file and just run the commands next time to get all the results. The command you can use for ARIMA modeling is “arima depvar, arima (orders separated by commas)”. For example, in this case, the command will be “arima GDP, arima (9,2,1)” to get the results for ARIMA (9,2,1) model.

Coming to your query, if you use e(b) command, it will return just the coefficient values as you pointed out because e(b) is used to produce a matrix of coefficients. That’s why it does not return the standard errors or the confidence intervals. So, instead of using e(b), you can use either of these methods to store your results in a text file or a word file.

First, run the arima model. Then use these commands, “translate @Results (name of the text file).txt” followed by “type (name of the text file).txt”. It will save all the results displayed in the results window in the designated text file.

Alternatively, first run the arima model. Then use “outreg2” command to export the output to a word file. This will return the standard errors within parentheses below the coefficient values. To use it, first you need to install the command by writing “ssc install outreg2” in the command window. Then use the command “outreg2 (name of the word file).doc” to export the output.

Or you can just highlight the results (including std errors and confidence intervals) you need to store, copy them and paste them in an excel file, create a table and then export them to a word file.

Hope this helps. Let us know.

hello ,

The above part is very helpful.Please do let me know how to perform ARIMAX in Stata and how to do the prediction part in ARIMAX and how many X variables can be used in ARIMAX ?