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 librerias# library(ggplot2) library(dplyr) library(readr) library(caret)
appointments <- read_csv(“C:/Users/lctor/Downloads/appointments.csv”) names(appointments)
unique(appointments$status)
str(appointments)
colSums(is.na(appointments))
str(appointments) colSums(is.na(appointments))
str(appointments)
colSums(is.na(appointments))
#ESTADISTICAS DESCRIPTIVAS# 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)
summary(modelo_logistico) summary(modelo_lineal)
#Validación y testeo del modelo logístico#
par(mfrow=c(2,2)) plot(modelo_logistico)
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_inasistencia <- mean(appointments$no_show) tasa_inasistencia
tasa_inasistencia_sexo <- appointments %>% group_by(sex) %>% summarise(inasistencia = mean(no_show)) tasa_inasistencia_sexo
#Gráficos de comportamiento y variabilidad#
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”)
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”)