En este trabajo analizaremos el dataset Medical Cost Personal Datasets (obtenido de Kaggle). El objetivo es aplicar la metodología de regresión lineal simple para entender cómo la Edad influye en los Costos Médicos.
Datos:
datos <- read.csv("insurance.csv")
head(datos)
## age sex bmi children smoker region charges
## 1 19 female 27.900 0 yes southwest 16884.924
## 2 18 male 33.770 1 no southeast 1725.552
## 3 28 male 33.000 3 no southeast 4449.462
## 4 33 male 22.705 0 no northwest 21984.471
## 5 32 male 28.880 0 no northwest 3866.855
## 6 31 female 25.740 0 no southeast 3756.622
Siguiendo la metodología, primero analizamos visual y matemáticamente si existe una relación lineal entre la Edad (\(X\)) y el Costo (\(Y\)).
plot(datos$age, datos$charges,
main = "Dispersión: Edad vs Costos Médicos",
xlab = "Edad del Paciente",
ylab = "Costo del Seguro ($)",
col = "steelblue", pch = 19)
correlacion <- cor.test(datos$age, datos$charges)
correlacion
##
## Pearson's product-moment correlation
##
## data: datos$age and datos$charges
## t = 11.453, df = 1336, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.2494139 0.3470381
## sample estimates:
## cor
## 0.2990082
Interpretación:
el coeficiente de correlación es de 0.3. Existe una relación positiva: a mayor edad, mayor es el costo del seguro.
3. Creación del Modelo
Utilizamos la función lm() para generar el modelo de
regresión lineal.
modelo_seguro <- lm(charges ~ age, data = datos)
summary(modelo_seguro)
##
## Call:
## lm(formula = charges ~ age, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -8059 -6671 -5939 5440 47829
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3165.9 937.1 3.378 0.000751 ***
## age 257.7 22.5 11.453 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 11560 on 1336 degrees of freedom
## Multiple R-squared: 0.08941, Adjusted R-squared: 0.08872
## F-statistic: 131.2 on 1 and 1336 DF, p-value: < 2.2e-16
4. Validación del Modelo
Basándonos en el summary anterior, respondemos las
preguntas de validación estadística:
A. ¿El modelo es válido? Observamos el
F-statistic y su p-value (al final del
resumen). Resultado: El p-value es
< 2.2e-16 (menor a 0.05). * Conclusión:
Rechazamos la hipótesis nula. El modelo es estadísticamente
válido y la relación no es producto del azar.
B. ¿Cuánto explica el modelo? Observamos el Adjusted R-squared. Resultado: 0.089 (aprox). Conclusión: La edad explica el 8.9% de la variabilidad en los costos médicos. Aunque parece bajo, es significativo. El resto de la variabilidad se debe a factores que no estamos usando en este modelo simple, como “fumar” o “BMI”.
C. ¿La variable Edad aporta al modelo? Observamos
los coeficientes de la variable age.
Resultado: Tiene 3 asteriscos y un p-value muy
bajo. Conclusión: Sí, la edad aporta
significativamente a la predicción del costo.
5. Predicción y Ecuación
Según los coeficientes obtenidos (Intercept y
age), nuestra ecuación de la recta es:
\[ Costo = 3165.89 + 257.72 (Edad) \]
Ejemplo de Predicción: Si una persona tiene 50 años, el modelo predice:
\[ Costo = 3165.89 + (257.72 \times 50) = 16,051.89 \]
Comprobación con R:
nuevo_dato <- data.frame(age = 50)
predict(modelo_seguro, nuevo_dato)
## 1
## 16052.02
Finalmente, visualizamos la línea de tendencia sobre nuestros datos reales.
plot(datos$age, datos$charges,
main = "Modelo de Regresión: Edad vs Costo",
xlab = "Edad", ylab = "Costo ($)",
col = "lightblue", pch = 19)
abline(modelo_seguro, col = "red", lwd = 3)