cassionAnalyse de données

Retour à la leçonLeçon 5 sur 8Quelles covariables ont leur place

La covariable qui améliore chaque statistique et détruit la réponse

Le même diaporama que les téléchargements, rendu sous forme de page. Lancez le diaporama pour le présenter en plein écran — les flèches ou un clic avancent d'une diapositive, Échap quitte.

Diapositives · PDFDiapositives · PowerPoint

  1. Diapositive 1 / 23

    Ce que couvre cette leçon

    • Une covariable qui paraît manifestement juste
    • Pourquoi elle retire l'effet
    • Quatre sortes de covariables, et ce que chacune fait
    • Le tracer avant d'ajuster
    • Le collisionneur, qui est pire
    • Rapportez les deux, et dites lequel est lequel
    • La suite
    Notes du présentateur
    Ajoutez le fait qu'une orientation ait été émise et l'AIC chute de 595, le pseudo-R² quadruple, et 42,5 % de l'écart selon le handicap disparaît. Tout critère de sélection de modèle dit de la garder. Toute considération causale dit qu'elle doit sortir, et aucune statistique d'ajustement ne vous dira laquelle a raison.
  2. Diapositive 2 / 23

    Une covariable qui paraît manifestement juste — En Python

    import statsmodels.formula.api as smf
    
    BASE = ("completed ~ disability + case_category + age_band + sex"
            " + service_requested + admin1")
    
    adjusted = smf.logit(BASE, data=d).fit(disp=0)
    plus_gate = smf.logit(BASE + " + referral_made", data=d).fit(disp=0)
    
    for name, m in [("adjusted", adjusted), ("+ referral_made", plus_gate)]:
        print(f"{name:16} AIC {m.aic:7.1f}   pseudo-R2 {m.prsquared:.3f}")
    Notes du présentateur
    La filière d'orientation comporte une porte. Un cas est consenti, puis une orientation est émise, puis elle est acceptée, puis un service est atteint. referral_made est enregistré, il est fortement lié à l'aboutissement, et l'ajouter au modèle est l'étape naturelle.
  3. Diapositive 3 / 23

    Une covariable qui paraît manifestement juste — En R

    adjusted  <- glm(completed ~ disability + case_category + age_band + sex +
                       service_requested + admin1, data = d, family = binomial())
    plus_gate <- update(adjusted, . ~ . + referral_made)
    AIC(adjusted, plus_gate)
  4. Diapositive 4 / 23

    Une covariable qui paraît manifestement juste

    ModèleRapport de cotesEffet marginal moyenAICPseudo-R²
    Brut0,430−19,05 pts2138,50,012
    Ajusté0,388−19,41 pts1999,60,089
    + referral_made0,494−11,15 pts1404,20,365
  5. Diapositive 5 / 23

    Une covariable qui paraît manifestement juste

    • L'AIC s'améliore de 595 points. Le pseudo-R² quadruple. Et 42,5 % de l'effet s'évanouit
    Notes du présentateur
    L'AIC s'améliore de 595 points. Le pseudo-R² quadruple. Et 42,5 % de l'effet s'évanouit. Toute procédure automatique de sélection de modèle jamais écrite garderait cette variable. La sélection pas à pas la garde, l'AIC la garde, l'exactitude validée croisée la garde, et toutes répondent à une question que personne n'a posée.
  6. Diapositive 6 / 23

    Pourquoi elle retire l'effet — En Python

    print(d.groupby("disability")["referral_made"].agg(["mean", "size"]).round(4))
  7. Diapositive 7 / 23

    Pourquoi elle retire l'effet — En R

    d |> summarise(made = mean(referral_made), n = n(), .by = disability)
  8. Diapositive 8 / 23

    Pourquoi elle retire l'effet

    • Une orientation est émise pour 71,5 % des cas sans handicap signalé et 53,8 % des cas avec
    • Conditionner sur referral_made demande : parmi les cas où une orientation a été émise, reste-t-il un écart ? — La…
    • Une covariable située sur le chemin causal entre exposition et résultat est un médiateur, et ajuster dessus retire exactement la part de l'effet qui passe par elle
    Notes du présentateur
    Une orientation est émise pour 71,5 % des cas sans handicap signalé et 53,8 % des cas avec. Ce n'est pas une différence parasite à neutraliser — cela fait partie de ce qui est mesuré. Les cas signalant un handicap atteignent moins souvent un service en partie parce qu'une orientation est moins souvent émise pour eux au départ. Conditionner sur referral_made demande : parmi les cas où une orientation a été émise, reste-t-il un écart ? La réponse est oui, 11,2 points — un nombre réel et utile sur l'étape d'acceptation. Ce n'est pas l'effet du handicap sur le fait d'atteindre un service, et le rapporter comme tel sous-estime cet effet de 42 %. Une covariable située sur le chemin causal entre exposition et résultat est un médiateur, et ajuster dessus retire exactement la part de l'effet qui passe par elle.
  9. Diapositive 9 / 23

    Quatre sortes de covariables, et ce que chacune fait

    SorteSe situeAjuster ?Si vous vous trompez
    Facteur de confusionCause l'exposition et le résultatOuiEstimation biaisée, dans les deux sens
    MédiateurEntre l'exposition et le résultatNon (pour un effet total)Effet sous-estimé
    CollisionneurCausé par l'exposition et le résultatJamaisBiais créé là où il n'y en avait pas
    Cause concurrenteNe cause que le résultatFacultatifPrécision seulement
    Notes du présentateur
    La décision porte sur la structure causale, non sur des statistiques, et elle doit être prise avant d'ajuster le modèle.
  10. Diapositive 10 / 23

    Quatre sortes de covariables, et ce que chacune fait

    • Seule la première ligne est une raison d'ajouter une variable — La quatrième est une raison pour laquelle vous pouvez…
    • La sorte d'une variable n'est pas visible dans les données — Facteur de confusion, médiateur et collisionneur…
    Notes du présentateur
    Seule la première ligne est une raison d'ajouter une variable. La quatrième est une raison pour laquelle vous pouvez en ajouter une, et elle achète une erreur-type plus petite plutôt qu'une estimation différente. Les deux du milieu sont des raisons de ne pas le faire. La sorte d'une variable n'est pas visible dans les données. Facteur de confusion, médiateur et collisionneur produisent tous un coefficient qui bouge quand on ajuste, et tous trois améliorent l'ajustement s'ils prédisent le résultat. Le seul moyen de les distinguer est de savoir ce qui est venu avant et ce qui a causé quoi — d'où le schéma tracé avant l'ajustement du modèle.
  11. Diapositive 11 / 23

    Le tracer avant d'ajuster — Exemple

       disability -------------------------------> completion
           |                                            ^
           +-------> referral made ---------------------+
    
       department --> disability        department --> completion
    Notes du présentateur
    Trois flèches, tirées de ce que vous savez du fonctionnement de la filière.
  12. Diapositive 12 / 23

    Le tracer avant d'ajuster

    • Le département est un facteur de confusion — le lieu où naît un cas influe à la fois sur qui est enregistré avec un…
    Notes du présentateur
    Le département est un facteur de confusion — le lieu où naît un cas influe à la fois sur qui est enregistré avec un handicap et sur la qualité du système de services — il a donc sa place dans le modèle. L'émission de l'orientation est un médiateur — le handicap l'influence et elle influence l'aboutissement — elle n'y a donc pas sa place.
  13. Diapositive 13 / 23

    Le tracer avant d'ajuster — En Python

    TOTAL_EFFECT = ["disability", "case_category", "age_band", "sex",
                    "service_requested", "admin1"]        # confounders only
    MECHANISM = TOTAL_EFFECT + ["referral_made"]          # a different question
  14. Diapositive 14 / 23

    Le tracer avant d'ajuster — En R

    # Two named model specifications, two questions, both legitimate.
  15. Diapositive 15 / 23

    Le tracer avant d'ajuster

    • Nommez les modèles d'après la question plutôt que d'après les variables — Un modèle appelé MECHANISM ne sera pas…
    Notes du présentateur
    Nommez les modèles d'après la question plutôt que d'après les variables. Un modèle appelé MECHANISM ne sera pas rapporté par accident comme l'effet total, et un relecteur voit lequel était visé.
  16. Diapositive 16 / 23

    Le collisionneur, qui est pire — En Python

    closed = d[d["case_status"].isin(["closed-resolved", "closed-lost-contact"])]
    print(f"closed cases: {len(closed)}")
    print(closed.groupby("disability")["completed"].agg(["mean", "size"]).round(4))
    Notes du présentateur
    Un médiateur sous-estime un effet réel. Un collisionneur en fabrique un qui n'existe pas, et le mécanisme est plus subtil. Se restreindre aux cas clos est la façon la plus courante dont cela arrive ici, parce qu'un cas clos est un cas où quelque chose a été résolu — ce qui est en aval à la fois du handicap et de l'aboutissement.
  17. Diapositive 17 / 23

    Le collisionneur, qui est pire — En R

    d |> filter(case_status %in% c("closed-resolved", "closed-lost-contact")) |>
      summarise(rate = mean(completed), n = n(), .by = disability)
  18. Diapositive 18 / 23

    Le collisionneur, qui est pire

    ÉchantillonnÉcart (effet marginal moyen)
    Tous les cas consentis1 581−19,4 points
    Cas clos seulement860−21,1 points
  19. Diapositive 19 / 23

    Le collisionneur, qui est pire

    • Se restreindre aux cas clos porte l'écart à 21,1 points — et le mouvement est produit par la restriction plutôt que par…
    • Sélectionner des lignes, c'est ajuster sur une variable — Écarter les cas ouverts, ne garder que les formulaires…
    Notes du présentateur
    Se restreindre aux cas clos porte l'écart à 21,1 points, et le mouvement est produit par la restriction plutôt que par quoi que ce soit concernant le handicap. Les cas ouverts — ceux encore en cours — sont exclus sur un critère que les deux variables influencent. Sélectionner des lignes, c'est ajuster sur une variable. Écarter les cas ouverts, ne garder que les formulaires complets, n'analyser que les ménages ayant répondu à tout : chacun est un conditionnement, et chacun peut être un collisionneur. « Nous avons restreint l'analyse aux cas clos par souci d'exhaustivité » est une phrase qui change une estimation sans que personne remarque qu'il s'agissait d'un choix de modélisation.
  20. Diapositive 20 / 23

    Rapportez les deux, et dites lequel est lequel — Exemple

    Referral completion by disability status, decomposition
    
      Total gap                                    -19.4 points
        of which runs through referral-making      -8.3 points  (42.5%)
        remaining, among referrals made            -11.2 points
    
      Referrals are made for 53.8% of cases reporting a disability against 71.5%
      of others. Both gates contribute; neither explains the other away.
    
      The -11.2 figure is conditional on a referral having been made and must not
      be reported as the effect of disability on reaching a service.
    Notes du présentateur
    La médiation vaut d'être rapportée quand le mécanisme est la question du programme, ce qui est le cas ici : le cours de protection situait l'écart selon le handicap à l'émission et à l'acceptation, et cette décomposition en est la version chiffrée.
  21. Diapositive 21 / 23

    Rapportez les deux, et dites lequel est lequel

    • La dernière ligne est celle qui garde la décomposition honnête — Les deux nombres sont réels, ils répondent à des…
    Notes du présentateur
    La dernière ligne est celle qui garde la décomposition honnête. Les deux nombres sont réels, ils répondent à des questions différentes, et le mode d'échec n'est pas de calculer le mauvais — c'est de calculer le bon et de l'étiqueter comme l'autre.
  22. Diapositive 22 / 23

    La suite

    • Chaque modèle de ce cours a jusqu'ici supposé que chaque ligne était une observation indépendante.
    Notes du présentateur
    Chaque modèle de ce cours a jusqu'ici supposé que chaque ligne était une observation indépendante. La leçon suivante donne au modèle un terme pour ce à l'intérieur de quoi les lignes sont regroupées, et trouve trois chemins honnêtes vers la même réponse là où le naïf était seul de son côté.
  23. Diapositive 23 / 23

    La suite

    Lire la leçon complète, avec le code exécutable Retour à la leçon