La régression logistique est typiquement utilisée avec des variables
à expliquer binaires.
Expliquer un risque suicidaire élevé en
prison par :
- la durée de la peine
- l’existence de mesures
disciplinaires
- des antécédents d’abus dans l’enfance
Si on
utilisait un modèle de régression linéaire multiple, on écrirait \(haut\_risque\_de\_suicide = a + b*durée + c*discip
+ d*abus + bruit\).
Le problème c’est qu’en utilisant un
modèle linéaire, le bruit devant avoir une distribution normale, donc
\(a + b*durée + c*discip + d*abus +
bruit\) varie entre plus et moins l’infini, or la variable
haut_risque_de_suicide est binaire.
Les statisticiens ont eu
l’idée de transformer la variable \(Log[\frac{prob(haut\_risque\_de\_suicide)}{1-prob(haut\_risque\_de\_suicide)}]
= a + b*durée + c*discip + d*abus\) (parce que ce log va lui
aussi pouvoir varier entre plus et moins l’infini).
Comme on
régresse une probabilité, le terme de bruit a disparu. # 1. avec une
seule variable explicative
mod1 <- glm(suicide.hr ~ abus, data = smp.l, family = 'binomial') # generalised linear model
summary(mod1)
##
## Call:
## glm(formula = suicide.hr ~ abus, family = "binomial", data = smp.l)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -0.8446 -0.6020 -0.6020 -0.6020 1.8959
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.6161 0.1154 -14.003 < 2e-16 ***
## abus 0.7688 0.1897 4.052 5.07e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 760.21 on 752 degrees of freedom
## Residual deviance: 744.26 on 751 degrees of freedom
## (46 observations deleted due to missingness)
## AIC: 748.26
##
## Number of Fisher Scoring iterations: 4
p = 5.07e-05, il existe une association entre les
antécédents d’abus dans l’enfance et un haut risque suicidaire.
Le
coefficient b n’est pas interprétable en l’état, mais si la
variable explicative (ici abus) est codée 0 pour non et 1 pour oui,
alors exp(0.7688) = 2.157176 est l’odds ratio qui associe la variable
explicative à la variable à expliquer.
Pour preuve, si on
cherche à vérifier l’odds ratio, on le retrouve à 2.1571
Epi::twoby2(1-smp.l$suicide.hr, 1-smp.l$abus)
## 2 by 2 table analysis:
## ------------------------------------------------------
## Outcome : 0
## Comparing : 0 vs. 1
##
## 0 1 P(0) 95% conf. interval
## 0 63 90 0.4118 0.3366 0.4913
## 1 147 453 0.2450 0.2122 0.2810
##
## 95% conf. interval
## Relative Risk: 1.6807 1.3276 2.1276
## Sample Odds Ratio: 2.1571 1.4873 3.1287
## Conditional MLE Odds Ratio: 2.1547 1.4577 3.1764
## Probability difference: 0.1668 0.0837 0.2525
##
## Exact P-value: 0.0001
## Asymptotic P-value: 0.0001
## ------------------------------------------------------
mod2 <- glm(suicide.hr ~ abus + discip + duree, data = smp.l, family = 'binomial')
summary(mod2)
##
## Call:
## glm(formula = suicide.hr ~ abus + discip + duree, family = "binomial",
## data = smp.l)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.3200 -0.6655 -0.6012 -0.4997 2.0700
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.02462 0.49635 -0.050 0.960439
## abus 0.62289 0.22764 2.736 0.006213 **
## discip 0.52809 0.23767 2.222 0.026287 *
## duree -0.39862 0.11723 -3.400 0.000673 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 555.94 on 549 degrees of freedom
## Residual deviance: 533.26 on 546 degrees of freedom
## (249 observations deleted due to missingness)
## AIC: 541.26
##
## Number of Fisher Scoring iterations: 4
Nos trois variables explicatives sont associées à un haut risque
suicidaire (toutes choses égales par ailleurs, c’est à dire aux deux
autres variables explicatives constantes).
Les coefficients (colonne
Estimate), sont positifs pour abus et conditions displinaires (qui sont
codées 1 quand présent), donc toute présence d’abus ou de condition
disciplinaire augmente le risque suicidaire. La durée, elle codée de 1 à
5 est négative, donc contrairement à ce que l’on aurait pu penser, la
durée d’incarcération longue diminue la probabilité d’être à haut risque
suicidaire.
Pour interpréter l’amplitude de ces coefficients il faut
les mettre en exponentielle
exp(coefficients(mod2))
## (Intercept) abus discip duree
## 0.9756803 1.8643147 1.6956873 0.6712485
Pour les deux variables abus et discip qui sont codées binaires, on obtient les odds ratio (l’existence d’abus dans l’enfance multiplie par 1.8643147 le risque d’être à haut risque suicidaire en prison et ce, independemment des sanctions disciplinaires ou de la durée d’emprisonnement). Pour la durée d’incarcération (codée de 1 à 5), c’est quand on change de palier de durée d’incarcération, le niveau de haut risque suicidaire diminue de 30% (1 - 0.6712485)
On peut utiliser des variables catégorielles à plus de deux classes
quand dans la régression linaire, pour obtenir l’effet global de la
variable il faudra utiliser
drop1(mod1, .~., test = 'chisq') (attention à bien
changer le type de test pour un chisq).
On peut également
tester une interaction entre deux variables explicatives avec le signe
*.
Il faut au moins 5 à 10 évènements par variable explicative : ce
n’est pas le fait d’avoir 799 détenus dans la base de donnée.
Prenons l’exemple de la variable à expliquer “forme sévère de
schizophrénie” (54 détenus) et qu’on choisit comme variables
explicatives l’âge (1 évènement), le trauma dans l’enfance (1 évènement)
et la profession (catégorielle à huit classes, donc sera re-codé en 7
variables binaires). Il faudrait \((1+1+7)*10
= 90\) détenus pour la variable à expliquer (or on n’en a que
54). Ça passe si on prend la fourchette basse \((1+1+7)*5 = 45\), mais c’est franchement
limite.