La base que vamos a trabajar se llama Sore.xlsx
y esta contiene las variables Y=sore, que indica si la persona sufrió
dolores de garganta después de pasar por una cirugía en la que fue
necesario usar anesteria general.
Las variables regresoras que estudiaré son el tipo de
mecanismo respiratorio usado y la
duración de la cirugía.
Instrucciones:
Ajusta el mejor modelo de regresión logística, a partir de éste ejercicio:
Presenta el modelo final
Realiza un análisis de los parámetros estimados.
¿Tienen sentido los resultados obtenidos?
library(readxl)
setwd("C:/Users/josep_o4goibb/Documents/2025-2/1- Cat Dat/11- Trabajo Final")
datos <- read_excel("Sore.xlsx", sheet = 1)
unique(datos$type)
## [1] "mask" "tube"
#DAT - type - Error Mask and Tube
datos$type <- factor(datos$type, levels = c("mask", "tube"))
unique(datos$type)
## [1] mask tube
## Levels: mask tube
str(datos)
## tibble [35 × 3] (S3: tbl_df/tbl/data.frame)
## $ duration: num [1:35] 45 15 40 83 90 25 35 65 95 35 ...
## $ type : Factor w/ 2 levels "mask","tube": 1 1 1 2 2 2 1 1 1 1 ...
## $ sore : num [1:35] 0 0 1 1 1 1 1 1 1 1 ...
# Modelo nulo (sin predictores)
m0 <- glm(sore ~ 1, data = datos, family = binomial)
# Solo type
m1 <- glm(sore ~ type, data = datos, family = binomial)
# Solo duración
m2 <- glm(sore ~ duration, data = datos, family = binomial)
# Modelo completo
m3 <- glm(sore ~ type + duration, data = datos, family = binomial)
# --------------------------------------------------------
# 4. COMPARACIÓN DE MODELOS POR AIC
# --------------------------------------------------------
AIC(m0, m1, m2, m3)
## df AIC
## m0 1 48.17981
## m1 2 46.57757
## m2 2 37.65134
## m3 3 36.13794
# --------------------------------------------------------
# 5. SELECCIÓN AUTOMÁTICA step() con AIC
# --------------------------------------------------------
mejor_modelo <- step(m3, direction = "both", trace = FALSE)
# Mostrar el modelo seleccionado
summary(mejor_modelo)
##
## Call:
## glm(formula = sore ~ type + duration, family = binomial, data = datos)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.41734 1.09457 -1.295 0.19536
## typetube -1.65895 0.92285 -1.798 0.07224 .
## duration 0.06868 0.02641 2.600 0.00931 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 46.180 on 34 degrees of freedom
## Residual deviance: 30.138 on 32 degrees of freedom
## AIC: 36.138
##
## Number of Fisher Scoring iterations: 5
# --------------------------------------------------------
# 6. RESULTADOS FINALES
# --------------------------------------------------------
cat("\nModelo seleccionado por AIC:\n")
##
## Modelo seleccionado por AIC:
print(formula(mejor_modelo))
## sore ~ type + duration
cat("\nCoeficientes del modelo:\n")
##
## Coeficientes del modelo:
print(coef(summary(mejor_modelo)))
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.41734131 1.0945708 -1.294883 0.195360521
## typetube -1.65894910 0.9228542 -1.797629 0.072235877
## duration 0.06867778 0.0264112 2.600328 0.009313474
De esta manera, observando el AIC seleccione el modelo:
\[ \text{sore} \sim \text{type} + \text{duration} \]
Lo que quiere decir que, la probabilidad de dolor de garganta depende
de el tipo de dispositivo respiratorio (mask o
tube) y de la duración de la cirugía ( en
minutos)
Una vez que ya hice el summary( ) puedo identificar mis valores para poner en la ecuación logística:
\[ \log\left(\frac{p}{1-p}\right) = -1.4173 - 1.6589 \cdot I(\text{tube}) + 0.0687 \cdot \text{duration} \]
Aquí puedo ver que mi categoría base es mask y que el
valor de \(I(tube)=1\) si y solo si
type = tube
coef(summary(mejor_modelo))
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.41734131 1.0945708 -1.294883 0.195360521
## typetube -1.65894910 0.9228542 -1.797629 0.072235877
## duration 0.06867778 0.0264112 2.600328 0.009313474
Por parte del intercepto el cuál es \(\beta_{0}=-1.4173\) no me esta dando una
logica interpretación , lo unico que me da a entender es que esto se da
cuando la duration=0 y type= mask
Ahora dado que \(\beta_{1}= -1.6589\) y \(p=0.072\) , mi primer coeficiente me esta diciendo que el tube, reduce el riesgo del dolor y es marginalmente significativo por que cae en la desigualdad (\(p<0.10\))
Ahora tomaré el Odds Ratio
exp(-1.6589)
## [1] 0.1903482
De esta manera usar el método del tubo reduce las odds (razón de probabilidades) de experimentar dolor aproximadamente en un 81% en comparación con usar la mascarilla, ya que el odds ratio estimado es 0.19
Tomo el valor que me dio en \(\beta_{2}\) con su debido \(p=0.009\) para poderlo interpretar
exp(0.0687)
## [1] 1.071115
Esto me quiere decir que el \(OR = 1.07\), es decir que por cada minuto adicional de duración del procedimiento, las odds de experimentar dolor aumentan aproximadamente en un 7%, según el odds ratio estimado.
Ahora, a partir del modelo logístico ajustado, se calcularon las
probabilidades estimadas de experimentar dolor para cada individuo dadas
sus covariables, esto mediante la función predict() con el
argumento type = "response". Esta opción transforma los
log-odds estimados por el modelo en probabilidades comprendidas entre 0
y 1, lo cual permite interpretar directamente la probabilidad estimada
del evento.
datos$prob_pred <- predict(mejor_modelo, type = "response")
head(datos)
## # A tibble: 6 × 4
## duration type sore prob_pred
## <dbl> <fct> <dbl> <dbl>
## 1 45 mask 0 0.842
## 2 15 mask 0 0.404
## 3 40 mask 1 0.791
## 4 83 tube 1 0.932
## 5 90 tube 1 0.957
## 6 25 tube 1 0.204
Los resultados obtenidos del modelo logístico no solo poseen solidez estadística, sino que también exhiben una notable coherencia clínica y una profunda plausibilidad práctica, alineándose con las expectativas fisiológicas y las observaciones empíricas en el ámbito de los procedimientos de anestesia y manejo de la vía aérea.
El modelo sugiere que el uso del tubo endotraqueal (\(I(\text{tube})\)) está asociado con una reducción en las odds de desarrollar dolor de garganta (sore throat) en comparación con el uso de la mascarilla laríngea.Esta relación es clínicamente razonable. Aunque la intubación endotraqueal es un procedimiento invasivo, el tubo es diseñado para permanecer estable y sellar la tráquea. En contraste, la mascarilla laríngea puede, en ciertos casos o con movimientos del paciente, generar una mayor fricción o presión errática contra las estructuras delicadas de la orofaringe, lo que potencialmente induce más irritación posoperatoria. La ligera significación marginal del efecto subraya la importancia de la técnica de inserción y el ajuste preciso en ambos dispositivos.
Para eel impacto de la duración de la cirugía es inequívocamente lógico y coherente con la fisiopatología de la irritación de la vía aérea.El coeficiente positivo estimado indica que a mayor duración de la cirugía, mayor es el riesgo de desarrollar dolor de garganta. El modelo cuantifica este riesgo: estima un aumento del 7% en las odds de experimentar dolor por cada minuto adicional de exposición a la anestesia. Este incremento progresivo es plausible, ya que un tiempo prolongado resulta en:
Mayor exposición de las mucosas al flujo de gases anestésicos secos.
Mayor tiempo de contacto del dispositivo (tubo o mascarilla) con la pared faríngea y laríngea.
Mayor probabilidad de microtraumatismos acumulados o manipulación del sistema durante el procedimiento extendido.
Así que la dirección de los efectos, tubo reduciendo el riesho y la mayor duración aumentandola concuerda con la lógica clínica del fenómeno estudiado. Así mismo la magnitud de estos efectos resulta razonable y consistente con la evidencia esperada.