{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Prediction (out of sample)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "import statsmodels.api as sm\n",
    "\n",
    "plt.rc(\"figure\", figsize=(16,8))\n",
    "plt.rc(\"font\", size=14)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Artificial data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "nsample = 50\n",
    "sig = 0.25\n",
    "x1 = np.linspace(0, 20, nsample)\n",
    "X = np.column_stack((x1, np.sin(x1), (x1-5)**2))\n",
    "X = sm.add_constant(X)\n",
    "beta = [5., 0.5, 0.5, -0.02]\n",
    "y_true = np.dot(X, beta)\n",
    "y = y_true + sig * np.random.normal(size=nsample)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Estimation "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                            OLS Regression Results                            \n",
      "==============================================================================\n",
      "Dep. Variable:                      y   R-squared:                       0.991\n",
      "Model:                            OLS   Adj. R-squared:                  0.991\n",
      "Method:                 Least Squares   F-statistic:                     1741.\n",
      "Date:                Thu, 05 Nov 2020   Prob (F-statistic):           2.42e-47\n",
      "Time:                        07:28:38   Log-Likelihood:                 16.213\n",
      "No. Observations:                  50   AIC:                            -24.43\n",
      "Df Residuals:                      46   BIC:                            -16.78\n",
      "Df Model:                           3                                         \n",
      "Covariance Type:            nonrobust                                         \n",
      "==============================================================================\n",
      "                 coef    std err          t      P>|t|      [0.025      0.975]\n",
      "------------------------------------------------------------------------------\n",
      "const          4.9818      0.062     80.129      0.000       4.857       5.107\n",
      "x1             0.4999      0.010     52.131      0.000       0.481       0.519\n",
      "x2             0.5705      0.038     15.136      0.000       0.495       0.646\n",
      "x3            -0.0196      0.001    -23.240      0.000      -0.021      -0.018\n",
      "==============================================================================\n",
      "Omnibus:                        1.466   Durbin-Watson:                   2.544\n",
      "Prob(Omnibus):                  0.481   Jarque-Bera (JB):                1.270\n",
      "Skew:                          -0.221   Prob(JB):                        0.530\n",
      "Kurtosis:                       2.357   Cond. No.                         221.\n",
      "==============================================================================\n",
      "\n",
      "Notes:\n",
      "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n"
     ]
    }
   ],
   "source": [
    "olsmod = sm.OLS(y, X)\n",
    "olsres = olsmod.fit()\n",
    "print(olsres.summary())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## In-sample prediction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 4.49265385  4.99974377  5.46310707  5.85164932  6.14549789  6.33926701\n",
      "  6.44294259  6.48024159  6.48471541  6.49423745  6.54478062  6.66450713\n",
      "  6.8691415   7.15938703  7.52081031  7.92621256  8.34009829  8.72450714\n",
      "  9.04525068  9.27752939  9.41000725  9.44667415  9.40619038  9.31882081\n",
      "  9.22146243  9.15158231  9.14106186  9.21095878  9.36804736  9.60370549\n",
      "  9.89533122 10.21005623 10.51014599 10.75919941 10.92812949 10.99994216\n",
      " 10.97252845 10.85901089 10.68558759 10.48722792 10.30192717 10.16446402\n",
      " 10.10068647 10.12326517 10.22961157 10.40230328 10.61194648 10.82200528\n",
      " 10.99480442 11.09771924]\n"
     ]
    }
   ],
   "source": [
    "ypred = olsres.predict(X)\n",
    "print(ypred)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Create a new sample of explanatory variables Xnew, predict and plot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[11.09713875 10.94752801 10.67126182 10.31932948  9.95885089  9.65664319\n",
      "  9.46286165  9.39871988  9.451296    9.57669639]\n"
     ]
    }
   ],
   "source": [
    "x1n = np.linspace(20.5,25, 10)\n",
    "Xnew = np.column_stack((x1n, np.sin(x1n), (x1n-5)**2))\n",
    "Xnew = sm.add_constant(Xnew)\n",
    "ynewpred =  olsres.predict(Xnew) # predict out of sample\n",
    "print(ynewpred)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Plot comparison"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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joiIiIiISIqhMHoX5XIc5KJfEQp/8YHdpYiIiIiIiKQoaewuwJWlrVyOtIe2aAVdERERERERB1Nn9F4UREVERERERBxOYVREREREREScTmFUREREREREnE5hVERERERERJxOYVREREREREScTmFUREREREREnE5hVERERERERJxOYVREREREREScTmFUREREREREnE5hVERERERERJxOYVREREREREScTmFUREREREREnE5hVERERERERJxOYVREREREREScTmFUREREREREnE5hVERERERERJxOYVREREREREScTmFUREREREREnM4wTdPeAgzjBHDA1iLuLRtw0u4iJNXT81BcgZ6H4ir0XBRXoOehuILk8DzMb5pm9lsP2h5GkwPDMMJM0wywuw5J3fQ8FFeg56G4Cj0XxRXoeSiuIDk/DzVMV0RERERERJxOYVREREREREScTmH0/kywuwAR9DwU16DnobgKPRfFFeh5KK4g2T4PNWdUREREREREnE6dUREREREREXE6hVERERERERFxOoXRuzAM433DMPYZhnHZMIyNhmE8a3dNknoYhtHPMAzzlstRu+uSlM8wjCqGYfxkGEbE1edd81uuN64+Pw8bhhFlGMYywzCetKlcSaHu43k4+Q6vkWttKldSKMMwehqGscEwjHOGYZwwDONnwzBK3HIbvSZKkrrP52GyfE1UGE2EYRiNgFHAAKAMsBr41TCMfLYWJqnNLiD3DZeS9pYjqYQPsBXoCETd4fpuQBegA1AeOA78ZhhGBqdVKKnBvZ6HAEu4+TXyJeeUJqlIVWAs8DTwPBALLDEMI8sNt9FroiS1qtz7eQjJ8DVRCxglwjCMdcDfpmm2uuHYbmCuaZo97atMUgvDMPoBDUzTLHGv24okFcMwLgDtTdOcfPV7AzgMjDZN8/Orx7yx3nx1NU1zvF21Ssp16/Pw6rHJQDbTNF+xqy5JfQzD8AHOAnVN0/xZr4lih1ufh1ePTSYZviaqM3oHhmF4AuWAxbdctRjrEwkRZyl0dYjaPsMwZhmGUcjugiTVKwjk4obXR9M0o4Dl6PVRnO8ZwzCOG4bxj2EYEw3DyGF3QZLiZcB6/3zm6vd6TRQ73Po8TJDsXhMVRu8sG+AOHLvl+DGsFxwRZ1gHNAdeBFphPfdWG4aR1c6iJNVLeA3U66PYbRHwNlAda4jkU8BSwzC8bK1KUrpRwCZgzdXv9Zoodrj1eQjJ9DUxjd0FuLhbxzAbdzgmkiRM0/z1xu+vTkL/F2gGDLelKJHr9PootjJNc9YN324xDGMjcAB4GZhvT1WSkhmGMRx4BnjGNM24W67Wa6I4RWLPw+T6mqjO6J2dBOK4/ROtHNz+yZeIU5imeQHYBhSxuxZJ1RJWdNbro7gU0zQPA4fQa6QkAcMwRgBvAs+bpvnvDVfpNVGc5i7Pw9skl9dEhdE7ME0zGtgI1LzlqppYq+qKOJ1hGGmBYsARu2uRVG0f1puva6+PV5+bz6LXR7GRYRjZAH/0GikOZhjGKOAtrACw85ar9ZooTnGP5+Gdbp8sXhM1TDdxw4GphmGsB1YBbQE/4Ctbq5JUwzCMocDPwH9Yn7B+DKQHpthZl6R8V1fpK3z1Wzcgn2EYpYHTpmn+ZxjGSKCXYRg7gX+A3sAFYIYN5UoKdbfn4dVLP2Ae1hutAsBArBVMf3ByqZKCGYYxBmgK1AXOGIaR0AG9YJrmBdM0Tb0mSlK71/Pw6utlP5Lha6K2drkLwzDex9o7KjfWXmedTdNcbm9VkloYhjELqIK1oNYJYC3wsWma220tTFI8wzCqAn/c4aoppmk2v7qVQV+gDZAZa7GtdqZpbnVakZLi3e15CLwHhGDtA+6L9ebrD6zXyINOKVBSBcMwEnuj/Ilpmv2u3kaviZKk7vU8vLqdUAjJ8DVRYVREREREREScTnNGRURERERExOkURkVERERERMTpFEZFRERERETE6RRGRURERERExOkURkVERERERMTpFEZFRERERETE6RRGRURERERExOkURkVERERERMTpFEZFRERERETE6f4Px62B59F507wAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 1152x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "ax.plot(x1, y, 'o', label=\"Data\")\n",
    "ax.plot(x1, y_true, 'b-', label=\"True\")\n",
    "ax.plot(np.hstack((x1, x1n)), np.hstack((ypred, ynewpred)), 'r', label=\"OLS prediction\")\n",
    "ax.legend(loc=\"best\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Predicting with Formulas"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Using formulas can make both estimation and prediction a lot easier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "from statsmodels.formula.api import ols\n",
    "\n",
    "data = {\"x1\" : x1, \"y\" : y}\n",
    "\n",
    "res = ols(\"y ~ x1 + np.sin(x1) + I((x1-5)**2)\", data=data).fit()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We use the `I` to indicate use of the Identity transform. Ie., we do not want any expansion magic from using `**2`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Intercept           4.981789\n",
       "x1                  0.499863\n",
       "np.sin(x1)          0.570549\n",
       "I((x1 - 5) ** 2)   -0.019565\n",
       "dtype: float64"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "res.params"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we only have to pass the single variable and we get the transformed right-hand side variables automatically"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    11.097139\n",
       "1    10.947528\n",
       "2    10.671262\n",
       "3    10.319329\n",
       "4     9.958851\n",
       "5     9.656643\n",
       "6     9.462862\n",
       "7     9.398720\n",
       "8     9.451296\n",
       "9     9.576696\n",
       "dtype: float64"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "res.predict(exog=dict(x1=x1n))"
   ]
  }
 ],
 "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.8.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
