Autoregressive Moving Average (ARMA): Artificial data
In [1]:
1 2 3 4 5 6 | <span class = "kn" > from < / span> <span class = "nn" >__future__< / span> <span class = "kn" > import < / span> <span class = "n" >print_function< / span> <span class = "kn" > import < / span> <span class = "nn" >numpy< / span> <span class = "kn" >as< / span> <span class = "nn" >np< / span> <span class = "kn" > import < / span> <span class = "nn" >statsmodels.api< / span> <span class = "kn" >as< / span> <span class = "nn" >sm< / span> <span class = "kn" > import < / span> <span class = "nn" >pandas< / span> <span class = "kn" >as< / span> <span class = "nn" >pd< / span> <span class = "kn" > from < / span> <span class = "nn" >statsmodels.tsa.arima_process< / span> <span class = "kn" > import < / span> <span class = "n" >arma_generate_sample< / span> <span class = "n" >np< / span><span class = "o" >.< / span><span class = "n" >random< / span><span class = "o" >.< / span><span class = "n" >seed< / span><span class = "p" >(< / span><span class = "mi" > 12345 < / span><span class = "p" >)< / span> |
Generate some data from an ARMA process:
In [2]:
1 2 | <span class = "n" >arparams< / span> <span class = "o" > = < / span> <span class = "n" >np< / span><span class = "o" >.< / span><span class = "n" >array< / span><span class = "p" >([< / span><span class = "o" >.< / span><span class = "mi" > 75 < / span><span class = "p" >,< / span> <span class = "o" > - .< / span><span class = "mi" > 25 < / span><span class = "p" >])< / span> <span class = "n" >maparams< / span> <span class = "o" > = < / span> <span class = "n" >np< / span><span class = "o" >.< / span><span class = "n" >array< / span><span class = "p" >([< / span><span class = "o" >.< / span><span class = "mi" > 65 < / span><span class = "p" >,< / span> <span class = "o" >.< / span><span class = "mi" > 35 < / span><span class = "p" >])< / span> |
The conventions of the arma_generate function require that we specify a 1 for the zero-lag of the AR and MA parameters and that the AR parameters be negated.
In [3]:
1 2 3 4 | <span class = "n" >arparams< / span> <span class = "o" > = < / span> <span class = "n" >np< / span><span class = "o" >.< / span><span class = "n" >r_< / span><span class = "p" >[< / span><span class = "mi" > 1 < / span><span class = "p" >,< / span> <span class = "o" > - < / span><span class = "n" >arparams< / span><span class = "p" >]< / span> <span class = "n" >maparam< / span> <span class = "o" > = < / span> <span class = "n" >np< / span><span class = "o" >.< / span><span class = "n" >r_< / span><span class = "p" >[< / span><span class = "mi" > 1 < / span><span class = "p" >,< / span> <span class = "n" >maparams< / span><span class = "p" >]< / span> <span class = "n" >nobs< / span> <span class = "o" > = < / span> <span class = "mi" > 250 < / span> <span class = "n" >y< / span> <span class = "o" > = < / span> <span class = "n" >arma_generate_sample< / span><span class = "p" >(< / span><span class = "n" >arparams< / span><span class = "p" >,< / span> <span class = "n" >maparams< / span><span class = "p" >,< / span> <span class = "n" >nobs< / span><span class = "p" >)< / span> |
Now, optionally, we can add some dates information. For this example, we'll use a pandas time series.
In [4]:
1 2 3 4 | <span class = "n" >dates< / span> <span class = "o" > = < / span> <span class = "n" >sm< / span><span class = "o" >.< / span><span class = "n" >tsa< / span><span class = "o" >.< / span><span class = "n" >datetools< / span><span class = "o" >.< / span><span class = "n" >dates_from_range< / span><span class = "p" >(< / span><span class = "s" > '1980m1' < / span><span class = "p" >,< / span> <span class = "n" >length< / span><span class = "o" > = < / span><span class = "n" >nobs< / span><span class = "p" >)< / span> <span class = "n" >y< / span> <span class = "o" > = < / span> <span class = "n" >pd< / span><span class = "o" >.< / span><span class = "n" >TimeSeries< / span><span class = "p" >(< / span><span class = "n" >y< / span><span class = "p" >,< / span> <span class = "n" >index< / span><span class = "o" > = < / span><span class = "n" >dates< / span><span class = "p" >)< / span> <span class = "n" >arma_mod< / span> <span class = "o" > = < / span> <span class = "n" >sm< / span><span class = "o" >.< / span><span class = "n" >tsa< / span><span class = "o" >.< / span><span class = "n" >ARMA< / span><span class = "p" >(< / span><span class = "n" >y< / span><span class = "p" >,< / span> <span class = "n" >order< / span><span class = "o" > = < / span><span class = "p" >(< / span><span class = "mi" > 2 < / span><span class = "p" >,< / span><span class = "mi" > 2 < / span><span class = "p" >))< / span> <span class = "n" >arma_res< / span> <span class = "o" > = < / span> <span class = "n" >arma_mod< / span><span class = "o" >.< / span><span class = "n" >fit< / span><span class = "p" >(< / span><span class = "n" >trend< / span><span class = "o" > = < / span><span class = "s" > 'nc' < / span><span class = "p" >,< / span> <span class = "n" >disp< / span><span class = "o" > = - < / span><span class = "mi" > 1 < / span><span class = "p" >)< / span> |
In [5]:
1 | <span class = "k" > print < / span><span class = "p" >(< / span><span class = "n" >arma_res< / span><span class = "o" >.< / span><span class = "n" >summary< / span><span class = "p" >())< / span> |
In [6]:
1 | <span class = "n" >y< / span><span class = "o" >.< / span><span class = "n" >tail< / span><span class = "p" >()< / span> |
Out[6]:
In [7]:
1 2 3 4 | <span class = "kn" > import < / span> <span class = "nn" >matplotlib.pyplot< / span> <span class = "kn" >as< / span> <span class = "nn" >plt< / span> <span class = "n" >fig< / span><span class = "p" >,< / span> <span class = "n" >ax< / span> <span class = "o" > = < / span> <span class = "n" >plt< / span><span class = "o" >.< / span><span class = "n" >subplots< / span><span class = "p" >(< / span><span class = "n" >figsize< / span><span class = "o" > = < / span><span class = "p" >(< / span><span class = "mi" > 10 < / span><span class = "p" >,< / span><span class = "mi" > 8 < / span><span class = "p" >))< / span> <span class = "n" >fig< / span> <span class = "o" > = < / span> <span class = "n" >arma_res< / span><span class = "o" >.< / span><span class = "n" >plot_predict< / span><span class = "p" >(< / span><span class = "n" >start< / span><span class = "o" > = < / span><span class = "s" > '1999m6' < / span><span class = "p" >,< / span> <span class = "n" >end< / span><span class = "o" > = < / span><span class = "s" > '2001m5' < / span><span class = "p" >,< / span> <span class = "n" >ax< / span><span class = "o" > = < / span><span class = "n" >ax< / span><span class = "p" >)< / span> <span class = "n" >legend< / span> <span class = "o" > = < / span> <span class = "n" >ax< / span><span class = "o" >.< / span><span class = "n" >legend< / span><span class = "p" >(< / span><span class = "n" >loc< / span><span class = "o" > = < / span><span class = "s" > 'upper left' < / span><span class = "p" >)< / span> |
Please login to continue.