{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Simple Logit Example in Python"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "#basic imports\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "#matplotlib inline\n",
    "\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "import statsmodels.api as sm\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Read in Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(10000, 4)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>default</th>\n",
       "      <th>student</th>\n",
       "      <th>balance</th>\n",
       "      <th>income</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>No</td>\n",
       "      <td>No</td>\n",
       "      <td>729.526495</td>\n",
       "      <td>44361.625074</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>No</td>\n",
       "      <td>Yes</td>\n",
       "      <td>817.180407</td>\n",
       "      <td>12106.134700</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>No</td>\n",
       "      <td>No</td>\n",
       "      <td>1073.549164</td>\n",
       "      <td>31767.138947</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>No</td>\n",
       "      <td>No</td>\n",
       "      <td>529.250605</td>\n",
       "      <td>35704.493935</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>No</td>\n",
       "      <td>No</td>\n",
       "      <td>785.655883</td>\n",
       "      <td>38463.495879</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  default student      balance        income\n",
       "0      No      No   729.526495  44361.625074\n",
       "1      No     Yes   817.180407  12106.134700\n",
       "2      No      No  1073.549164  31767.138947\n",
       "3      No      No   529.250605  35704.493935\n",
       "4      No      No   785.655883  38463.495879"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dd = pd.read_csv(\"ISLR-Default.csv\")\n",
    "print(dd.shape)\n",
    "dd.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Plot the data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:title={'center':'balance'}, xlabel='default'>"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "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": [
    "dd.boxplot(column=\"balance\",by=\"default\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Fit the Logit"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "## get x and y as numpy arrays\n",
    "X = dd[\"balance\"].to_numpy().reshape((dd.shape[0],1))\n",
    "y = np.where(dd[\"default\"]=='No',0,1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[-10.65132867] [[0.00549892]]\n"
     ]
    }
   ],
   "source": [
    "#sklearn\n",
    "lfit = LogisticRegression(penalty='none')\n",
    "lfit.fit(X,y)\n",
    "print(lfit.intercept_,lfit.coef_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [],
   "source": [
    "phat = lfit.predict_proba(X)[:,1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x7fc1af625bb0>"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "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": [
    "plt.scatter(X,phat)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Optimization terminated successfully.\n",
      "         Current function value: 0.079823\n",
      "         Iterations 10\n",
      "                           Logit Regression Results                           \n",
      "==============================================================================\n",
      "Dep. Variable:                      y   No. Observations:                10000\n",
      "Model:                          Logit   Df Residuals:                     9998\n",
      "Method:                           MLE   Df Model:                            1\n",
      "Date:                Sun, 02 Jan 2022   Pseudo R-squ.:                  0.4534\n",
      "Time:                        16:04:32   Log-Likelihood:                -798.23\n",
      "converged:                       True   LL-Null:                       -1460.3\n",
      "Covariance Type:            nonrobust   LLR p-value:                6.233e-290\n",
      "==============================================================================\n",
      "                 coef    std err          z      P>|z|      [0.025      0.975]\n",
      "------------------------------------------------------------------------------\n",
      "const        -10.6513      0.361    -29.491      0.000     -11.359      -9.943\n",
      "x1             0.0055      0.000     24.952      0.000       0.005       0.006\n",
      "==============================================================================\n",
      "\n",
      "Possibly complete quasi-separation: A fraction 0.13 of observations can be\n",
      "perfectly predicted. This might indicate that there is complete\n",
      "quasi-separation. In this case some parameters will not be identified.\n"
     ]
    }
   ],
   "source": [
    "# statsmodels\n",
    "XX = sm.add_constant(X)\n",
    "lfit2 = sm.Logit(y, XX).fit()\n",
    "print(lfit2.summary())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Check"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count    10000.0\n",
       "mean         0.0\n",
       "std          0.0\n",
       "min          0.0\n",
       "25%          0.0\n",
       "50%          0.0\n",
       "75%          0.0\n",
       "max          0.0\n",
       "dtype: float64"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "eta = lfit.intercept_ + lfit.coef_[0] * X[:,0]\n",
    "phat0 = 1.0/(1.0 + np.exp(-eta))\n",
    "diff = pd.Series(phat-phat0)\n",
    "diff.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0     0.0\n",
       "1     0.0\n",
       "2     0.0\n",
       "3     0.0\n",
       "4     0.0\n",
       "5     0.0\n",
       "6     0.0\n",
       "7     0.0\n",
       "8     0.0\n",
       "9     0.0\n",
       "10    0.0\n",
       "11    0.0\n",
       "12    0.0\n",
       "13    0.0\n",
       "14    0.0\n",
       "15    0.0\n",
       "16    0.0\n",
       "17    0.0\n",
       "18    0.0\n",
       "19    0.0\n",
       "dtype: float64"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "diff[:20]"
   ]
  }
 ],
 "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.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
