Régression logistique Eugénie Dostie-Goulet Plan de la présentation Pourquoi une régression logistique? La régression logistique Les « odds ratio » ou rapports de probabilité La prédiction
Les probabilités
Pourquoi la régression logistique? Les cas qu’on étudie ne sont pas toujours linéaires (en fait, rarement) Déclarer la guerre ou non? Financer un programme ou non? Voter ou non? La régression logistique s’applique aux situations où la variable dépendante se limite à deux choix. Ce qui nous intéresse, c’est de savoir si les variables indépendantes X peuvent prédire l’appartenance de Y à l’une ou l’autre des deux catégories. Et si oui, selon quelle probabilité.
Pourquoi la régression logistique? Mais pourquoi ne pas utiliser la régression MCO? Parce que celle-ci n’est pas contrainte à prendre des valeurs entre 0 et 1. Effet estimé souvent sous-estimé ou exagéré L’erreur est très élevée On préfère donc utiliser une régression logistique y = p = exp(a + β1*x1 + ... + βk*xk)/(1+exp(a + β1*x1 + ... + βk*xk)) y = toujours entre 0 et 1 (probabilité)
Notre étude Les données L’hypothèse Les attentes L’étude électorale canadienne 2008 L’hypothèse Les Canadiens qui croient que l’obéissance est plus importante que l’autonomie chez les enfants sont plus susceptibles d’être en faveur de la peine de mort Les attentes Nous nous attendons à une relation forte entre nos deux variables
La régression logistique Variable dépendante: 1 = en faveur de la peine de mort 0 = contre la peine de mort Variables indépendantes Obéissance : dichotomique où 1 = obéissance pour les enfants et 0 = autonomie pour les enfants (32% sont d’accord avec l’obéissance) Âge : continue de 18 à 97 (moyenne = 51,7) Éducation: trois dichotomiques (élevée, moyenne, faible), avec environ le tiers des répondants dans chaque catégorie
Tableau croisé CrossTable(mort,obeissance, prop.c=T, prop.r=F, prop.t=F, prop.chisq=F, chisq=T, format="SPSS") R
La régression logistique > logit=glm(mort ~ obeissance + age + edufaible + edumoyen, family=binomial("logit")) > summary(logit) R
Qualité du modèle - > logit$null.deviance - logit$deviance [1] 85.73607 > logit$df.null - logit$df.residual [1] 4 > dchisq(logit$null.deviance-logit$deviance, logit$df.null-logit$df.residual) [1] 5.173114e-18 -
La régression logistique > logit=glm(mort ~ obeissance + age + edufaible + edumoyen, family=binomial("logit")) > summary(logit) R
« Odds Ratio » ou Rapports de probabilité OR = eb = e0.452647 = 1,572470 R
Comment lire les rapports de probabilité? P = 0,60: diminue la probabilité de 40% P = 0,80: diminue la probabilité de 20% P = 1: 0%. Le changement dans la variable indépendante n'affecte pas la variable dépendante P = 1,40: augmente la probabilité de 40% P = 2: augmente la probabilité de 100% (c'est un rapport de 2 contre 1) P = 4,20: augmente la probabilité de 320%
Coefficients et probabilité Rapports de probabilité Constante -.47 (0.17)* Obeissance .45 (0.11)* 1.57 Age -.00 (.00) .99 Edufaible .88 (.13)* 2.42 Edumoyen .43 (.12)* 1.54
Prédictions R > obeissance=c(1) > age=c(mean(df$age, na.rm=T)) > edufort=c(1) > edumoyen=c(0) > edufaible=c(0) > newdata1=data.frame(obeissance, age, edufort, edumoyen, edufaible) > newdata1 R > newdata1$predict=predict(logit, newdata=newdata1, type="response") > newdata1
Prédictions R obeissance age edufort edumoyen edufaible predict > obeissance=c(1) > age=c(mean(df$age, na.rm=T)) > edufort=c(1) > edumoyen=c(0) > edufaible=c(0) > newdata1=data.frame(obeissance, age, edufort, edumoyen, edufaible) > newdata1 R > newdata1$predict=predict(logit, newdata=newdata1, type="response") > newdata1 obeissance age edufort edumoyen edufaible predict 1 0 51.69948 1 0 0 0.3322911 1 0 51.69948 0 1 0 0.4331797 1 0 51.69948 0 0 1 0.5466426 1 1 51.69948 1 0 0 0.4390069 1 1 51.69948 0 1 0 0.5458106 1 1 51.69948 0 0 1 0.6546996
Prédictions > newdata2=data.frame(obeissance=1, age=seq(18,98,10), edufort=1, edumoyen=0, edufaible=0) > > newdata2$predict2=predict(logit, newdata=newdata2, type="response") > newdata2 R