The Algorithms logo
The Algorithms
AboutDonate

ARIMA with Pyramid

{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ARIMA with pyramid\n",
    "This notebook shows how to use the ARIMA-algorithm for forecasting univariate time series. To make things simple the [Pyramid Library](https://github.com/alkaline-ml/pmdarima) is used.\n",
    "\n",
    "In case you do not know ARIMA, have a quick look on the [wikipedia article](https://en.wikipedia.org/wiki/Autoregressive_integrated_moving_average)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# First install the required packages\n",
    "!pip install matplotlib numpy pandas pmdarima"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import pmdarima as pm\n",
    "from pmdarima.model_selection import train_test_split\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "import warnings\n",
    "warnings.filterwarnings('ignore')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Load Data\n",
    "\n",
    "In this example we will use the average temperature of the earth surface and make a prediction how this value will evolve.\n",
    "The source of the data can be found at Kaggle: https://www.kaggle.com/berkeleyearth/climate-change-earth-surface-temperature-data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Load data\n",
    "df = pd.read_csv(\"data/GlobalTemperatures.csv\", parse_dates=[0])\n",
    "df = df[[\"dt\", \"LandAverageTemperature\"]]\n",
    "df[\"LandAverageTemperature\"] = df[\"LandAverageTemperature\"].interpolate()\n",
    "ds_temp = df[\"LandAverageTemperature\"]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Create train and test data\n",
    "You can either slpit by percentage or pick a start/end data. So you can decide which of the following two cells you want to run."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# split data by percentage\n",
    "split_percentage = 80\n",
    "train_size = int(ds_temp.shape[0]*(split_percentage/100))\n",
    "train, test = train_test_split(ds_temp, train_size=train_size)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# split data by year\n",
    "train_start_date = '1900-01-01'\n",
    "train_end_date = '1999-12-01'\n",
    "test_start_date = '2000-01-01'\n",
    "test_end_date = '2015-12-01'\n",
    "\n",
    "train = df[(df[\"dt\"] >= train_start_date) & (df[\"dt\"] <= train_end_date)][\"LandAverageTemperature\"]\n",
    "test = df[(df[\"dt\"] >= test_start_date) & (df[\"dt\"] <= test_end_date)][\"LandAverageTemperature\"]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Fit the model an create forecasts\n",
    "\n",
    "The `auto_arima` method of pyramid automatically fits the ARIMA model.\n",
    "Within this function multiple parameters can be specified for the seasonality:\n",
    "- seasonal: boolean variable that indicates that the values of the time series are repeated with a defined frequency.\n",
    "- m: this value defines the frequency, so how many data points occur per year/per season. In this case 12 is needed, as the average temperatures per month are used."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Wall time: 3min 19s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "# Measure the execution time of the model fitting\n",
    "\n",
    "# Fit model\n",
    "model = pm.auto_arima(train, seasonal=True, m=12)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "With `model.summary()` you can get an insight into the fitted model and see what parameters were calculated by the `auto_arima` function."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<caption>SARIMAX Results</caption>\n",
       "<tr>\n",
       "  <th>Dep. Variable:</th>                   <td>y</td>                <th>  No. Observations:  </th>   <td>1200</td>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Model:</th>           <td>SARIMAX(1, 0, 0)x(1, 0, [1], 12)</td> <th>  Log Likelihood     </th> <td>-322.446</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Date:</th>                    <td>Sun, 25 Oct 2020</td>         <th>  AIC                </th>  <td>654.892</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Time:</th>                        <td>20:45:43</td>             <th>  BIC                </th>  <td>680.343</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Sample:</th>                          <td>0</td>                <th>  HQIC               </th>  <td>664.479</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th></th>                              <td> - 1200</td>             <th>                     </th>     <td> </td>   \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Covariance Type:</th>                <td>opg</td>               <th>                     </th>     <td> </td>   \n",
       "</tr>\n",
       "</table>\n",
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "      <td></td>         <th>coef</th>     <th>std err</th>      <th>z</th>      <th>P>|z|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>intercept</th> <td>    0.0009</td> <td>    0.000</td> <td>    3.227</td> <td> 0.001</td> <td>    0.000</td> <td>    0.002</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>ar.L1</th>     <td>    0.4255</td> <td>    0.024</td> <td>   17.702</td> <td> 0.000</td> <td>    0.378</td> <td>    0.473</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>ar.S.L12</th>  <td>    0.9998</td> <td> 6.48e-05</td> <td> 1.54e+04</td> <td> 0.000</td> <td>    1.000</td> <td>    1.000</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>ma.S.L12</th>  <td>   -0.8718</td> <td>    0.014</td> <td>  -60.383</td> <td> 0.000</td> <td>   -0.900</td> <td>   -0.843</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>sigma2</th>    <td>    0.0948</td> <td>    0.003</td> <td>   31.491</td> <td> 0.000</td> <td>    0.089</td> <td>    0.101</td>\n",
       "</tr>\n",
       "</table>\n",
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "  <th>Ljung-Box (Q):</th>          <td>78.72</td> <th>  Jarque-Bera (JB):  </th> <td>96.69</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Prob(Q):</th>                <td>0.00</td>  <th>  Prob(JB):          </th> <td>0.00</td> \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Heteroskedasticity (H):</th> <td>0.99</td>  <th>  Skew:              </th> <td>-0.08</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Prob(H) (two-sided):</th>    <td>0.91</td>  <th>  Kurtosis:          </th> <td>4.38</td> \n",
       "</tr>\n",
       "</table><br/><br/>Warnings:<br/>[1] Covariance matrix calculated using the outer product of gradients (complex-step)."
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.summary.Summary'>\n",
       "\"\"\"\n",
       "                                      SARIMAX Results                                       \n",
       "============================================================================================\n",
       "Dep. Variable:                                    y   No. Observations:                 1200\n",
       "Model:             SARIMAX(1, 0, 0)x(1, 0, [1], 12)   Log Likelihood                -322.446\n",
       "Date:                              Sun, 25 Oct 2020   AIC                            654.892\n",
       "Time:                                      20:45:43   BIC                            680.343\n",
       "Sample:                                           0   HQIC                           664.479\n",
       "                                             - 1200                                         \n",
       "Covariance Type:                                opg                                         \n",
       "==============================================================================\n",
       "                 coef    std err          z      P>|z|      [0.025      0.975]\n",
       "------------------------------------------------------------------------------\n",
       "intercept      0.0009      0.000      3.227      0.001       0.000       0.002\n",
       "ar.L1          0.4255      0.024     17.702      0.000       0.378       0.473\n",
       "ar.S.L12       0.9998   6.48e-05   1.54e+04      0.000       1.000       1.000\n",
       "ma.S.L12      -0.8718      0.014    -60.383      0.000      -0.900      -0.843\n",
       "sigma2         0.0948      0.003     31.491      0.000       0.089       0.101\n",
       "===================================================================================\n",
       "Ljung-Box (Q):                       78.72   Jarque-Bera (JB):                96.69\n",
       "Prob(Q):                              0.00   Prob(JB):                         0.00\n",
       "Heteroskedasticity (H):               0.99   Skew:                            -0.08\n",
       "Prob(H) (two-sided):                  0.91   Kurtosis:                         4.38\n",
       "===================================================================================\n",
       "\n",
       "Warnings:\n",
       "[1] Covariance matrix calculated using the outer product of gradients (complex-step).\n",
       "\"\"\""
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Create Forecasts\n",
    "With the fitted model, future datapoints can be predicted.\n",
    "In this case, the amount of test datapoints is predicted, so that later the test data can be compared with the prediction."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Create forecasts\n",
    "forecasts = model.predict(test.shape[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Visualizations"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Visualize the forecasts (green=train, blue=forecasts)\n",
    "x = np.arange(train.shape[0] + test.shape[0])\n",
    "plt.plot(x[:train.shape[0]], train, c='green')\n",
    "plt.plot(x[train.shape[0]:], forecasts, c='blue')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Compare forecasts and real values (green=test, blue=forecasts)\n",
    "x = np.arange(test.shape[0])\n",
    "plt.plot(x, test, c='green', alpha=0.5)\n",
    "plt.plot(x, forecasts, c='blue', alpha=0.5)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Conclusion\n",
    "\n",
    "The last figure demonstrates, how the forecasts and the real (test) values compare to each other.\n",
    "\n",
    "Overall ARIMA's prediction seems to be quite appropriate. Only the temperature peaks in summer are not predicted as well. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
About this Algorithm

ARIMA with pyramid

This notebook shows how to use the ARIMA-algorithm for forecasting univariate time series. To make things simple the Pyramid Library is used.

In case you do not know ARIMA, have a quick look on the wikipedia article.

# First install the required packages
!pip install matplotlib numpy pandas pmdarima
import pandas as pd
import pmdarima as pm
from pmdarima.model_selection import train_test_split
import numpy as np
import matplotlib.pyplot as plt

import warnings
warnings.filterwarnings('ignore')

Load Data

In this example we will use the average temperature of the earth surface and make a prediction how this value will evolve. The source of the data can be found at Kaggle: https://www.kaggle.com/berkeleyearth/climate-change-earth-surface-temperature-data

# Load data
df = pd.read_csv("data/GlobalTemperatures.csv", parse_dates=[0])
df = df[["dt", "LandAverageTemperature"]]
df["LandAverageTemperature"] = df["LandAverageTemperature"].interpolate()
ds_temp = df["LandAverageTemperature"]

Create train and test data

You can either slpit by percentage or pick a start/end data. So you can decide which of the following two cells you want to run.

# split data by percentage
split_percentage = 80
train_size = int(ds_temp.shape[0]*(split_percentage/100))
train, test = train_test_split(ds_temp, train_size=train_size)
# split data by year
train_start_date = '1900-01-01'
train_end_date = '1999-12-01'
test_start_date = '2000-01-01'
test_end_date = '2015-12-01'

train = df[(df["dt"] &gt;= train_start_date) & (df["dt"] &lt;= train_end_date)]["LandAverageTemperature"]
test = df[(df["dt"] &gt;= test_start_date) & (df["dt"] &lt;= test_end_date)]["LandAverageTemperature"]

Fit the model an create forecasts

The auto_arima method of pyramid automatically fits the ARIMA model. Within this function multiple parameters can be specified for the seasonality:

  • seasonal: boolean variable that indicates that the values of the time series are repeated with a defined frequency.
  • m: this value defines the frequency, so how many data points occur per year/per season. In this case 12 is needed, as the average temperatures per month are used.
%%time
# Measure the execution time of the model fitting

# Fit model
model = pm.auto_arima(train, seasonal=True, m=12)
Wall time: 3min 19s

With model.summary() you can get an insight into the fitted model and see what parameters were calculated by the auto_arima function.

model.summary()
SARIMAX Results
Dep. Variable: y No. Observations: 1200
Model: SARIMAX(1, 0, 0)x(1, 0, [1], 12) Log Likelihood -322.446
Date: Sun, 25 Oct 2020 AIC 654.892
Time: 20:45:43 BIC 680.343
Sample: 0 HQIC 664.479
- 1200
Covariance Type: opg
coef std err z P>|z| [0.025 0.975]
intercept 0.0009 0.000 3.227 0.001 0.000 0.002
ar.L1 0.4255 0.024 17.702 0.000 0.378 0.473
ar.S.L12 0.9998 6.48e-05 1.54e+04 0.000 1.000 1.000
ma.S.L12 -0.8718 0.014 -60.383 0.000 -0.900 -0.843
sigma2 0.0948 0.003 31.491 0.000 0.089 0.101
Ljung-Box (Q): 78.72 Jarque-Bera (JB): 96.69
Prob(Q): 0.00 Prob(JB): 0.00
Heteroskedasticity (H): 0.99 Skew: -0.08
Prob(H) (two-sided): 0.91 Kurtosis: 4.38


Warnings:
[1] Covariance matrix calculated using the outer product of gradients (complex-step).

Create Forecasts

With the fitted model, future datapoints can be predicted. In this case, the amount of test datapoints is predicted, so that later the test data can be compared with the prediction.

# Create forecasts
forecasts = model.predict(test.shape[0])

Visualizations

# Visualize the forecasts (green=train, blue=forecasts)
x = np.arange(train.shape[0] + test.shape[0])
plt.plot(x[:train.shape[0]], train, c='green')
plt.plot(x[train.shape[0]:], forecasts, c='blue')
plt.show()
# Compare forecasts and real values (green=test, blue=forecasts)
x = np.arange(test.shape[0])
plt.plot(x, test, c='green', alpha=0.5)
plt.plot(x, forecasts, c='blue', alpha=0.5)
plt.show()

Conclusion

The last figure demonstrates, how the forecasts and the real (test) values compare to each other.

Overall ARIMA's prediction seems to be quite appropriate. Only the temperature peaks in summer are not predicted as well.