cassionAnalyse de données

Retour à la leçonLeçon 5 sur 8La cohorte

Trois issues qui doivent sommer à un

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 / 24

    Ce que couvre cette leçon

    • L'année, comme un ensemble de sorties
    • Le dénominateur n'est pas l'effectif inscrit
    • Le redoublement est une décision, non un événement
    • L'abandon par année, et le pic de sixième
    • Rapportez les sorties, puis les taux
    • La suite
    Notes du présentateur
    70,4 % de passages, 9,8 % de redoublements, 10,2 % d'abandons, 5,7 % d'achèvements et 2,9 % de transferts. Chacune exige le même dénominateur, et les transferts sont la raison pour laquelle ce n'est pas l'effectif inscrit.
  2. Diapositive 2 / 24

    L'année, comme un ensemble de sorties — En Python

    import pandas as pd
    
    enrolment = pd.read_csv("school-enrolment-2024.v1.csv")
    clean = enrolment[enrolment["age_years"] <= 20]
    cohort = clean[clean["school_year"] == 2023]
    
    outcomes = cohort["end_of_year_status"].value_counts(normalize=True)
    print((outcomes * 100).round(1))
    print(f"\ncohort: {len(cohort)} students")
  3. Diapositive 3 / 24

    L'année, comme un ensemble de sorties — En R

    library(dplyr)
    
    enrolment |>
      filter(age_years <= 20, school_year == 2023) |>
      count(end_of_year_status) |>
      mutate(share = n / sum(n))
  4. Diapositive 4 / 24

    L'année, comme un ensemble de sorties

    IssueÉlèvesPart
    Passés91070,4 %
    Abandonné13210,2 %
    Redoublé1279,8 %
    Achevé la dernière année745,7 %
    Transféré372,9 %
    Encore inscrits à la clôture120,9 %
  5. Diapositive 5 / 24

    L'année, comme un ensemble de sorties

    • Les trois taux principaux sont le passage, le redoublement et l'abandon, et ils ne signifient quelque chose que s'ils…
    Notes du présentateur
    Les trois taux principaux sont le passage, le redoublement et l'abandon, et ils ne signifient quelque chose que s'ils partagent un dénominateur. Cela paraît évident et c'est l'étape la plus souvent sautée.
  6. Diapositive 6 / 24

    Le dénominateur n'est pas l'effectif inscrit

    • Les transferts ne sont pas des abandons — Un enfant parti dans une autre école est toujours scolarisé
    • Les transferts ne sont pas non plus des réussites — Ils ne peuvent pas être comptés comme passages, car ce registre ne…
    Notes du présentateur
    Deux catégories le compliquent, et dans des sens opposés. Les transferts ne sont pas des abandons. Un enfant parti dans une autre école est toujours scolarisé. Les compter comme abandons surestime l'abandon de près de trois points et — pire — attribue une réussite du système à un échec d'école. Les transferts ne sont pas non plus des réussites. Ils ne peuvent pas être comptés comme passages, car ce registre ne sait pas s'ils se sont réinscrits.
  7. Diapositive 7 / 24

    Le dénominateur n'est pas l'effectif inscrit — En Python (suite)

    def rates(frame, exclude_transfers):
        base = frame[frame["end_of_year_status"] != "transferred-out"] \
            if exclude_transfers else frame
        return {
            "n": len(base),
            "promotion": (base["end_of_year_status"]
                          .isin(["promoted", "completed-final-grade"]).mean()),
            "repetition": base["end_of_year_status"].eq("repeated").mean(),
            "dropout": base["end_of_year_status"].eq("dropped-out").mean(),
        }
    
    for exclude in (False, True):
        result = rates(cohort, exclude)
        label = "excluding transfers" if exclude else "all students"
        print(f"{label:20} n={result['n']}  "
              f"promotion {result['promotion']:.1%}  "
  8. Diapositive 8 / 24

    Le dénominateur n'est pas l'effectif inscrit — En Python (suite)

              f"repetition {result['repetition']:.1%}  "
              f"dropout {result['dropout']:.1%}")
  9. Diapositive 9 / 24

    Le dénominateur n'est pas l'effectif inscrit — En R

    cohort |>
      filter(end_of_year_status != "transferred-out") |>
      summarise(n = n(),
                promotion = mean(end_of_year_status %in% c("promoted", "completed-final-grade")),
                repetition = mean(end_of_year_status == "repeated"),
                dropout = mean(end_of_year_status == "dropped-out"))
  10. Diapositive 10 / 24

    Le dénominateur n'est pas l'effectif inscrit

    • C'est le dénominateur du taux de guérison PCIMA rencontré plus tôt dans ce module, dans un autre secteur — La…
    Notes du présentateur
    C'est le dénominateur du taux de guérison PCIMA rencontré plus tôt dans ce module, dans un autre secteur. La convention y était d'exclure les transferts parce que le programme ne peut pas revendiquer leur issue ; la convention est ici la même, pour la même raison. Dites laquelle vous avez employée, et les trois taux sommeront à quelque chose de défendable.
  11. Diapositive 11 / 24

    Le redoublement est une décision, non un événement — En Python

    by_district = clean.groupby("admin2")["repeating"].agg(["mean", "size"])
    print((by_district * [100, 1]).round(1))
  12. Diapositive 12 / 24

    Le redoublement est une décision, non un événement — En R

    enrolment |> filter(age_years <= 20) |>
      summarise(repeating = mean(repeating), n = n(), .by = admin2)
  13. Diapositive 13 / 24

    Le redoublement est une décision, non un événement

    DistrictTaux de redoublementn
    Sud12,3 %583
    Artibonite12,1 %618
    Nord-Ouest12,0 %625
    Centre7,4 %624
  14. Diapositive 14 / 24

    Le redoublement est une décision, non un événement — En Python

    centre = clean[(clean["admin2"] == "Centre") & (clean["school_year"] == 2023)]
    elsewhere = clean[(clean["admin2"] != "Centre") & (clean["school_year"] == 2023)]
    for name, frame in [("Centre", centre), ("elsewhere", elsewhere)]:
        over = frame["age_years"] > frame["grade"] + 5
        print(f"{name}: repetition {frame['repeating'].mean():.1%}, "
              f"over-age {over.mean():.1%}")
    Notes du présentateur
    Centre rapporte un redoublement inférieur de près de cinq points à tous les autres districts. C'est soit le district le plus performant de la région, soit une habitude d'enregistrement, et le registre seul ne peut pas trancher. C'est une habitude d'enregistrement : Centre signale une partie de ses vrais redoublants comme nouveaux entrants. La façon de le soupçonner sans qu'on vous le dise est que le redoublement devrait suivre le retard d'âge, et à Centre il ne le suit pas — 8,7 % de redoublement contre 11,8 % ailleurs, alors que la part de retard d'âge de Centre vaut 40,6 % contre 35,7 %. Le district qui rapporte le moins de redoublement a le plus d'enfants en retard d'âge, ce qui est à l'envers pour toute explication autre que le codage.
  15. Diapositive 15 / 24

    Le redoublement est une décision, non un événement — En R

    # Repetition should predict over-age. Where it does not, suspect the coding.
  16. Diapositive 16 / 24

    Le redoublement est une décision, non un événement

    • Un taux en décalage avec l'indicateur qu'il cause mécaniquement est une question sur le bureau avant d'être un constat…
    Notes du présentateur
    Un taux en décalage avec l'indicateur qu'il cause mécaniquement est une question sur le bureau avant d'être un constat sur les écoles. C'est le même raisonnement que le fourre-tout des motifs de clôture du cours de protection, et il mérite d'être un réflexe.
  17. Diapositive 17 / 24

    L'abandon par année, et le pic de sixième — En Python

    by_grade = cohort[cohort["grade"].between(1, 6)].groupby("grade").agg(
        n=("student_id", "size"),
        dropout=("end_of_year_status", lambda s: s.eq("dropped-out").mean()),
        repetition=("end_of_year_status", lambda s: s.eq("repeated").mean()),
    )
    print((by_grade * [1, 100, 100]).round(1))
  18. Diapositive 18 / 24

    L'abandon par année, et le pic de sixième — En R

    cohort |> filter(between(grade, 1, 6)) |>
      summarise(n = n(),
                dropout = mean(end_of_year_status == "dropped-out"),
                repetition = mean(end_of_year_status == "repeated"), .by = grade)
  19. Diapositive 19 / 24

    L'abandon par année, et le pic de sixième

    AnnéenAbandonRedoublement
    11498,1 %2,0 %
    22718,5 %7,0 %
    333213,0 %6,6 %
    42318,7 %10,4 %
    51658,5 %19,4 %
    611018,2 %12,7 %
  20. Diapositive 20 / 24

    L'abandon par année, et le pic de sixième

    • Le redoublement monte avec l'année et l'abandon non — La cinquième retient 19,4 % de ses élèves alors que son abandon…
    • L'abandon en sixième vaut 18,2 % sur 110 élèves — C'est le taux le plus élevé du tableau et le plus petit dénominateur,…
    Notes du présentateur
    Deux choses de ce tableau demandent une lecture attentive. Le redoublement monte avec l'année et l'abandon non. La cinquième retient 19,4 % de ses élèves alors que son abandon vaut 8,5 % ; la sixième fait l'inverse. Les deux sont des sorties alternatives d'un même point de décision, et lire l'une seule donne une forme fausse du problème. L'abandon en sixième vaut 18,2 % sur 110 élèves. C'est le taux le plus élevé du tableau et le plus petit dénominateur, donc avant d'en faire la priorité, posez-lui un intervalle — la machinerie du cours sur les enquêtes, sur une proportion qui bougerait de plusieurs points si quatre enfants avaient fait autre chose.
  21. Diapositive 21 / 24

    Rapportez les sorties, puis les taux — Exemple (suite)

    End of school year 2023, 1,292 students
    
      Promoted                     70.4%   910
      Dropped out                  10.2%   132
      Repeated                      9.8%   127
      Completed the final grade     5.7%    74
      Transferred out               2.9%    37   excluded from the rates below
      Still enrolled at cut-off     0.9%    12
    
      Rates on 1,255 students, transfers excluded:
        Promotion (incl. completion)  78.4%
        Repetition                    10.1%
        Dropout                       10.5%
    
      Centre reports repetition at 7.4% against 12.0-12.3% elsewhere while
      holding the highest over-age share of the four districts. Treat as a
  22. Diapositive 22 / 24

    Rapportez les sorties, puis les taux — Exemple (suite)

      recording difference pending verification, not as performance.
  23. Diapositive 23 / 24

    La suite

    • Ce sont les sorties d'une année.
    Notes du présentateur
    Ce sont les sorties d'une année. Les transformer en « combien d'enfants achèvent le primaire » exige une cohorte, et la leçon suivante en construit une — avec la raison pour laquelle le nombre qu'elle produit est presque certainement faux.
  24. Diapositive 24 / 24

    La suite

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