J'ai quelques données sur les vols des compagnies aériennes (dans une trame de données appelée flights
) et j'aimerais voir si le temps de vol a un effet sur la probabilité d'une arrivée considérablement retardée (c'est-à-dire 10 minutes ou plus). Je pensais utiliser une régression logistique, avec le temps de vol comme facteur de prévision et si chaque vol était retardé de manière significative (un groupe de Bernoullis) comme réponse. J'ai utilisé le code suivant ...
flights$BigDelay <- flights$ArrDelay >= 10
delay.model <- glm(BigDelay ~ ArrDelay, data=flights, family=binomial(link="logit"))
summary(delay.model)
... mais j'ai eu la sortie suivante.
> 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'est-ce que cela signifie que l'algorithme n'a pas convergé? Je pensais que c'était parce que les BigDelay
valeurs étaient TRUE
et FALSE
au lieu de 0
et 1
, mais j'ai eu la même erreur après avoir tout converti. Des idées?
r
logistic
separation
Daniel Standage
la source
la source
Réponses:
glm()
utilise un algorithme itératif des moindres carrés re-pondéré. L'algorithme atteint le nombre maximal d'itérations autorisées avant la convergence de signalisation. La valeur par défaut, documentée dans,?glm.control
est 25. Vous transmettez les paramètres de contrôle sous forme de liste dans l'glm
appel:Comme @Conjugate Prior dit, vous semblez prédire la réponse avec les données utilisées pour la générer. Vous avez une séparation complète, comme
ArrDelay < 10
le prédisentFALSE
tousArrDelay >= 10
les prédictionsTRUE
. L'autre message d'avertissement vous indique que les probabilités ajustées pour certaines observations sont bien égales à 0 ou 1, ce qui est un bon indicateur du fait que quelque chose ne va pas dans le modèle.Les deux avertissements peuvent aller de pair. La fonction de vraisemblance peut être assez plate quand certains deviennent grands, comme dans votre exemple. Si vous autorisez plus d'itérations, les coefficients du modèle divergent davantage si vous rencontrez un problème de séparation.β^je
la source
Vous pouvez essayer de vérifier si la réduction de biais de Firth fonctionne avec votre jeu de données. Il s'agit d'une approche de vraisemblance pénalisée qui peut être utile pour les jeux de données qui produisent des divergences à l'aide du
glm
package standard . Parfois, il peut être utilisé au lieu d'éliminer cette variable qui produit une séparation complète / presque complète.Pour la formulation de la réduction du biais (le terme dans le développement asymptotique du biais de l'estimateur du maximum de vraisemblance est supprimée en utilisant le développement classique des cumulants comme exemple motivant), veuillez consulter http: // biomet. oxfordjournals.org/content/80/1/27.abstractO(n−1)
La réduction de biais de Firth est implémentée dans le package R
logistf
: http://cran.r-project.org/web/packages/logistf/logistf.pdfla source