cassionAnalyse de données

Retour à la leçonLeçon 1 sur 8L'inscription et son dénominateur

109 % scolarisés, 97 % scolarisés

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

    Ce que couvre cette leçon

    • Deux taux, un registre
    • Pourquoi un taux peut dépasser 100 %
    • Le dénominateur est une projection
    • Lequel rapporter
    • Ce que les taux ne peuvent pas dire
    • La suite
    Notes du présentateur
    Deux taux issus d'un même registre. Le brut vaut 109,2 % et le net 97,4 %, les deux sont exacts, et les douze points d'écart sont des enfants scolarisés au mauvais âge plutôt que des enfants absents.
  2. Diapositive 2 / 20

    Deux taux, un registre — En Python (suite)

    import pandas as pd
    
    enrolment = pd.read_csv("school-enrolment-2024.v1.csv")
    population = pd.read_csv("school-age-population-2024.v1.csv")
    
    current = enrolment[enrolment["school_year"] == 2024]
    primary = current[current["grade"].between(1, 6)]
    
    denominator = population.loc[
        (population["reference_year"] == 2024)
        & population["age_years"].between(6, 11),
        "projected_population",
    ].sum()
    
    gross = len(primary) / denominator
    net = len(primary[primary["age_years"].between(6, 11)]) / denominator
  3. Diapositive 3 / 20

    Deux taux, un registre — En Python (suite)

    
    print(f"gross enrolment ratio: {gross:.1%}")
    print(f"net enrolment ratio:   {net:.1%}")
  4. Diapositive 4 / 20

    Deux taux, un registre — En R

    library(dplyr)
    
    primary <- enrolment |> filter(school_year == 2024, between(grade, 1, 6))
    denominator <- population |>
      filter(reference_year == 2024, between(age_years, 6, 11)) |>
      summarise(n = sum(projected_population)) |> pull(n)
    
    tibble(
      gross = nrow(primary) / denominator,
      net = sum(between(primary$age_years, 6, 11)) / denominator
    )
  5. Diapositive 5 / 20

    Deux taux, un registre

    TauxNumérateurDénominateurValeur
    BrutTous les inscrits au primaire, tout âgeEnfants de 6 à 11 ans109,2 %
    NetInscrits au primaire de 6 à 11 ansEnfants de 6 à 11 ans97,4 %
  6. Diapositive 6 / 20

    Deux taux, un registre

    • Les numérateurs diffèrent ; le dénominateur est identique — C'est toute la définition, et c'est pourquoi les deux taux…
    Notes du présentateur
    Les numérateurs diffèrent ; le dénominateur est identique. C'est toute la définition, et c'est pourquoi les deux taux ne sont pas deux estimations d'une même chose.
  7. Diapositive 7 / 20

    Pourquoi un taux peut dépasser 100 %

    • Le retard et l'avance d'âge — Les enfants hors de la tranche d'âge officielle sont au numérateur et pas au dénominateur
    • Un dénominateur trop petit — Le fichier de population est une projection et non un dénombrement, et une projection qui…
    • Le double comptage — Un enfant inscrit dans deux écoles figure deux fois
    Notes du présentateur
    Un taux brut supérieur à 100 % n'est pas une erreur. Trois choses le produisent et une seule est un défaut. Le retard et l'avance d'âge. Les enfants hors de la tranche d'âge officielle sont au numérateur et pas au dénominateur. C'est la cause dominante ici et c'est un trait réel du système, non un problème de données. Un dénominateur trop petit. Le fichier de population est une projection et non un dénombrement, et une projection qui sous-estime gonfle tout taux bâti dessus. Le double comptage. Un enfant inscrit dans deux écoles figure deux fois. Celui-là est un défaut, et ce registre l'a.
  8. Diapositive 8 / 20

    Pourquoi un taux peut dépasser 100 % — En Python

    duplicates = current.duplicated(subset=["student_id", "school_year"], keep=False)
    print(f"student-years appearing more than once: {duplicates.sum()}")
    
    unique = current.drop_duplicates(subset=["student_id", "school_year"])
    unique_primary = unique[unique["grade"].between(1, 6)]
    print(f"gross ratio after deduplication: {len(unique_primary) / denominator:.1%}")
  9. Diapositive 9 / 20

    Pourquoi un taux peut dépasser 100 % — En R

    enrolment |> filter(school_year == 2024) |>
      count(student_id) |> filter(n > 1) |> nrow()
    Notes du présentateur
    Douze élèves figurent deux fois, une fois sous chaque école, parce qu'un transfert a été saisi comme une nouvelle inscription plutôt que comme un déplacement. Dédupliquez sur élève et année avant l'un ou l'autre taux, et notez que l'effet est ici faible — l'enjeu n'est pas sa taille, c'est qu'un registre qui compte double se trompe sur qui existe.
  10. Diapositive 10 / 20

    Le dénominateur est une projection — En Python

    CENSUS_YEAR, GROWTH = 2015, 0.021
    factor = (1 + GROWTH) ** (2024 - CENSUS_YEAR)
    print(f"nine years compounded at {GROWTH:.1%}: factor {factor:.3f}")
    print(f"so about {1 - 1 / factor:.0%} of the denominator is an assumption")
  11. Diapositive 11 / 20

    Le dénominateur est une projection — En R

    (1 + 0.021)^(2024 - 2015)
  12. Diapositive 12 / 20

    Le dénominateur est une projection

    • Un facteur de 1,21, donc environ un sixième du dénominateur n'a jamais été compté — C'est le dénominateur vaccinal du…
    Notes du présentateur
    Un facteur de 1,21, donc environ un sixième du dénominateur n'a jamais été compté. C'est le dénominateur vaccinal du cours de santé publique, dans un autre secteur : une base de recensement, une hypothèse de croissance, et neuf ans de composition. La conséquence est précise. Si la projection est trop basse de 5 %, le taux brut passe de 109,2 % à environ 104 % et le net de 97,4 % à environ 93 %. Aucune conclusion ne change, mais un rapport affirmant que la scolarisation a gagné deux points d'une année à l'autre rapporte peut-être le taux de croissance et non les écoles.
  13. Diapositive 13 / 20

    Le dénominateur est une projection — En Python

    for error in (-0.05, 0.0, 0.05):
        adjusted = denominator * (1 + error)
        print(f"projection {error:+.0%}: gross {len(primary) / adjusted:.1%}, "
              f"net {len(primary[primary['age_years'].between(6, 11)]) / adjusted:.1%}")
  14. Diapositive 14 / 20

    Le dénominateur est une projection — En R

    # Vary the denominator and see which conclusions survive.
  15. Diapositive 15 / 20

    Le dénominateur est une projection

    • Montrez la sensibilité plutôt que l'estimation ponctuelle — là où le dénominateur est projeté
    Notes du présentateur
    Montrez la sensibilité plutôt que l'estimation ponctuelle là où le dénominateur est projeté. Cela coûte trois lignes et c'est la différence entre un taux et un taux défendable.
  16. Diapositive 16 / 20

    Lequel rapporter

    • Le taux net répond à « les enfants d'âge scolaire sont-ils scolarisés » — C'est le cadrage de l'ODD 4.1 et le bon taux…
    • Le taux brut répond à « quelle quantité de scolarité primaire est délivrée » — C'est le bon taux pour une question de…
    • L'écart entre les deux est le constat — et c'est la raison de rapporter les deux : douze points de retard d'âge sont un…
    Notes du présentateur
    Aucun, seul. Le taux net répond à « les enfants d'âge scolaire sont-ils scolarisés ». C'est le cadrage de l'ODD 4.1 et le bon taux pour une question de couverture. Il ne peut pas dépasser 100 %, ce qui en fait le nombre le plus sûr à publier. Le taux brut répond à « quelle quantité de scolarité primaire est délivrée ». C'est le bon taux pour une question de capacité — enseignants, salles, manuels — car un enfant en retard d'âge a besoin d'un pupitre exactement autant qu'un enfant à l'âge attendu. L'écart entre les deux est le constat, et c'est la raison de rapporter les deux : douze points de retard d'âge sont un énoncé sur le redoublement et l'entrée tardive qu'aucun des deux taux ne fait seul.
  17. Diapositive 17 / 20

    Lequel rapporter — Exemple

    Primary enrolment, 2024, four districts
    
      Gross enrolment ratio       109.2%   1,052 enrolees / 963 children aged 6-11
      Net enrolment ratio          97.4%     938 in-age enrolees / same denominator
      Over-age share of enrolment  36.4%   above the official age for their grade
    
      Denominator is a projection from the 2015 census at 2.1% a year. A 5%
      error in it moves the gross ratio by about five points and changes no
      conclusion.
      12 student-years were recorded twice after transfers and are deduplicated.
  18. Diapositive 18 / 20

    Ce que les taux ne peuvent pas dire

    • Aucun n'est la présence — Un enfant inscrit et jamais présent figure aux deux numérateurs
    • Aucun n'est l'achèvement — L'inscription est un stock à un moment de l'année ; savoir si ces enfants terminent est une…
    • Aucun n'est l'apprentissage — Un système peut scolariser chaque enfant d'âge scolaire et n'en instruire aucun, et la…
    Notes du présentateur
    Aucun n'est la présence. Un enfant inscrit et jamais présent figure aux deux numérateurs. L'unité suivante porte sur cette distinction, et elle vaut plus que l'un ou l'autre taux. Aucun n'est l'achèvement. L'inscription est un stock à un moment de l'année ; savoir si ces enfants terminent est une question de cohorte et la troisième unité. Aucun n'est l'apprentissage. Un système peut scolariser chaque enfant d'âge scolaire et n'en instruire aucun, et la dernière unité porte sur l'instrument qui s'en apercevrait.
  19. Diapositive 19 / 20

    La suite

    • Douze points de l'écart entre les deux taux sont du retard d'âge.
    Notes du présentateur
    Douze points de l'écart entre les deux taux sont du retard d'âge. La leçon suivante porte sur qui sont ces enfants, pourquoi le retard est le prédicteur le plus fort de ce registre, et comment le redoublement le fait se composer.
  20. Diapositive 20 / 20

    La suite

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