La gestión eficiente de los recursos sanitarios constituye uno de los principales desafíos de las organizaciones de salud. El incremento de los costos asistenciales, la complejidad clínica de los pacientes y la necesidad de optimizar la utilización de recursos hospitalarios han impulsado el desarrollo de herramientas analíticas que permitan comprender los factores asociados al comportamiento financiero de la atención.
Los Grupos Relacionados por Diagnóstico (GRD) representan un sistema de clasificación que agrupa pacientes con características clínicas similares y patrones comparables de consumo de recursos. Debido a su amplia utilización en la gestión hospitalaria, resulta relevante identificar qué variables explican mejor el comportamiento de los pagos asociados a cada grupo diagnóstico.
En este contexto, el modelamiento matemático y estadístico constituye una herramienta útil para analizar la relación existente entre variables asistenciales y financieras, facilitando la toma de decisiones basada en evidencia para la gestión de recursos sanitarios.
¿Qué modelo matemático explica mejor el comportamiento del pago máximo asociado a los grupos relacionados por diagnóstico (GRD), considerando variables relacionadas con la estancia hospitalaria y los cargos hospitalarios?
Construir y evaluar modelos matemáticos que permitan explicar el comportamiento del pago máximo asociado a los grupos relacionados por diagnóstico (GRD), utilizando variables relacionadas con la estancia hospitalaria y los cargos hospitalarios.
Se realizó un estudio cuantitativo utilizando la base de datos 2022-msdrg.csv. Se efectuó un proceso de limpieza y depuración de datos, seguido de análisis exploratorio, estadística descriptiva, modelamiento matemático y validación estadística.
Para la estimación de los parámetros se empleó el método de Mínimos Cuadrados Ordinarios (MCO) mediante la función lm() de R.
Se construyeron tres modelos matemáticos:
Modelo 1: Regresión lineal simple.
Modelo 2: Regresión lineal múltiple.
Modelo 3: Regresión cuadrática.
Posteriormente se compararon utilizando los criterios AIC, BIC, RMSE y R² ajustado.
# Importación de la base
datos_raw <- read.csv(
"2022-msdrg.csv",
header = FALSE,
stringsAsFactors = FALSE
)
# Limpieza y depuración
datos_limpios <- datos_raw[19:nrow(datos_raw), ]
names(datos_limpios) <- as.character(datos_raw[18, ])
datos_limpios <- datos_limpios[, 1:9]
# Conversión de variables numéricas
datos_limpios$`MS DRG V38` <- as.numeric(datos_limpios$`MS DRG V38`)
datos_limpios$`Min LOS` <- as.numeric(datos_limpios$`Min LOS`)
datos_limpios$`Max LOS` <- as.numeric(datos_limpios$`Max LOS`)
datos_limpios$`Min of Gross Charges` <- as.numeric(datos_limpios$`Min of Gross Charges`)
datos_limpios$`Max of Gross Charges` <- as.numeric(datos_limpios$`Max of Gross Charges`)
datos_limpios$`Min of Payment` <- as.numeric(datos_limpios$`Min of Payment`)
datos_limpios$`Max of Payment` <- as.numeric(datos_limpios$`Max of Payment`)
# Definición de variables
Y <- datos_limpios$`Max of Payment`
X1 <- datos_limpios$`Max LOS`
X2 <- datos_limpios$`Max of Gross Charges`
# Modelos matemáticos
modelo_1 <- lm(Y ~ X1, data = datos_limpios)
modelo_2 <- lm(Y ~ X1 + X2, data = datos_limpios)
modelo_3 <- lm(Y ~ X1 + I(X1^2), data = datos_limpios)
# Comparación de modelos
rmse_1 <- sqrt(mean(residuals(modelo_1)^2, na.rm = TRUE))
rmse_2 <- sqrt(mean(residuals(modelo_2)^2, na.rm = TRUE))
rmse_3 <- sqrt(mean(residuals(modelo_3)^2, na.rm = TRUE))
comparacion_modelos <- data.frame(
Modelo = c("Modelo 1: lineal simple",
"Modelo 2: lineal multiple",
"Modelo 3: cuadratico"),
AIC = c(AIC(modelo_1), AIC(modelo_2), AIC(modelo_3)),
BIC = c(BIC(modelo_1), BIC(modelo_2), BIC(modelo_3)),
RMSE = c(rmse_1, rmse_2, rmse_3),
R2_Ajustado = c(
summary(modelo_1)$adj.r.squared,
summary(modelo_2)$adj.r.squared,
summary(modelo_3)$adj.r.squared
)
)
La base de datos utilizada correspondió al archivo 2022-msdrg.csv, conformado por información relacionada con los Grupos Relacionados por Diagnóstico (GRD), estancia hospitalaria, cargos hospitalarios y pagos asociados.
Después del proceso de limpieza y depuración, la base final quedó conformada por 6.522 observaciones y 9 variables de interés para el análisis.
dim(datos_limpios)
## [1] 6522 9
str(datos_limpios)
## 'data.frame': 6522 obs. of 9 variables:
## $ 16 : chr "17" "18" "19" "20" ...
## $ MS DRG V38 : num 1 2 3 4 11 20 23 25 26 27 ...
## $ MS DRG V38 Description: chr "HEART TRANSPLANT OR IMPLANT OF HEART ASSIST SYSTEM WITH MCC" "HEART TRANSPLANT OR IMPLANT OF HEART ASSIST SYSTEM WITHOUT MCC" "ECMO OR TRACHEOSTOMY WITH MV >96 HOURS OR PRINCIPAL DIAGNOSIS EXCEPT FACE, MOUTH AND NECK WITH MAJOR O.R. PROCEDURES" "TRACHEOSTOMY WITH MV >96 HOURS OR PRINCIPAL DIAGNOSIS EXCEPT FACE, MOUTH AND NECK WITHOUT MAJOR O.R. PROCEDURES" ...
## $ Min LOS : num 16 15 1 25 30 23 2 1 1 1 ...
## $ Max LOS : num 16 15 90 210 30 32 17 32 21 9 ...
## $ Min of Gross Charges : num 652673 434229 129150 361120 357201 ...
## $ Max of Gross Charges : num 652673 434229 2660946 2769066 357201 ...
## $ Min of Payment : num 70096 50776 4381 69452 29371 ...
## $ Max of Payment : num 714571 494400 2213907 2303863 297191 ...
correlacion_1 <- cor(
X1,
Y,
use="complete.obs")
correlacion_2 <- cor(
X2,
Y,
use="complete.obs")
correlacion_1
## [1] 0.856112
correlacion_2
## [1] 0.9040733
Se identificó una asociación positiva entre la estancia hospitalaria máxima y el pago máximo, observándose una relación aún más fuerte entre los cargos hospitalarios máximos y el pago máximo. # 6. Estadística Descriptiva
Se calcularon medidas de tendencia central, dispersión y forma para la variable Max of Payment.
mean(datos_limpios$`Max of Payment`,
na.rm=TRUE)
## [1] 144000.9
median(datos_limpios$`Max of Payment`,
na.rm=TRUE)
## [1] 60254.58
sd(datos_limpios$`Max of Payment`,
na.rm=TRUE)
## [1] 256175.7
var(datos_limpios$`Max of Payment`,
na.rm=TRUE)
## [1] 65625972485
range(datos_limpios$`Max of Payment`,
na.rm=TRUE)
## [1] 4478 2522619
library(moments)
skewness(
datos_limpios$`Max of Payment`,
na.rm=TRUE)
## [1] 4.815963
kurtosis(
datos_limpios$`Max of Payment`,
na.rm=TRUE)
## [1] 32.13031
outliers <- boxplot.stats(
datos_limpios$`Max of Payment`
)$out
length(outliers)
## [1] 752
summary(outliers)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 292636 370098 470749 658247 661706 2522619
Se identificaron 752 valores atípicos, lo cual es consistente con la alta variabilidad observada en los costos y pagos asociados a procedimientos hospitalarios de distinta complejidad.
Con el objetivo de identificar el modelo que mejor explica el comportamiento del pago máximo asociado a los grupos relacionados por diagnóstico (GRD), se construyeron tres modelos matemáticos.
Función estructural:
\[Y=\beta_0+\beta_1X_1+\varepsilon\]
summary(modelo_1)
##
## Call:
## lm(formula = Y ~ X1, data = datos_limpios)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1687218 -18263 965 17568 1581776
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -376.84 1994.92 -0.189 0.85
## X1 9363.58 71.14 131.613 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 132400 on 6312 degrees of freedom
## (208 observations deleted due to missingness)
## Multiple R-squared: 0.7329, Adjusted R-squared: 0.7329
## F-statistic: 1.732e+04 on 1 and 6312 DF, p-value: < 2.2e-16
Donde:
El modelo presentó un R² ajustado de aproximadamente 0.733, indicando que el 73,3% de la variabilidad observada en el pago máximo puede ser explicada por la estancia hospitalaria máxima.
Función estructural:
\[Y=\beta_0+\beta_1X_1+\beta_2X_2+\varepsilon\]
summary(modelo_2)
##
## Call:
## lm(formula = Y ~ X1 + X2, data = datos_limpios)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1594696 -8672 2233 17856 713262
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.329e+03 1.653e+03 3.224 0.00127 **
## X1 9.447e+01 1.814e+02 0.521 0.60259
## X2 6.443e-01 1.193e-02 54.012 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 109500 on 6311 degrees of freedom
## (208 observations deleted due to missingness)
## Multiple R-squared: 0.8174, Adjusted R-squared: 0.8173
## F-statistic: 1.412e+04 on 2 and 6311 DF, p-value: < 2.2e-16
Donde:
Este modelo obtuvo un R² ajustado de aproximadamente 0.817, mostrando una capacidad explicativa superior a los demás modelos evaluados.
Función estructural:
\[Y=\beta_0+\beta_1X_1+\beta_2X_1^2+\varepsilon\]
summary(modelo_3)
##
## Call:
## lm(formula = Y ~ X1 + I(X1^2), data = datos_limpios)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1717376 -18440 176 16888 1584582
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1325.860 2345.747 0.565 0.572
## X1 9174.286 154.562 59.357 <2e-16 ***
## I(X1^2) 1.547 1.121 1.380 0.168
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 132400 on 6311 degrees of freedom
## (208 observations deleted due to missingness)
## Multiple R-squared: 0.733, Adjusted R-squared: 0.7329
## F-statistic: 8663 on 2 and 6311 DF, p-value: < 2.2e-16
El término cuadrático no presentó significancia estadística (p>0.05), por lo que este modelo no mejoró el ajuste respecto al modelo lineal simple.
Con base en los resultados obtenidos, el Modelo 2 fue seleccionado para realizar el proceso de validación y testeo.
comparacion_modelos
## Modelo AIC BIC RMSE R2_Ajustado
## 1 Modelo 1: lineal simple 166851.7 166871.9 132378.6 0.7328854
## 2 Modelo 2: lineal multiple 164454.5 164481.5 109472.7 0.8172985
## 3 Modelo 3: cuadratico 166851.8 166878.8 132358.7 0.7329236
El Modelo 2 presentó:
Menor AIC
Menor BIC
Menor RMSE
Mayor R² ajustado
Por esta razón fue seleccionado como el modelo con mejor desempeño estadístico.
library(lmtest)
bptest(modelo_2)
##
## studentized Breusch-Pagan test
##
## data: modelo_2
## BP = 1721.3, df = 2, p-value < 2.2e-16
La prueba de Breusch-Pagan evidenció heterocedasticidad (p<0.05), indicando que la varianza de los residuos no permanece constante.
qqnorm(
residuals(modelo_2),
main="QQ Plot de residuos"
)
qqline(
residuals(modelo_2),
col="red",
lwd=2
)
El QQ Plot mostró desviaciones importantes respecto a la distribución normal, principalmente en las colas de la distribución.
plot(
modelo_2$fitted.values,
modelo_2$residuals,
main="Residuos vs Valores Ajustados",
xlab="Valores Ajustados",
ylab="Residuos",
pch=19,
col="darkgreen"
)
abline(
h=0,
col="red",
lwd=2
)
La dispersión creciente observada en el gráfico es consistente con la presencia de heterocedasticidad.
El Modelo 2 alcanzó un R² ajustado de 0.8173, indicando que aproximadamente el 81,7% de la variabilidad observada en el pago máximo es explicada por las variables incluidas en el modelo.
predicciones <- predict(modelo_2)
observados <- modelo_2$model$Y
plot(
observados,
predicciones,
main="Valores observados vs predichos",
xlab="Valores observados",
ylab="Valores predichos",
pch=19,
col="blue"
)
abline(
0,
1,
col="red",
lwd=2
)
La proximidad de las observaciones a la línea de identidad evidencia una
adecuada capacidad predictiva del modelo seleccionado.
Los resultados obtenidos evidencian que el comportamiento del pago máximo asociado a los grupos relacionados por diagnóstico (GRD) puede ser explicado adecuadamente mediante modelos matemáticos basados en variables relacionadas con la utilización de recursos hospitalarios.
El Modelo 1 permitió establecer una relación lineal entre la estancia hospitalaria máxima y el pago máximo, explicando aproximadamente el 73,3 % de la variabilidad observada.
La incorporación de los cargos hospitalarios máximos en el Modelo 2 mejoró sustancialmente la capacidad explicativa del modelo, alcanzando un R² ajustado de 0,8173, además de presentar los menores valores de AIC, BIC y RMSE.
Por otra parte, el Modelo 3 evaluó una posible relación no lineal mediante la incorporación de un término cuadrático; sin embargo, dicho término no presentó significancia estadística, por lo cual no aportó mejoras en el ajuste del modelo.
Durante el proceso de validación se identificó heterocedasticidad mediante la prueba de Breusch-Pagan, así como desviaciones respecto a la normalidad de los residuos observadas en el QQ Plot. No obstante, estas limitaciones son frecuentes en bases de datos hospitalarias de alta complejidad, como las asociadas a los GRD, debido a la heterogeneidad clínica y financiera de los pacientes atendidos.
En conjunto, los hallazgos sugieren que el Modelo 2 constituye una herramienta útil para apoyar procesos de análisis financiero, planeación y toma de decisiones en la gestión de recursos sanitarios. # 11. Conclusiones
Se construyeron y compararon tres modelos matemáticos con el propósito de explicar el comportamiento del pago máximo asociado a los grupos relacionados por diagnóstico (GRD).
El Modelo 2, correspondiente a una regresión lineal múltiple, fue seleccionado como el modelo con mejor desempeño estadístico, debido a que presentó el menor AIC, menor BIC, menor RMSE y el mayor R² ajustado.
Este modelo logró explicar aproximadamente el 81,7 % de la variabilidad observada en el pago máximo, evidenciando que la estancia hospitalaria máxima y los cargos hospitalarios máximos son variables relevantes para comprender el comportamiento financiero de la atención hospitalaria.
El análisis de supuestos permitió identificar heterocedasticidad y desviaciones respecto a la normalidad de los residuos. Sin embargo, estas características son esperables en bases de datos hospitalarias basadas en GRD debido a la alta variabilidad en la complejidad clínica y el consumo de recursos.
Desde la perspectiva de la administración en salud, el modelamiento matemático constituye una estrategia valiosa para fortalecer la toma de decisiones basada en evidencia, optimizar la gestión de recursos sanitarios y mejorar la comprensión de los factores asociados al comportamiento de los costos hospitalarios. # 12. Referencias Centers for Medicare & Medicaid Services (CMS). Medicare Severity Diagnosis Related Groups (MS-DRG). United States Department of Health and Human Services.
James, G., Witten, D., Hastie, T., & Tibshirani, R. (2021). An Introduction to Statistical Learning. Springer.
Montgomery, D. C., Peck, E. A., & Vining, G. G. (2021). Introduction to Linear Regression Analysis. Wiley.
R Core Team. (2026). R: A Language and Environment for Statistical Computing. Vienna, Austria.