Skip to content

Instantly share code, notes, and snippets.

@pybokeh
Last active August 29, 2015 13:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pybokeh/9749994 to your computer and use it in GitHub Desktop.
Save pybokeh/9749994 to your computer and use it in GitHub Desktop.
Double_Exponential_Smoothing
{
"metadata": {
"name": ""
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<center><h3>Forecasting with Double Exponential Smoothing using Python</h3></center>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I purchased a [book](http://www.wiley.com/WileyCDA/WileyTitle/productCd-111866146X.html) called \"Data Smart: Using Data Science to Transform Information into Insight\" and was pleasantly surprised that it covers some time series forecasting techniques in chapter 8. The data set used in the chapter 8 can be obtained [here](http://media.wiley.com/product_ancillary/6X/11186614/DOWNLOAD/ch08.zip). One of the methods it covers is the double exponential smoothing method. The book covers how to use this method using Excel (actually all methods in the book are done in Excel) and I was then able to make a Python version of this. Why Python you may ask? Well I wanted to automate the process with any data set. Since I don't know Excel VBA, Python was my next best option."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<center>$\\large{forecast_t = level_{t-1} + trend_{t-1}}$<br><br>\n",
"$\\large{level_t = level_{t-1} + trend_{t-1} + \\alpha*(forecast_t - (level_{t-1} + trend_{t-1}))}$<br>\n",
"or more generically:<br>\n",
"$\\large{level_t = level_{t-1} + trend_{t-1} + \\alpha*(forecast \\space error_t)}$<br><br>\n",
"$\\large{trend_t = trend_{t-1} + \\gamma*\\alpha*(forecast_t - (level_{t-1} - trend_{t-1}))}$<br>\n",
"or more generically:<br>\n",
"$\\large{trend_t = trend_{t-1} + \\gamma*\\alpha*(forecast \\space error_t)}$<br><br>\n",
"$\\large{squared \\space error = forecast \\space error^2}$<br><br>\n",
"$\\large{standard \\space error = \\sqrt{\\frac{\\sum squared \\space error}{n - 2}}}$</center><br><br>\n",
"Ideally, we want alpha and gamma values to be such that the standard error is at its minimum."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import matplotlib.pyplot as plt\n",
"import pandas as pd\n",
"import scipy.stats as stats\n",
"import numpy as np\n",
"from math import sqrt\n",
"\n",
"df = pd.read_csv('/home/user/data_sets/demand.txt', names=['Demand'])\n",
"\n",
"df.index = range(1,len(df)+1) # by default, the index starts with 0, but want to change it to start with one\n",
"\n",
"# I converted my values to numpy arrays for performance reason\n",
"x = np.array(df.index)\n",
"y = np.array([value[0] for value in df.values])"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"plt.plot(x,y)\n",
"plt.title(\"Actual Demand\")\n",
"plt.grid(True)\n",
"plt.show()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAXgAAAEICAYAAABVv+9nAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XtcVHX+x/EXJK2WF7QCDUwsMBhQhlTEVjfMW1fW1Gwx\nXU3aLq61VmuWe3GzUruattllN1OzFu1nirVK2iqZZpEplmJBCspFyXtoKibf3x/fZgRkhmGYYc4Z\nPs/Hg8fumZlz5s2RPnPmc77newKUUgohhBB+J9DXAYQQQniHFHghhPBTUuCFEMJPSYEXQgg/JQVe\nCCH8lBR4IYTwU1Lghd/7xz/+wejRo30dwyv8+XcTDScFXnhdcnIy7dq1o6KiwqXXz58/n759+3rs\n/QMCAhw+l5WVRWBgIK1ataJVq1Z07NiRO+64g82bN3vs/b3J2e8mhBR44VWFhYVkZ2cTEhLCihUr\nfJKhrmv5wsLCKC8vp7y8nM8//5zo6Gj69u3L2rVrGymhEN4hBV541cKFCxkwYACjR49mwYIF1Z4r\nKipi6NChhISEcOmll/LAAw/w7bffct9997Fp0yZatWpFu3btAP0t4M0337SvW/Mo/09/+hNXXHEF\nbdq0oUePHmzYsMGtvGFhYTzxxBPcfffdTJ482f74t99+y8CBA7nkkkuIjo7mvffesz83duxYxo8f\nz0033USrVq3o27cv+/fv509/+hNt27YlJiaGnJwc++tnzpxJZGQkrVu3JjY2luXLl1f7vfr06cOk\nSZNo164dV155JZmZmfbnCwoKuO6662jdujWDBg3i4MGDbv2eommQAi+8auHChdxxxx2MGDGCjz76\niB9++AGAs2fPcsstt9C5c2f27NlDSUkJqampREdH8/rrr9O7d2/Ky8s5fPgwoFsRztoRiYmJbNu2\njSNHjjBy5Ehuv/12l1tCtbntttvYsmULJ0+e5MSJEwwcOJBRo0Zx4MAB0tPTGT9+PDt37rS//r33\n3uPpp5/m4MGDXHjhhSQlJdGzZ08OHz7M8OHDefjhh+2vjYyMZMOGDfz4449MnTqVUaNGUVZWZn8+\nOzub6OhoDh06xKOPPkpaWpr9uZEjR9KzZ08OHTrE3/72NxYsWCBtGuGQFHjhNRs2bKCkpISUlBSi\noqKwWCy8++67gC5i+/bt47nnnqNFixb86le/4tprrwXqbqnU5s4776Rt27YEBgby8MMPc/r0ab77\n7ju3s19++eUopTh69CgffvghnTt3ZsyYMQQGBmK1Whk6dGi1o/ihQ4eSkJDAr371K2677TYuvvhi\nRo0aRUBAACNGjGDr1q321w4fPpz27dsDMGLECKKiovjiiy/sz3fq1Im0tDQCAgL4/e9/z759+/jh\nhx/Yu3cvmzdv5sknnyQoKIi+ffty6623urW/RNMgBV54zYIFCxg0aBCtWrUC4Pbbb7e3aYqKiujU\nqROBgZ75E3z++eexWCwEBwfTtm1bjh071qD2RUlJCQEBAQQHB7Nnzx6++OIL2rZta/9599137Ufd\nAQEBhISE2Ndt3rx5teUWLVpw/Phx+/LChQtJSEiwb2v79u0cOnTI/ryt+ANcdNFFABw/fpzS0lLa\ntm1LixYt7M936tTJ7d9R+L9mvg4g/NPJkydZsmQJlZWVdOjQAYDTp09z9OhRvv76azp27MjevXs5\ne/YsF1xwQbV1a2s5XHzxxZw4ccK+vH//fvv///TTT3nuuedYu3YtsbGxALRr165BR7bLli2je/fu\ntGjRgiuuuILrrruO1atXu709mz179nDPPfewdu1aevfuTUBAAAkJCS5l7dChA0eOHOGnn36yF/49\ne/act/+EsJEjeOEVy5cvp1mzZuzcuZNt27axbds2du7cSd++fVm4cCG9evWiQ4cOPPbYY/z000+c\nOnWKzz77DIDQ0FCKi4s5c+aMfXtWq5X333+fkydP8v333/Pmm2/aPwjKy8tp1qwZl156KRUVFUyb\nNo0ff/yx3pmVUpSUlPDEE0/w5ptvMn36dABuueUW8vLyWLRoEWfOnOHMmTN8+eWXfPvtt/b1XHXi\nxAkCAgK49NJLqays5K233mL79u0urdupUyd69OjB1KlTOXPmDBs2bODDDz+s9+8pmg4p8MIrFi5c\nyLhx4wgPDyckJISQkBBCQ0OZMGGCvQ//wQcf8P3333PFFVfQsWNHlixZAkD//v2JjY2lffv29lbH\nQw89xIUXXkhoaCh33XUXo0aNsr/XDTfcwA033ECXLl2IiIiwH3XbODtBGxAQQGlpqX0cfGJiIjt2\n7OCTTz5hwIABALRs2ZLVq1eTnp5OWFgYHTp04PHHH7efxK25/drez7ZssVh45JFH6N27N+3bt2f7\n9u306dPHpXUB3n33Xb744gvatWvHtGnTGDNmjCv/HKKJCpAbfgghhH9yegR/6tQpevXqhdVqxWKx\n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\nCrwQQvip/wfIy8gSHdD55gAAAABJRU5ErkJggg==\n",
"text": [
"<matplotlib.figure.Figure at 0x7ffaf942d150>"
]
}
],
"prompt_number": 2
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"So what values should we use for the initial level and initial trend? The book suggest using linear regression of the 1st 18 data points, whereby the y-intercept will be used as the initial level and slope will be used as the initial trend:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"initial_data_size = input(\"How many data points you want to use to calculate the initial level and trend? \")\n",
"\n",
"t0, l0, r_value, p_value, std_err = stats.linregress(x[:int(initial_data_size)],y[:int(initial_data_size)])\n",
"\n",
"print(\"initial level:\", l0)\n",
"print(\"initial trend:\", t0)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"stream": "stdout",
"text": [
"How many data points you want to use to calculate the initial level and trend? 18\n"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"initial level: 155.882352941\n",
"initial trend: 0.836945304438\n"
]
}
],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"y0 = t0 * x + l0\n",
"\n",
"plt.plot(x,y,x,y0)\n",
"plt.title(\"Actual Demand with Least Squares Regression of 1st \" + initial_data_size + \" data points\")\n",
"plt.grid(True)\n",
"plt.show()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0x7ffaddbd8850>"
]
}
],
"prompt_number": 4
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"Below is my attempt of translating the equations above into Python data structures, looping through all possible valid values of alpha and gamma whereby in the end, it returns the alpha and gamma combination with the smallest standard error. I know this is not a very efficient algorithm and use of Python data structures. This code will run very slow if I increase the alpha/gamma value calculation out to 3 decimal places. For now, I am just obtaining 2 decimal places of accuracy. I will try to refactor the code later when I have the time."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"SE_list = []\n",
"for alpha in np.arange(0.01,1.01,0.01):\n",
" for gamma in np.arange(0.01,1.01,0.01):\n",
" level = []\n",
" trend = []\n",
" level.append(l0)\n",
" trend.append(t0)\n",
"\n",
" forecast = []\n",
" forecast_error = []\n",
" squared_error = []\n",
"\n",
" for i, demand in enumerate(y):\n",
" forecast.insert(i,level[-1] + trend[-1])\n",
" forecast_error.insert(i,demand - forecast[i])\n",
" level.insert(i+1,level[-1]+trend[-1]+alpha*forecast_error[-1])\n",
" trend.insert(i+1,trend[-1]+alpha*gamma*forecast_error[-1])\n",
" squared_error.insert(i,forecast_error[i]**2)\n",
" \n",
" SE = sqrt(np.array(squared_error).sum() / ( len(y) - 2 ) )\n",
" SE_list.append([SE, alpha, gamma])\n",
" \n",
"SE_alpha_gamma = min(SE_list) # grab the smallest SE and its corresponding alpha and gamma values\n",
"print(\"alpha and gamma values where standard error is at a minimum:\", SE_alpha_gamma)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"alpha and gamma values where standard error is at a minimum: [20.362341890403936, 0.65900000000000003, 0.053000000000000005]\n"
]
}
],
"prompt_number": 20
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"Using the optimal alpha and gamma values that were calculated from above, let's provide a forecast going out to 12 data points of time."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"level = []\n",
"trend = []\n",
"level.append(l0)\n",
"trend.append(t0)\n",
"\n",
"forecast = []\n",
"forecast_error = []\n",
"squared_error = []\n",
"\n",
"alpha = SE_alpha_gamma[1] # get the alpha value that returns minimum standard error\n",
"gamma = SE_alpha_gamma[2] # get the gamma value that returns minimum standard error\n",
"\n",
"for i, demand in enumerate(y):\n",
" forecast.insert(i,level[-1] + trend[-1])\n",
" forecast_error.insert(i,demand - forecast[i])\n",
" level.insert(i+1,level[-1]+trend[-1]+alpha*forecast_error[-1])\n",
" trend.insert(i+1,trend[-1]+alpha*gamma*forecast_error[-1])\n",
" squared_error.insert(i,forecast_error[i]**2)\n",
"\n",
"forecast_length = input(\"Enter how many months you want to forecast into the future: \")\n",
"forecast_periods = range(1,int(forecast_length)+1)\n",
"\n",
"forecast_data = []\n",
"for period in forecast_periods:\n",
" print(period, level[-1] + period * trend[-1])\n",
" forecast_data.append(level[-1] + period * trend[-1])"
],
"language": "python",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"stream": "stdout",
"text": [
"Enter how many months you want to forecast into the future: 12\n"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"1 291.69168687\n",
"2 297.027052938\n",
"3 302.362419005\n",
"4 307.697785072\n",
"5 313.033151139\n",
"6 318.368517207\n",
"7 323.703883274\n",
"8 329.039249341\n",
"9 334.374615408\n",
"10 339.709981476\n",
"11 345.045347543\n",
"12 350.38071361\n"
]
}
],
"prompt_number": 21
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"Now, let's plot the 12 forecast demand values along with our actual demand:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"x1 = range(len(y)+1, len(y) + len(forecast_data) + 1, 1)\n",
"plt.plot(x,y,x1,forecast_data)\n",
"plt.title(\"Actual Demand with Forecast Trend\")\n",
"plt.grid(True)\n",
"plt.show()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\nhBio/w+BCu+dNMU5dQAAAABJRU5ErkJggg==\n",
"text": [
"<matplotlib.figure.Figure at 0x7fd5233b5bd0>"
]
}
],
"prompt_number": 22
},
{
"cell_type": "heading",
"level": 4,
"metadata": {},
"source": [
"We're done!"
]
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment