Régression logistique
Exercice 3.1
Les données logistclient
contiennent des données simulées pour un cas fictif de promotion pour des clients.
- Estimez le modèle logistique pour la probabilité que
promo=1
avec les variables explicativesnachats
,sexe
ettclient
. - Interprétez les coefficients du modèle à l’échelle de la cote en terme de pourcentage d’augmentation ou de diminution.
- Testez si l’effet de
nachats
est statistiquement significatif à niveau \(\alpha = 0.05\). - Choisissez un point de coupure pour la classification pour maximiser le taux de bonne classification.
- Pour le point de coupure choisi, construisez une matrice de confusion.
- Calculez la sensibilité, la spécificité et le taux de bonne classification manuellement. Vérifiez vos réponses avec la sortie du tableau.
- Produisez un graphique de la fonction d’efficacité du récepteur (courbe ROC) et rapportez l’aire sous la courbe estimée à l’aide de la validation croisée.
- Calculez la statistique de Spiegelhalter (1986) pour la calibration du modèle. Y a-t-il des preuves de surajustement?
Exercice 3.2
Le modèle de Bradley & Terry (1952) décrit la probabilité que le résultat de l’ «équipe \(i\) » soit supérieur à celui de l’«équipe» \(j\), \[\begin{align*} \Pr(Y_i > Y_j)= \frac{\exp(\beta_i)}{\exp(\beta_i) + \exp(\beta_j)}, \quad i, j \in \{1, \ldots, K\}, \end{align*}\] en assumant que les doublons (égalité) ne surviennent pas.
Ce modèle simple peut servir pour prédire le classement d’équipes sportives: si on écrit le modèle en terme de cote, on obtient pour l’équipe \(i\) à domicile et l’équipe \(j\) en visite \[\begin{align*} \ln\left\{\frac{\Pr(\text{victoire équipe $i$ (domicile)})}{\Pr(\text{victoire équipe $j$ (visiteur)})}\right\}= \beta_i - \beta_j. \end{align*}\]
Le modèle décrit ci-dessus peut être ajusté à l’aide d’une régression logistique avec un ensemble de \(K-1\) variable explicatives1 où pour le match \(i\) et l’équipe \(k=2, \ldots, K\), on a \[\begin{align*} X_{ik} = \begin{cases} \hphantom{-}1, & k = i,\\ -1, & k = j,\\ \hphantom{-}0, & \text{sinon}. \end{cases} \end{align*}\] Le modèle Bradley–Terry de base n’a pas d’ordonnée à l’origine. Si on l’ajoute, l’équation du modèle pour une partie devient \[\begin{align*} \ln\left\{\frac{\Pr(\text{victoire équipe $i$ (domicile)})}{\Pr(\text{victoire équipe $j$ (visiteur)})}\right\}= \alpha + \beta_i - \beta_j, \end{align*}\] où \(\beta_i\) représente la force de l’équipe à domicile, \(\beta_j\) la force de l’équipe en visite et l’ordonnée à l’origine \(\alpha\) capture l’effet du jeu à domicile.
La base de données lnh
du paquet hecmulti
contient les résultats de chaque partie par équipe, tandis que lnh_BT
fournit les mêmes données, mais dans un format propice pour l’ajustement du modèle de Bradley–Terry.
Ajustez le modèle de Bradley–Terry aux données lnh_BT
(utilisez la formule vainqueur ~ .
pour ajuster le modèle avec toutes les équipes). La catégorie de référence est Anaheim_Ducks
, qui n’apparaît pas dans les sorties.
- Interprétez le coefficient pour l’ordonnée à l’origine \(\alpha\) en terme de pourcentage d’augmentation ou de diminution de la cote par rapport à la référence jouer à l’extérieur.
- Calculez un intervalle de confiance de niveau 95% pour l’ordonnée à l’origine et déterminez si jouer à domicile impacte significativement le score.
- Fournissez un tableau avec le classement des cinq premières équipes qui ont la plus grande chance de succès selon le modèle.2
- Pour chaque match, utilisez le modèle logistique pour prédire l’équipe gagnante.
- Construisez une matrice de confusion (1 pour une victoire de l’équipe à domicile, 0 sinon) avec un point de coupure de 0.5 (assignation à l’événement ou à la classe la plus probable) et rapportez cette dernière.
- Calculez le taux de bonne classification, la sensibilité et la spécificité à partir de votre matrice de confusion.
- Produisez un graphique de la fonction d’efficacité du récepteur et rapportez l’aire sous la courbe. Commentez sur la qualité prédictive globale du modèle.
Exercice 3.3
On s’intéresse à la satisfaction de clients par rapport à un produit. Cette dernière est mesurée à l’aide d’une échelle de Likert, allant de très insatisfait (1
) à très satisfait (5
). Les 1000 observations se trouvent dans la base de données multinom
du paquet hecmulti
.
Modélisez la satisfaction des clients en fonction de l’âge, du niveau d’éducation, du sexe et du niveau de revenu.
- Est-ce que le modèle de régression multinomiale ordinale à cote proportionnelles est une simplification adéquate du modèle de régression multinomiale logistique? Si oui, utilisez ce modèle pour la suite. Si non, ajustez le modèle de régression multinomiale logistique avec
1
comme catégorie de référence pour la satisfaction,1
pour revenu etsec
pour éducation3 et utilisez ce dernier pour répondre aux autres questions. - Interprétez l’effet des variables éducation et sexe pour la catégorie 2 par rapport à 1.
- Est-ce que le modèle avec une probabilité constante pour chaque item est adéquat lorsque comparé au modèle qui inclut toutes les covariables?
- Est-ce que l’effet de la variable âge est globalement significatif?
- Fournissez un intervalle de confiance à niveau 95% pour l’effet multiplicatif d’une augmentation d’une unité de la variable âge pour chacune des cote par rapport à très insatisfait (
1
). Que concluez-vous sur l’effet de âge pour les réponses 2 à 5 par rapport à 1? - Écrivez l’équation de la cote ajustée pour satisfait (
4
) par rapport à très insatisfait (1
). - Prédisez la probabilité qu’un homme de 30 ans qui a un diplôme collégial et qui fait partie de la classe moyenne sélectionne une catégorie donnée. Quelle modalité est la plus susceptible?
Références
Notes de bas de page
Il n’y a pas de variable explicative \(X_{\text{ref}}\) pour la catégorie de référence, autrement les données seraient colinéaires. Une des catégories \(\text{ref} \in \{1, \ldots, K\}\) sert de référence et le coefficient correspondant est nul, soit \(\beta_{\text{ref}}=0\).↩︎
Attention à la catégorie de référence!↩︎
Utilisez la fonction
relevel
pour changer la catégorie de référence, avecrelevel(educ, ref = 'sec')
.↩︎