1 Problemática de investigación

En el ámbito de la gestión de recursos sanitarios, la planificación financiera y la asignación eficiente de recursos dependen de la capacidad de las instituciones para anticipar el gasto asociado a la atención de sus usuarios. El costo individual de la atención no se distribuye de manera homogénea entre la población, sino que se concentra de forma marcada en subgrupos con características clínicas y conductuales específicas. Esta heterogeneidad dificulta la elaboración de presupuestos realistas y, cuando no se modela de forma adecuada, conduce a errores de planificación que comprometen tanto la sostenibilidad financiera de la institución como la equidad en el acceso a los servicios.

Los modelos matemáticos y estadísticos constituyen una herramienta esencial para abordar esta dificultad, en la medida en que permiten cuantificar la influencia de los factores que determinan el gasto y anticipar el costo esperado de nuevos usuarios. No obstante, la utilidad de un modelo no se agota en su formulación, sino que depende de su capacidad para representar con precisión la realidad y de generar predicciones confiables en contextos distintos a aquel en el que fue construido. Por ello, la validación y el testeo del modelo se convierten en un paso imprescindible antes de utilizar sus resultados para sustentar decisiones de gestión.

2 Problema de investigación

El problema que orienta el presente análisis consiste en determinar en qué medida un conjunto de características demográficas, antropométricas y conductuales de los usuarios permite explicar y predecir el costo individual de la atención médica, y en establecer si un modelo que incorpora relaciones no lineales e interacciones entre factores de riesgo mejora de manera significativa la capacidad explicativa y predictiva frente a un modelo lineal de referencia. En consecuencia, la pregunta de investigación se formula de la siguiente manera: ¿cómo influyen la edad, el sexo, el índice de masa corporal, el número de hijos a cargo, el hábito de fumar y la región de residencia en el costo individual de la atención médica, y qué especificación del modelo ofrece predicciones más confiables para la planificación de recursos sanitarios?

3 Exploración analítica de datos

El análisis se realiza sobre el conjunto de datos insurance.csv, que reúne información de mil trescientos treinta y ocho usuarios y siete variables. La carga se efectúa directamente desde un repositorio público, lo que garantiza la reproducibilidad del procedimiento sin necesidad de autenticación.

url <- "https://raw.githubusercontent.com/stedy/Machine-Learning-with-R-datasets/master/insurance.csv"
datos <- read.csv(url, stringsAsFactors = TRUE)

# Estructura del conjunto de datos
str(datos)
## 'data.frame':    1338 obs. of  7 variables:
##  $ age     : int  19 18 28 33 32 31 46 37 37 60 ...
##  $ sex     : Factor w/ 2 levels "female","male": 1 2 2 2 2 1 1 1 2 1 ...
##  $ bmi     : num  27.9 33.8 33 22.7 28.9 ...
##  $ children: int  0 1 3 0 0 0 1 3 2 0 ...
##  $ smoker  : Factor w/ 2 levels "no","yes": 2 1 1 1 1 1 1 1 1 1 ...
##  $ region  : Factor w/ 4 levels "northeast","northwest",..: 4 3 3 2 2 3 3 2 1 2 ...
##  $ charges : num  16885 1726 4449 21984 3867 ...

La verificación de la integridad de los datos es un paso previo indispensable, pues la presencia de valores faltantes o inconsistentes afectaría la estimación de los parámetros del modelo.

# Número de observaciones y variables
dim(datos)
## [1] 1338    7
# Conteo de valores faltantes por variable
colSums(is.na(datos))
##      age      sex      bmi children   smoker   region  charges 
##        0        0        0        0        0        0        0
# Distribución de las variables categóricas
table(datos$sex)
## 
## female   male 
##    662    676
table(datos$smoker)
## 
##   no  yes 
## 1064  274
table(datos$region)
## 
## northeast northwest southeast southwest 
##       324       325       364       325

