Skip to content

Instantly share code, notes, and snippets.

@jvrsgsty
Last active August 29, 2015 13:56
Show Gist options
  • Save jvrsgsty/9263173 to your computer and use it in GitHub Desktop.
Save jvrsgsty/9263173 to your computer and use it in GitHub Desktop.
Lista 2 (rlm)
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": ""
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Regresi\u00f3n lineal m\u00faltiple"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Para este ejemplo se cuenta con un juego de datos relacionados a la renta de servicios de televisi\u00f3n por cable. Se busca explicar la renta a partir de varios indicadores con un modelo lineal. \n",
"\n",
"Para ello, se ajusta un modelo de regresi\u00f3n lineal m\u00faltiple considerando la mayor\u00eda de los regresores con los que se cuenta. Tras un primer an\u00e1lisis, se eliminan dos regresores no significativos y se vuelve a ajustar. Se comparan los residuales de los dos modelos y el ajuste en general para analizar la manera en la que los regresores eliminados afectan el modelo."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Comenzamos por especificar el tipo de codificaci\u00f3n, una opci\u00f3n para graficar dentro del navegador y una opci\u00f3n para evitar que se importen todas las librer\u00edas incluidas en pylab."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# -*- coding: utf-8 -*-\n",
"%pylab inline \n",
"%pylab --no-import-all"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Populating the interactive namespace from numpy and matplotlib\n",
"Using matplotlib backend: module://IPython.kernel.zmq.pylab.backend_inline\n",
"Populating the interactive namespace from numpy and matplotlib\n"
]
}
],
"prompt_number": 1
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ahora, agregamos a la variable PATH del sistema operativo, la ruta en la que podr\u00e1 encontrar el archivo \"util\", programado por mi. De otro modo, no se podr\u00e1 importar. Si el archivo estuviera en el mismo directorio en el que est\u00e1 trabajando, se pueden omitir estas l\u00edneas. El archivo \"util.py\" se puede descargar de la liga http://www.github.com"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import sys\n",
"sys.path.append('/Users/jvrsgsty/Desktop')"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 2
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A conitnuaci\u00f3n se importan todas las librer\u00edas a utilizarse"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import util\n",
"import pandas as pd \n",
"import numpy as np \n",
"import statsmodels.formula.api as sm\n",
"import matplotlib.pyplot as plt \n",
"from statsmodels.stats.anova import anova_lm"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Se especifica la ruta en la que se encuentran los datos. Se realiza la lectura de los datos a un Data Frame de la librer\u00eda Pandas. Se escala una de las columnas para evitar trabajar con valores tan grandes. Posteriormente se crea el objeto del modelo de regresi\u00f3n lineal utilizando los nombres que ten\u00edan las columnas de los datos. Por \u00faltimo se ajusta el modelo de regresi\u00f3n y se obtiene el modelo ajustado."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"path = '/Users/jvrsgsty/Documents/ITAM/Semestre 7/Estadistica Aplicada 2/ML-V2013/R/data/cableTV.dat'\n",
"dat = pd.read_table(path, sep='\\s*')\n",
"dat.valor = dat.valor/1000.0\n",
"model = sm.ols(formula='renta ~ ninos + adultos + tvtot + valor', data= dat)\n",
"fitted = model.fit()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 4
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Se despliega el resumen del modelo ajustado y la tabla de an\u00e1lisis de varianza para el mismo. "
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print fitted.summary()\n",
"util.anova_JSB(fitted)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
" OLS Regression Results \n",
"==============================================================================\n",
"Dep. Variable: renta R-squared: 0.592\n",
"Model: OLS Adj. R-squared: 0.545\n",
"Method: Least Squares F-statistic: 12.68\n",
"Date: Mon, 03 Mar 2014 Prob (F-statistic): 1.77e-06\n",
"Time: 16:35:27 Log-Likelihood: -153.46\n",
"No. Observations: 40 AIC: 316.9\n",
"Df Residuals: 35 BIC: 325.4\n",
"Df Model: 4 \n",
"==============================================================================\n",
" coef std err t P>|t| [95.0% Conf. Int.]\n",
"------------------------------------------------------------------------------\n",
"Intercept 9.8057 10.326 0.950 0.349 -11.158 30.769\n",
"ninos -4.9143 2.735 -1.797 0.081 -10.466 0.638\n",
"adultos 2.6401 2.442 1.081 0.287 -2.318 7.598\n",
"tvtot 0.4505 0.114 3.936 0.000 0.218 0.683\n",
"valor 0.1299 0.031 4.135 0.000 0.066 0.194\n",
"==============================================================================\n",
"Omnibus: 0.009 Durbin-Watson: 2.056\n",
"Prob(Omnibus): 0.995 Jarque-Bera (JB): 0.138\n",
"Skew: 0.033 Prob(JB): 0.933\n",
"Kurtosis: 2.719 Cond. No. 1.34e+03\n",
"==============================================================================\n",
"\n",
"Warnings:\n",
"[1] The condition number is large, 1.34e+03. This might indicate that there are\n",
"strong multicollinearity or other numerical problems.\n",
"\n",
" ANOVA\n",
"==============================================================================\n",
" df sum_sq mean_sq F PR(>F)\n",
"ninos 1 793.077032 793.077032 5.513842 0.024646\n",
"adultos 1 2198.824055 2198.824055 15.287251 0.000405\n",
"tvtot 1 1841.656946 1841.656946 12.804059 0.001037\n",
"valor 1 2459.757626 2459.757626 17.101383 0.000211\n",
"Residual 35 5034.184341 143.833838 NaN NaN\n"
]
}
],
"prompt_number": 5
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Se imprime expl\u00edcitamente la significancia de la regresi\u00f3n. Dicho valor tambi\u00e9n se puede leer en la tabla de resumen."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print '=================================='\n",
"print 'Significancia de la regresi\u00f3n: %s' %(fitted.f_pvalue)\n",
"print '=================================='"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"==================================\n",
"Significancia de la regresi\u00f3n: 1.77246372548e-06\n",
"==================================\n"
]
}
],
"prompt_number": 6
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ahora se ajusta un nuevo modelo para el que se eliminaron los regresores que reportaron un valor-p muy alto. Se despliegan tambi\u00e9n las tablas de resumen y de an\u00e1lisis de varianza. "
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"model2 = sm.ols(formula='renta ~ tvtot + valor', data= dat)\n",
"fitted2 = model2.fit()\n",
"print fitted2.summary()\n",
"util.anova_JSB(fitted2)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
" OLS Regression Results \n",
"==============================================================================\n",
"Dep. Variable: renta R-squared: 0.527\n",
"Model: OLS Adj. R-squared: 0.502\n",
"Method: Least Squares F-statistic: 20.63\n",
"Date: Mon, 03 Mar 2014 Prob (F-statistic): 9.58e-07\n",
"Time: 16:35:28 Log-Likelihood: -156.39\n",
"No. Observations: 40 AIC: 318.8\n",
"Df Residuals: 37 BIC: 323.8\n",
"Df Model: 2 \n",
"==============================================================================\n",
" coef std err t P>|t| [95.0% Conf. Int.]\n",
"------------------------------------------------------------------------------\n",
"Intercept 2.6671 8.899 0.300 0.766 -15.364 20.698\n",
"tvtot 0.3920 0.090 4.366 0.000 0.210 0.574\n",
"valor 0.1682 0.028 6.001 0.000 0.111 0.225\n",
"==============================================================================\n",
"Omnibus: 3.634 Durbin-Watson: 1.846\n",
"Prob(Omnibus): 0.163 Jarque-Bera (JB): 2.796\n",
"Skew: -0.644 Prob(JB): 0.247\n",
"Kurtosis: 3.143 Cond. No. 1.09e+03\n",
"==============================================================================\n",
"\n",
"Warnings:\n",
"[1] The condition number is large, 1.09e+03. This might indicate that there are\n",
"strong multicollinearity or other numerical problems.\n",
"\n",
" ANOVA\n",
"==============================================================================\n",
" df sum_sq mean_sq F PR(>F)\n",
"tvtot 1 826.710528 826.710528 5.248344 0.027762\n",
"valor 1 5672.610115 5672.610115 36.012374 0.000001\n",
"Residual 37 5828.179356 157.518361 NaN NaN\n"
]
}
],
"prompt_number": 7
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Para cada valor catastral de una casa en miles de pesos, se grafica su respectivo residual en color azul. Se agrega a la gr\u00e1fica que estamos construyendo los residuales del nuevo modelo, esta vez con color rojo. Se especifican el resto de las opciones de la gr\u00e1fica y finalmente se despliega."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"plt.plot(dat['valor'],fitted.resid, 'bo')\n",
"plt.plot(dat['valor'], fitted2.resid, 'ro')\n",
"plt.legend(['Residuales','Residuales subconjunto'])\n",
"plt.xlabel('valor/1000')\n",
"plt.ylabel('residual')\n",
"plt.ylim(min(fitted.resid)-10, max(fitted.resid)+10)\n",
"plt.title('cableTV')\n",
"plt.show()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0x10dcf0150>"
]
}
],
"prompt_number": 8
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Se imprimen con un formato amigable para la consola diversos valores asociados a los modelos ajustados anteriormente para que se puedan comparar con mayor claridad. "
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print '=================================='\n",
"print 'Significancia de la regresi\u00f3n: %s' %(fitted2.f_pvalue)\n",
"print '=================================='\n",
"print 'Coeficientes con todos los regresores:'\n",
"print fitted.params\n",
"print '=================================='\n",
"print 'Coeficientes con subconjunto de regresores:'\n",
"print fitted2.params\n",
"print '=================================='\n",
"print '=================================='\n",
"print 'R^2 con todos los regresores:'\n",
"print fitted.rsquared\n",
"print '=================================='\n",
"print 'R^2 con subconjunto de regresores:'\n",
"print fitted2.rsquared\n",
"print '=================================='"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"==================================\n",
"Significancia de la regresi\u00f3n: 9.5757124428e-07\n",
"==================================\n",
"Coeficientes con todos los regresores:\n",
"Intercept 9.805659\n",
"ninos -4.914321\n",
"adultos 2.640057\n",
"tvtot 0.450526\n",
"valor 0.129892\n",
"dtype: float64\n",
"==================================\n",
"Coeficientes con subconjunto de regresores:\n",
"Intercept 2.667093\n",
"tvtot 0.391970\n",
"valor 0.168209\n",
"dtype: float64\n",
"==================================\n",
"==================================\n",
"R^2 con todos los regresores:\n",
"0.591629743139\n",
"==================================\n",
"R^2 con subconjunto de regresores:\n",
"0.527221305514\n",
"==================================\n"
]
}
],
"prompt_number": 9
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 9
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment