Problemática de investigación

La inasistencia a citas médicas es un problema recurrente en los hospitales, que afecta la eficiencia en el uso de recursos y genera barreras en el acceso oportuno a la atención.
Pregunta de investigación: ¿Qué factores influyen en la asistencia a citas médicas y cómo impactan en la eficiencia hospitalaria?

Cargar librerías

En esta sección se cargan las librerías necesarias para realizar el análisis estadístico, la manipulación de datos, la construcción de modelos y la elaboración de gráficos.

library(ggplot2) library(dplyr) library(readr) library(caret)

Importar base de datos

appointments <- read_csv(“appointments.csv”) names(appointments)

Ver valores únicos de la columna ‘status’

unique(appointments$status)

Ver estructura de la base

str(appointments)

Contar valores faltantes por columna

colSums(is.na(appointments))

Exploración inicial

str(appointments) colSums(is.na(appointments))

Ver estructura de la base

str(appointments)

Contar valores faltantes por columna

colSums(is.na(appointments))

Estadísticas descriptivas

Se realizó una exploración inicial de la base de datos con el propósito de conocer la distribución de las principales variables relacionadas con la asistencia a citas médicas.

par(mfrow=c(2,2)) hist(appointments\(age, main="Distribución de Edad", col="lightblue", xlab="Edad") barplot(table(appointments\)sex), main=“Distribución por sexo”, col=“lightgreen”) barplot(table(appointments\(age_group), main="Distribución por grupos de edad", col="lightyellow") barplot(table(appointments\)status), main=“Estado de las citas médicas”, col=“lightpink”)

Modelo matemático: Regresión logística binaria

appointments <- appointments %>% mutate(no_show = ifelse(status == “did not attend”, 1, 0))

modelo_logistico <- glm(no_show ~ age + sex + waiting_time, data = appointments, family = binomial)

modelo_lineal <- lm(waiting_time ~ age + sex, data = appointments) summary(modelo_lineal)

Resumen estadístico de todas las variables

summary(modelo_logistico)

Interpretación

El modelo logístico permite evaluar el efecto de variables como la edad, el sexo y el tiempo de espera sobre la probabilidad de inasistencia. Los coeficientes obtenidos muestran la dirección y magnitud de la relación entre estas variables y el evento de no asistir a la cita.

summary(modelo_lineal)

#Validación y testeo del modelo logístico#

par(mfrow=c(2,2)) plot(modelo_logistico)

Validación cruzada

set.seed(123) train_control <- trainControl(method=“cv”, number=5) modelo_cv <- train(no_show ~ age + sex + waiting_time, data=appointments, method=“glm”, family=“binomial”, trControl=train_control) print(modelo_cv)

#Modelo matemático: Regresión lineal múltiple#

appointments\(sex <- as.factor(appointments\)sex)

modelo_lineal <- lm(waiting_time ~ age + sex, data=appointments) summary(modelo_lineal)

#Comparación de modelos# comparacion <- data.frame( Modelo = c(“Regresión Logística Binaria”,“Regresión Lineal Múltiple”), Indicador = c(“AIC”,“R²”), Valor = c(AIC(modelo_logistico), round(summary(modelo_lineal)$r.squared, 4)) ) comparacion

#Indicadores de eficiencia hospitalaria#

Tasa global de inasistencia

tasa_inasistencia <- mean(appointments$no_show) tasa_inasistencia

Tasa de inasistencia por sexo

tasa_inasistencia_sexo <- appointments %>% group_by(sex) %>% summarise(inasistencia = mean(no_show)) tasa_inasistencia_sexo

#Gráficos de comportamiento y variabilidad#

Edad vs probabilidad de faltar

ggplot(appointments, aes(x=age, y=no_show)) + geom_jitter(alpha=0.4, color=“blue”) + geom_smooth(method=“glm”, method.args=list(family=“binomial”), se=FALSE, color=“black”) + labs(title=“Comportamiento de la asistencia según edad”, x=“Edad”, y=“Probabilidad de faltar”)

Sexo vs variabilidad

ggplot(appointments, aes(x=factor(sex), y=no_show, fill=factor(sex))) + geom_boxplot() + labs(title=“Variabilidad de la asistencia según sexo”, x=“Sexo”, y=“Probabilidad de faltar”)

Conclusiones