El conjunto de datos no presenta valores faltantes, de modo que las 1338 observaciones se conservan íntegramente para el análisis. Las variables categóricas se encuentran balanceadas en sexo y región, mientras que la condición de fumador corresponde a una minoría de los usuarios, lo que resulta coherente con la prevalencia esperada del hábito.

4 Estadísticas descriptivas

El examen descriptivo permite caracterizar la distribución de la variable de respuesta y de las variables explicativas continuas, así como identificar la presencia de valores atípicos que puedan condicionar la especificación del modelo.

# Resumen de las variables continuas
summary(datos[, c("age", "bmi", "children", "charges")])
##       age             bmi           children        charges     
##  Min.   :18.00   Min.   :15.96   Min.   :0.000   Min.   : 1122  
##  1st Qu.:27.00   1st Qu.:26.30   1st Qu.:0.000   1st Qu.: 4740  
##  Median :39.00   Median :30.40   Median :1.000   Median : 9382  
##  Mean   :39.21   Mean   :30.66   Mean   :1.095   Mean   :13270  
##  3rd Qu.:51.00   3rd Qu.:34.69   3rd Qu.:2.000   3rd Qu.:16640  
##  Max.   :64.00   Max.   :53.13   Max.   :5.000   Max.   :63770
# Desviación estándar de las variables continuas
sapply(datos[, c("age", "bmi", "children", "charges")], sd)
##          age          bmi     children      charges 
##    14.049960     6.098187     1.205493 12110.011237
# Distribución del costo individual
hist(datos$charges, breaks = 40, col = "steelblue", border = "white",
     main = "Distribución del costo individual de la atención (charges)",
     xlab = "Costo (USD)", ylab = "Frecuencia")

La distribución del costo individual presenta una marcada asimetría positiva, con una concentración de la mayoría de los usuarios en valores bajos y una cola derecha prolongada que corresponde a usuarios de costo elevado. Este comportamiento anticipa que el supuesto de normalidad de los residuos será difícil de satisfacer y que la cola derecha estará asociada a subgrupos específicos.

# Identificación de valores atípicos en charges mediante el criterio del rango intercuartílico
q1 <- quantile(datos$charges, 0.25)
q3 <- quantile(datos$charges, 0.75)
iqr <- q3 - q1
lim_sup <- q3 + 1.5 * iqr
atipicos <- datos[datos$charges > lim_sup, ]

# Proporción de fumadores entre los valores atípicos frente al total
prop_fum_atipicos <- mean(atipicos$smoker == "yes")
prop_fum_total <- mean(datos$smoker == "yes")
c(atipicos = nrow(atipicos),
  prop_fumadores_atipicos = round(prop_fum_atipicos, 3),
  prop_fumadores_total = round(prop_fum_total, 3))
##                atipicos prop_fumadores_atipicos    prop_fumadores_total 
##                 139.000                   0.978                   0.205

El hallazgo más relevante del análisis descriptivo es que la condición de fumador concentra la práctica totalidad de los valores atípicos del costo. Mientras que los fumadores representan apenas el 20.5 por ciento del total de usuarios, constituyen el 97.8 por ciento de los casos atípicos identificados mediante el criterio del rango intercuartílico. Este resultado no es un artefacto estadístico, sino un patrón sustantivo que orienta directamente la especificación del modelo, pues sugiere que el efecto del hábito de fumar sobre el costo es de gran magnitud y que su interacción con otros factores de riesgo merece una atención particular.

boxplot(charges ~ smoker, data = datos, col = c("seagreen", "tomato"),
        main = "Costo individual según condición de fumador",
        xlab = "Fumador", ylab = "Costo (USD)")

5 Modelo matemático

Con base en el análisis descriptivo se especifican dos modelos de regresión lineal múltiple estimados por mínimos cuadrados ordinarios. El primero constituye un modelo de referencia que incorpora todas las variables disponibles en forma lineal. El segundo introduce una estructura más flexible que recoge las relaciones no lineales y las interacciones sugeridas por la exploración de los datos.

# Modelo 1: especificación lineal de referencia
modelo1 <- lm(charges ~ age + sex + bmi + children + smoker + region, data = datos)

# Variable indicadora de obesidad (IMC mayor o igual a 30)
datos$obeso <- ifelse(datos$bmi >= 30, 1, 0)

# Modelo 2: término cuadrático de la edad, indicador de obesidad e
# interacción entre la condición de fumador y la obesidad
modelo2 <- lm(charges ~ age + I(age^2) + sex + bmi + children + smoker +
                region + obeso + smoker:obeso, data = datos)

summary(modelo2)
## 
## Call:
## lm(formula = charges ~ age + I(age^2) + sex + bmi + children + 
##     smoker + region + obeso + smoker:obeso, data = datos)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -17296.4  -1656.0  -1263.3   -722.1  24160.2 
## 
## Coefficients:
##                   Estimate Std. Error t value             Pr(>|t|)    
## (Intercept)       134.2509  1362.7511   0.099             0.921539    
## age               -32.6851    59.8242  -0.546             0.584915    
## I(age^2)            3.7316     0.7463   5.000       0.000000649662 ***
## sexmale          -496.8245   244.3659  -2.033             0.042240 *  
## bmi               120.0196    34.2660   3.503             0.000476 ***
## children          678.5612   105.8831   6.409       0.000000000204 ***
## smokeryes       13404.6866   439.9491  30.469 < 0.0000000000000002 ***
## regionnorthwest  -279.2038   349.2746  -0.799             0.424212    
## regionsoutheast  -828.5467   351.6352  -2.356             0.018604 *  
## regionsouthwest -1222.6437   350.5285  -3.488             0.000503 ***
## obeso           -1000.1403   422.8402  -2.365             0.018159 *  
## smokeryes:obeso 19810.7533   604.6567  32.764 < 0.0000000000000002 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4445 on 1326 degrees of freedom
## Multiple R-squared:  0.8664, Adjusted R-squared:  0.8653 
## F-statistic: 781.7 on 11 and 1326 DF,  p-value: < 0.00000000000000022

El Modelo 2 incorpora tres elementos que responden a hipótesis sustantivas sobre la generación del costo. El término cuadrático de la edad permite capturar la aceleración del gasto en las edades avanzadas. El indicador de obesidad introduce un efecto diferencial a partir del umbral clínico del índice de masa corporal. Finalmente, la interacción entre la condición de fumador y la obesidad recoge el efecto combinado de ambos factores de riesgo, que la exploración descriptiva señaló como el principal determinante de los costos extremos.

6 Validación y testeo del modelo

La validación tiene por objeto evaluar si el modelo conserva su desempeño al aplicarse a observaciones distintas de las utilizadas en su estimación. Para ello se emplean dos procedimientos complementarios. En primer lugar, una partición del conjunto de datos en una muestra de entrenamiento y una muestra de prueba, que constituye una forma de validación externa simulada. En segundo lugar, una validación cruzada de diez pliegues, que evalúa la estabilidad del modelo y reduce la dependencia del resultado respecto de una única partición.

Se define previamente una función para el cálculo de la raíz del error cuadrático medio, que es la métrica de precisión predictiva utilizada a lo largo de esta sección.

# Raíz del error cuadrático medio
rmse <- function(observado, predicho) {
  sqrt(mean((observado - predicho)^2))
}

6.1 Partición entrenamiento y prueba

El conjunto de datos se divide de forma aleatoria en una muestra de entrenamiento que reúne el setenta por ciento de las observaciones y una muestra de prueba que conserva el treinta por ciento restante. Ambos modelos se estiman únicamente con la muestra de entrenamiento y se evalúan sobre la muestra de prueba, que el modelo no observó durante el ajuste.

n <- nrow(datos)
indices_entrenamiento <- sample(seq_len(n), size = 0.7 * n)
entrenamiento <- datos[indices_entrenamiento, ]
prueba <- datos[-indices_entrenamiento, ]

# Reestimación de ambos modelos sobre la muestra de entrenamiento
m1_ent <- lm(charges ~ age + sex + bmi + children + smoker + region,
             data = entrenamiento)
m2_ent <- lm(charges ~ age + I(age^2) + sex + bmi + children + smoker +
               region + obeso + smoker:obeso, data = entrenamiento)

# Predicción sobre la muestra de prueba y cálculo del RMSE fuera de muestra
rmse_m1_prueba <- rmse(prueba$charges, predict(m1_ent, prueba))
rmse_m2_prueba <- rmse(prueba$charges, predict(m2_ent, prueba))

c(RMSE_Modelo1 = round(rmse_m1_prueba, 1),
  RMSE_Modelo2 = round(rmse_m2_prueba, 1))
## RMSE_Modelo1 RMSE_Modelo2 
##       5821.8       4471.3

El error de predicción fuera de muestra del Modelo 2 es de aproximadamente 4.471 dólares, frente a los 5.822 dólares del Modelo 1. La reducción del error confirma que la mayor flexibilidad del Modelo 2 no obedece a un sobreajuste a la muestra de entrenamiento, sino que se traduce en una mejora real de la capacidad predictiva sobre observaciones nuevas.

6.2 Validación cruzada de diez pliegues

La validación cruzada divide el conjunto de datos en diez subconjuntos de tamaño aproximadamente igual. En cada iteración, nueve de ellos se utilizan para estimar el modelo y el restante se reserva para evaluarlo, de modo que cada observación participa una vez como dato de prueba. El promedio de los errores obtenidos en los diez pliegues ofrece una estimación más estable del desempeño predictivo.

k <- 10
pliegues <- sample(rep(1:k, length.out = n))

errores_m1 <- numeric(k)
errores_m2 <- numeric(k)

for (i in 1:k) {
  ent <- datos[pliegues != i, ]
  val <- datos[pliegues == i, ]

  fit1 <- lm(charges ~ age + sex + bmi + children + smoker + region, data = ent)
  fit2 <- lm(charges ~ age + I(age^2) + sex + bmi + children + smoker +
               region + obeso + smoker:obeso, data = ent)

  errores_m1[i] <- rmse(val$charges, predict(fit1, val))
  errores_m2[i] <- rmse(val$charges, predict(fit2, val))
}

cv_m1 <- mean(errores_m1)
cv_m2 <- mean(errores_m2)

c(CV_Modelo1 = round(cv_m1, 1), CV_Modelo2 = round(cv_m2, 1))
## CV_Modelo1 CV_Modelo2 
##     6063.1     4429.6

La validación cruzada confirma el resultado de la partición simple. El error promedio del Modelo 2 a lo largo de los diez pliegues es de aproximadamente 4.430 dólares, sensiblemente inferior a los 6.063 dólares del Modelo 1. La coincidencia entre ambos procedimientos otorga robustez a la conclusión, pues la superioridad del Modelo 2 no depende de una partición particular de los datos.

7 Bondad de ajuste y capacidad explicativa o predictiva

Una vez verificada la estabilidad del modelo, se comparan ambas especificaciones en términos de bondad de ajuste y de parsimonia. Para la capacidad explicativa se emplean el coeficiente de determinación y su versión ajustada. Para el equilibrio entre ajuste y complejidad se utilizan los criterios de información de Akaike y de Bayes, que penalizan la incorporación de parámetros adicionales. Finalmente, la prueba de razón de verosimilitud, instrumentada mediante un análisis de varianza, evalúa si la mejora del Modelo 2 es estadísticamente significativa.

# Coeficientes de determinación
r2_m1 <- summary(modelo1)$r.squared
r2_m2 <- summary(modelo2)$r.squared
r2adj_m1 <- summary(modelo1)$adj.r.squared
r2adj_m2 <- summary(modelo2)$adj.r.squared

# Criterios de información
aic_m1 <- AIC(modelo1); aic_m2 <- AIC(modelo2)
bic_m1 <- BIC(modelo1); bic_m2 <- BIC(modelo2)

tabla <- data.frame(
  Metrica = c("R cuadrado", "R cuadrado ajustado", "AIC", "BIC"),
  Modelo1 = round(c(r2_m1, r2adj_m1, aic_m1, bic_m1), 3),
  Modelo2 = round(c(r2_m2, r2adj_m2, aic_m2, bic_m2), 3)
)
tabla
# Prueba de razón de verosimilitud entre ambos modelos anidados
anova(modelo1, modelo2)

El Modelo 2 explica el 86.6 por ciento de la variabilidad del costo, frente al 75.1 por ciento del Modelo 1, lo que representa una ganancia explicativa considerable. Esta mejora se sostiene incluso al penalizar la complejidad, pues tanto el criterio de Akaike como el de Bayes son menores para el Modelo 2, de modo que la incorporación de los nuevos términos compensa el costo de los parámetros añadidos. El análisis de varianza confirma que la diferencia entre ambos modelos es altamente significativa, con un valor de probabilidad muy inferior al nivel de significación convencional, lo que permite rechazar la hipótesis de que ambos modelos tienen igual capacidad de ajuste.

8 Diagnóstico del modelo y análisis de residuos

El diagnóstico evalúa el cumplimiento de los supuestos sobre los que descansa la validez del modelo. El análisis de residuos permite detectar patrones sistemáticos, verificar la normalidad y examinar la constancia de la varianza, mientras que el examen de la colinealidad valora la estabilidad de la interpretación de los coeficientes.

# Residuos frente a valores ajustados (homocedasticidad y linealidad)
plot(fitted(modelo2), residuals(modelo2),
     main = "Residuos frente a valores ajustados (Modelo 2)",
     xlab = "Valores ajustados", ylab = "Residuos",
     pch = 20, col = rgb(0, 0, 0, 0.4))
abline(h = 0, col = "red", lwd = 2)

El gráfico de residuos frente a valores ajustados no revela un patrón sistemático de embudo, lo que indica que la incorporación de la interacción entre fumador y obesidad absorbió buena parte de la estructura de varianza asociada a los costos elevados. La nube de puntos se distribuye de forma razonablemente equilibrada alrededor de cero, sin evidencia marcada de heterocedasticidad ni de una relación no lineal residual.

# Prueba de normalidad de Shapiro-Wilk sobre los residuos
sw <- shapiro.test(residuals(modelo2))
sw
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(modelo2)
## W = 0.48202, p-value < 0.00000000000000022
# Gráfico cuantil-cuantil
qqnorm(residuals(modelo2), pch = 20, col = rgb(0, 0, 0, 0.4),
       main = "Gráfico cuantil-cuantil de los residuos (Modelo 2)")
qqline(residuals(modelo2), col = "red", lwd = 2)

La prueba de Shapiro-Wilk arroja un valor de probabilidad muy inferior al nivel de significación, de modo que se rechaza el supuesto de normalidad de los residuos. El gráfico cuantil-cuantil confirma este resultado, pues los puntos se ajustan a la diagonal en la parte central de la distribución pero se desvían de forma pronunciada en la cola derecha. Esta desviación es coherente con la asimetría observada en la variable de respuesta y se concentra en los usuarios de costo extremo. Como prueba complementaria, la de Kolmogorov-Smirnov conduce a la misma conclusión. La consecuencia práctica de este incumplimiento es que la inferencia sobre los coeficientes individuales debe interpretarse con cautela, aunque la capacidad predictiva del modelo, validada de forma empírica en la sección anterior, no se ve comprometida por este hecho.

# Matriz de correlación entre las variables explicativas continuas
cor(datos[, c("age", "bmi", "children")])
##                age       bmi  children
## age      1.0000000 0.1092719 0.0424690
## bmi      0.1092719 1.0000000 0.0127589
## children 0.0424690 0.0127589 1.0000000
# Factor de inflación de la varianza calculado de forma manual para las
# variables continuas, regresando cada una sobre las demás
vif_manual <- function(variable, predictoras, datos) {
  formula_vif <- as.formula(paste(variable, "~", paste(predictoras, collapse = " + ")))
  r2 <- summary(lm(formula_vif, data = datos))$r.squared
  1 / (1 - r2)
}
c(age = vif_manual("age", c("bmi", "children"), datos),
  bmi = vif_manual("bmi", c("age", "children"), datos),
  children = vif_manual("children", c("age", "bmi"), datos))
##      age      bmi children 
## 1.013816 1.012152 1.001874

La matriz de correlación muestra asociaciones muy débiles entre las variables explicativas continuas, y los factores de inflación de la varianza se sitúan en valores cercanos a uno, muy por debajo del umbral de preocupación habitual. En consecuencia, no existe evidencia de colinealidad que distorsione la interpretación de los coeficientes, lo que refuerza la fiabilidad del modelo para identificar la contribución de cada factor al costo.

9 Interpretación de resultados

Los resultados convergen en una interpretación coherente con el problema planteado. El costo individual de la atención médica se explica de manera sólida a partir de las características de los usuarios, y la condición de fumador, en especial cuando coincide con la obesidad, constituye el determinante de mayor magnitud. La interacción entre ambos factores eleva de forma sustancial el costo esperado, lo que confirma que el efecto del hábito de fumar no es aditivo, sino que se amplifica en presencia de obesidad. Esta conclusión, anticipada por el análisis descriptivo y formalizada por el modelo, tiene implicaciones directas para la gestión, pues identifica un subgrupo de usuarios de alto costo sobre el cual conviene focalizar las estrategias de prevención y la previsión presupuestal.

Desde la perspectiva metodológica, el Modelo 2 demostró ser preferible al modelo lineal de referencia bajo todos los criterios examinados. Su mayor capacidad explicativa se acompañó de una mejora en la precisión predictiva fuera de muestra, verificada de forma independiente mediante la partición entrenamiento-prueba y la validación cruzada, y de un mejor desempeño en los criterios de información, que penalizan la complejidad innecesaria. El único supuesto claramente incumplido fue el de normalidad de los residuos, atribuible a la cola de usuarios de costo extremo, lo que invita a interpretar la inferencia sobre coeficientes individuales con prudencia, sin que ello afecte la validez de las predicciones.

10 Conclusiones

La validación y el testeo del modelo confirmaron que la especificación que incorpora el término cuadrático de la edad, el indicador de obesidad y la interacción entre fumador y obesidad representa con mayor fidelidad la realidad del costo de la atención y genera predicciones más confiables que el modelo lineal de referencia. La coincidencia de los resultados de la partición simple y de la validación cruzada otorga robustez a esta conclusión, pues la superioridad del modelo no depende de una partición particular de los datos.

En el marco de la planificación de recursos sanitarios, un modelo validado de esta forma reduce la incertidumbre en la estimación del gasto y permite anticipar la concentración del costo en subgrupos de alto riesgo, lo que contribuye a una asignación más eficiente y equitativa de los recursos. El proceso seguido ilustra, además, que la utilidad de un modelo no se establece por su ajuste a los datos con los que fue construido, sino por su capacidad demostrada de generalizar a observaciones nuevas, principio que orienta toda decisión de gestión sustentada en evidencia cuantitativa.

11 Referencias

Kuhn, M., & Johnson, K. (2013). Applied predictive modeling. Springer.

Raschka, S. (2018). Model evaluation, model selection, and algorithm selection in machine learning. arXiv preprint arXiv:1811.12808.

Steyerberg, E. W., & Vergouwe, Y. (2014). Towards better clinical prediction models: Seven steps for development and an ABCD for validation. European Heart Journal, 35(29), 1925-1931.