Tengo algunos datos sobre vuelos de aerolíneas (en un marco de datos llamado flights
) y me gustaría ver si el tiempo de vuelo tiene algún efecto sobre la probabilidad de una llegada significativamente retrasada (es decir, 10 o más minutos). Pensé en utilizar la regresión logística, con el tiempo de vuelo como el predictor y si cada vuelo se retrasó significativamente (un montón de Bernoullis) como la respuesta. Utilicé el siguiente código...
flights$BigDelay <- flights$ArrDelay >= 10
delay.model <- glm(BigDelay ~ ArrDelay, data=flights, family=binomial(link="logit"))
summary(delay.model)
...pero obtuve la siguiente salida.
> flights$BigDelay <- flights$ArrDelay >= 10
> delay.model <- glm(BigDelay ~ ArrDelay, data=flights, family=binomial(link="logit"))
Warning messages:
1: In glm.fit(x = X, y = Y, weights = weights, start = start, etastart = etastart, :
algorithm did not converge
2: In glm.fit(x = X, y = Y, weights = weights, start = start, etastart = etastart, :
fitted probabilities numerically 0 or 1 occurred
> summary(delay.model)
Call:
glm(formula = BigDelay ~ ArrDelay, family = binomial(link = "logit"),
data = flights)
Deviance Residuals:
Min 1Q Median 3Q Max
-3.843e-04 -2.107e-08 -2.107e-08 2.107e-08 3.814e-04
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -312.14 170.26 -1.833 0.0668 .
ArrDelay 32.86 17.92 1.833 0.0668 .
---
Signif. codes: 0 â***â 0.001 â**â 0.01 â*â 0.05 â.â 0.1 â â 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 2.8375e+06 on 2291292 degrees of freedom
Residual deviance: 9.1675e-03 on 2291291 degrees of freedom
AIC: 4.0092
Number of Fisher Scoring iterations: 25
¿Qué significa que el algoritmo no converge? Pensé que era porque el BigDelay
valores eran TRUE
y FALSE
en lugar de 0
y 1
pero tengo el mismo error después de convertir todo. ¿Alguna idea?
2 votos
El primer pensamiento: Separación perfecta es decir, el predictor es "demasiado bueno", los logaritmos llegan a +/- infinito y todo se viene abajo. Segunda reflexión: ¿El código hace lo que crees que hace? Los nombres de las variables no parecen coincidir con tu descripción. Podrías explicar con más precisión cuáles son los datos, ya que parece que puede estar tratando de predecir algo con ella misma.
1 votos
No estoy seguro de merecer el "aceptar". La respuesta de @Conjugate Prior explicaba lo que estaba mal en tu modelo. Me pareció que valía la pena explicar la advertencia que mencionó en términos del algoritmo.
5 votos
Si dispone de los tiempos de retardo reales, es probable que obtenga mejor información modelándolos, en lugar de reducirlos a una variable binaria.
0 votos
Relacionado pregunta
0 votos
Puede probar la función glm1(). Supera el problema de convergencia