Multiple lineal regression (II) Improving the model

En este post empezamos a trabajar con linear regression, en esta segunda parte vamos a trabajar para mejorar la performance de nuestro modelo, principalmente agregando relaciones entre variables.

Mejorando el modelo

Vamos a agregar tres nuevas relaciones a traves de la creacion de tres nuevas variables en nuestro dataset:

  • Cambio de la variable edad de una funcion lineal a una funcion cuadratica
  • Crear un nuevo indicador para obesidad, esto es BMI > 30
  • Sumar una nueva variable para aquellos casos que fuman y ademas tienen un BMI > 30

Todo esto, esperamos nos permita reflejar con mayor claridad como es nuestro modelo y las relaciones en el mismo de forma de poder predecir mayor cantidad de casos.

Conclusiones

Realizando nuevamente un analisis de la performance de este modelo encontramos que:

  • El error maximo en este caso es 24.192 (vs. 29.981), lo cual representa una mejora del 20%
  • En terminos generales Adjusted R-squared: 0.8668 (vs. 0.7509) del modelo anterior lo cual representa otra mejora:
    nuestro modelo es capaz de explicar 87 de cada 100 casos.
  • Que paso con las nuevas variables que se crearon, bueno bien, eso es algo sumamente interesante: este nuevo modelo nos permite predecir que una persona que fume va a tener un gasto 13.421 mayor a una persona que no fume; y una persona que tenga un bmi > 30 y ademas fume va a tener un gasto 19.912 mayor a quienes no cumplan estas condiciones.

Implementacion tecnica

Mejoras

## Step 5: Improving the model
insurance$age2 <- insurance$age^2
insurance$bmi30 <- ifelse(insurance$bmi > 30, 1,0)
##bmi30*smokeryes is equal to bmi30 + smokeryes + bmi30*smokeryes 

ins_model2 <- lm(charges ~ age + age2 + children + bmi + sex + bmi30*smoker + 
region, data = insurance)

Analisis del modelo mejorado

## Step 6: Evaluation of the improved model
summary(ins_model2)

# Call:
#   lm(formula = charges ~ age + age2 + children + bmi + sex + bmi30 * 
#        smoker + region, data = insurance)
# 
# Residuals:
#   Min       1Q          Median      3Q          Max 
# -4260.3     -1644.6     -1272.7     -784.7      24192.7 
# 
# Coefficients:
#                     Estimate  Std. Error    t value     Pr(>|t|)    
# (Intercept)          69.2494  1353.2349      0.051      0.959195    
# age                 -21.6786    59.4956     -0.364      0.715638    
# age2                  3.5978     0.7422      4.847      1.40e-06 ***
# children            661.5105   105.2784      6.283      4.48e-10 ***
# bmi                 114.2920    34.0816      3.353      0.000821 ***
# sexmale            -475.6760   242.9293     -1.958      0.050430 .  
# bmi30              -938.5116   420.5807     -2.231      0.025817 *  
# smokeryes         13421.6370   435.9158     30.790       < 2e-16 ***
# regionnorthwest    -275.6659   347.2730     -0.794      0.427453    
# regionsoutheast    -826.1187   349.6181     -2.363      0.018275 *  
# regionsouthwest   -1164.8152   348.5123     -3.342      0.000854 ***
# bmi30:smokeryes   19912.6072   600.8493     33.141       < 2e-16 ***
#   ---
#   Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 4419 on 1326 degrees of freedom
# Multiple R-squared:  0.8679,	Adjusted R-squared:  0.8668 
# F-statistic: 792.1 on 11 and 1326 DF,  p-value: < 2.2e-16

Bibliografia

Machine Learning with R by Brett Lantz