Multiple lineal regression (I)
Cuando hablamos de modelos de regresion estamos hablando acerca de analizar relaciones entre variables numericas. Que es regresion? es entender las relaciones entre una variable dependiente (que sera el valor a ser predecido) y una o mas variables independientes (las variables predictoras). La forma mas simple de regresion asume una relacion lineal entre una variable independiente y dependiente.
Regresion lineal multiple
Muchos analisis utilizados en la vida real incluyen mas de una variable independiente. Esto tiene como principal beneficio que trabajar con mas de una variable independiente permite adaptar el modelo a casi cualquier tarea. Aun asi se mantinen algunas restricciones basicas: el dataset tiene que estar completo (no permite trabajar con missing values), y todos los elementos que formen parte de la regresion deben ser numericos.
Caso practico: Prediccion de gastos medicos usando regresion lineal
Tomando un grupo de variables muy reducido nos gustaria analizar cual sera el posible gasto medico dado el perfil de un usuario. Nuestro dataset se compone de las siguientes variables:
- Age: Variable continua y numerica.
- Sex: Female / Male. Variable discreta.
- BMI: Variable continua y numerica. Numeros mayores a 30 se consideran un riesgo para la salud, es probable que nuestro dataset nos muestre que a mayor peso existe una mayor incidencia de enfermedades lo que nos da un mayor probable gasto en insurance.
- Children: Variable discreta y numerica. Es probable que exista una correlacion entre children > 0 y mayor pago de insurance… lo cual es logico!
- Smoker: Yes / No. Discreta.
- Region: Se divide el pais en cuatro regiones. Variable discreta.
- Charges: Monto total a pagar.
Analisis
Para poder encontrar una funcion de regresion lineal que permita ajustar los datos, podemos usar la funcion lm(). En base a la funcion que se cree, vamos a poder usar la misma para realizar predicciones.
Implementacion tecnica
Trabajo con los datos
library(readr)
library(psych)
library(stats)
## Step 1. Get data
url_data <- "https://raw.githubusercontent.com/stedy/Machine-Learning-with-R-datasets/master/insurance.csv"
insurance <- read_csv(url(url_data))
## Step 2. Analyzing data
str(insurance)
summary(insurance$charges)
# Min. 1st Qu. Median Mean 3rd Qu. Max.
# 1122 4740 9382 13270 16640 63770
hist(insurance$charges)
table(insurance$region)
# northeast northwest southeast southwest
# 324 325 364 325
## 2.1 Exploring relationships among features - correlation matrix
cor(insurance[c("age","bmi","children",'charges')])
pairs(insurance[c("age","bmi","children",'charges')])
pairs.panels(insurance[c("age","bmi","children",'charges')])
En este punto ya se realizo un analisis de los datos donde se observo que existe correlacion entre las variables , y .
Implementacion del modelo
## Step 4: Evaluating the model
ins_model
# Call:
# lm(formula = charges ~ ., data = insurance)
#
# Coefficients:
# (Intercept) age sexmale
# -11938.5 256.9 -131.3
# bmi children smokeryes
# 339.2 475.5 23848.5
# regionnorthwest regionsoutheast regionsouthwest
# -353.0 -1035.0 -960.1
summary(ins_model)
# Call:
# lm(formula = charges ~ ., data = insurance)
#
# Residuals:
# Min 1Q Median 3Q Max
# -11304.9 -2848.1 -982.1 1393.9 29992.8
#
# Coefficients:
# Estimate Std. Error t value Pr(>|t|)
# (Intercept) -11938.5 987.8 -12.086 < 2e-16 ***
# age 256.9 11.9 21.587 < 2e-16 ***
# sexmale -131.3 332.9 -0.394 0.693348
# bmi 339.2 28.6 11.860 < 2e-16 ***
# children 475.5 137.8 3.451 0.000577 ***
# smokeryes 23848.5 413.1 57.723 < 2e-16 ***
# regionnorthwest -353.0 476.3 -0.741 0.458769
# regionsoutheast -1035.0 478.7 -2.162 0.030782 *
# regionsouthwest -960.0 477.9 -2.009 0.044765 *
# ---
# Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
# Residual standard error: 6062 on 1329 degrees of freedom
# Multiple R-squared: 0.7509, Adjusted R-squared: 0.7494
# F-statistic: 500.8 on 8 and 1329 DF, p-value: < 2.2e-16
Conclusiones
Desde el punto de vista tecnico, la implementacion del modelo de regresion lineal es sumamente simple, sin embargo el analisis posterior del modelo requiere tener cierto conocimiento de estadistica de forma de poder realizar una correcta evaluacion del modelo y proponer las mejoras necesarias.
- Residual section: es una seccion que provee el resumen estadistico para los errores de nuestra prediccion, ahora analizemos que nos dice:
- Max: 29.981.7, quiere decir que al menos en un caso el modelo predijo casi 30.000 de menos.
- 1Q + 3Q, es decir el 50% de los errores esta entre sobreestimar 2.850, y subestimar en 1383.9 por debajo de su valor real.
- Cada uno de los coeficientes indica cuanto mas se incrementa el costo, por cada uno de las caracteristicas del cliente (con hijos, sin hijos, fuma, no fuma…)
- Multiple R Squared (Coeficiente de determinacion): nos da una medida de que tan bien nuestro modelo puede calcular la variable dependiente. En este caso nos da 75%, esto es, en el 75% de los casos nuestro modelo explica la data.
En la vida real, un modelo con un valor del 75% de coeficiente de determinacion seria un muy buen modelo, ahora bien con fines academicos, podemos pensar en como mejorar nuestro modelo