Aan de slag met staat1cho

Wat doet dit package?

staat1cho berekent vier studie-indicatoren per instroomcohort op basis van de 1CHO-aanlevering van DUO:

De pipeline

De functies werken in vaste volgorde. Elke stap bouwt voort op de vorige.

maak_basisbestand()
    └── maak_instroom_cohort()  ──┐
    └── maak_diploma_behaald()  ──┼── bereken_rendement()   ──┐
                                  ├── bereken_uitval()       ──┼── combineer_indicatoren()
                                  └── bereken_studiewissel() ──┘

Voorbeeld met synthetische data

In productie begint de pipeline met maak_basisbestand(), die het 1CHO CSV-bestand inleest. Hier bouwen we een minibestand handmatig om de stappen te laten zien.

library(tibble)

## Drie studenten, twee cohortjaren
## S1: behaalt diploma in 2022 (binnen 3 jaar na instroom 2020)
## S2: valt uit na 1 jaar (verschijnt alleen in 2020)
## S3: wisselt opleiding na 1 jaar (andere opleidingscode in 2021)

hoofd <- "hoofdinschrijving binnen het domein actuele instelling"
bachelor_diploma <- "Hoofd-bachelor-diploma binnen de actuele instelling"

basisbestand <- tibble(
  persoonsgebonden_nummer = c("S1", "S1", "S2", "S3", "S3"),
  inschrijvingsjaar       = c(2020L, 2021L, 2020L, 2020L, 2021L),
  verblijfsjaar_actuele_instelling = c(1L, 2L, 1L, 1L, 2L),
  soort_hoger_onderwijs   = "hbo",
  soort_inschrijving_actuele_instelling = hoofd,
  soort_inschrijving_actuele_instelling_label = hoofd,
  diplomajaar             = c(NA_integer_, 2022L, NA_integer_, NA_integer_, NA_integer_),
  soort_diploma_instelling = c(NA, bachelor_diploma, NA, NA, NA),
  soort_diploma_instelling_label = c(NA, bachelor_diploma, NA, NA, NA),
  geslacht_label = "man",
  opleidingsvorm = "voltijd",
  opleidingsvorm_label = "voltijd",
  indicatie_internationale_student_label = "geen internationale student",
  indicatie_eer_actueel_label = "geen EER-student",
  croho_onderdeel_actuele_opleiding = "techniek",
  croho_onderdeel_actuele_opleiding_label = "techniek",
  opleiding_actueel_equivalent = c("34401", "34401", "34401", "34401", "39999"),
  type_hoger_onderwijs_binnen_soort_hoger_onderwijs = "ba",
  leeftijd_per_peildatum_1_oktober = 19L,
  postcodecijfers_student_op_1_oktober = "4818",
  postcodecijfers_van_de_hoogste_vooropl_voor_het_ho = "4818",
  locatie_label = "Breda"
)

Stap 1: instroomcohort

maak_instroom_cohort() filtert op nieuwe eerstejaarsstudenten. Studenten die al eerder waren ingeschreven (verblijfsjaar > 1) vallen af.

cohorten <- maak_instroom_cohort(basisbestand, soort_ho = "hbo")
cohorten[, c("persoonsgebonden_nummer", "inschrijvingsjaar", "eerstejaar_instelling")]
#> # A tibble: 3 × 3
#>   persoonsgebonden_nummer inschrijvingsjaar eerstejaar_instelling
#>   <chr>                               <int>                 <int>
#> 1 S1                                   2020                  2020
#> 2 S2                                   2020                  2020
#> 3 S3                                   2020                  2020

Stap 2: diploma bepalen

maak_diploma_behaald() zoekt het vroegste diploma per student.

diploma <- maak_diploma_behaald(basisbestand)
diploma
#> # A tibble: 1 × 4
#>   persoonsgebonden_nummer jaar_eerste_diploma verblijfsjaar_eerste_dip…¹ diploma
#>   <chr>                                 <int>                      <int> <chr>  
#> 1 S1                                     2022                          2 Diplom…
#> # ℹ abbreviated name: ¹​verblijfsjaar_eerste_diploma

S1 heeft een diploma in 2022, S2 en S3 niet.

Stap 3: rendement

bereken_rendement() berekent of een student binnen 3, 5 of 8 jaar een diploma heeft behaald.

rendement <- bereken_rendement(cohorten, diploma)
rendement[, c("persoonsgebonden_nummer", "rendement_3jr", "rendement_5jr", "rendement_8jr")]
#> # A tibble: 3 × 4
#>   persoonsgebonden_nummer rendement_3jr         rendement_5jr      rendement_8jr
#>   <chr>                   <fct>                 <fct>              <fct>        
#> 1 S1                      Diploma binnen 3 jaar Diploma binnen 5 … Diploma binn…
#> 2 S2                      Geen diploma          Geen diploma       Geen diploma 
#> 3 S3                      Geen diploma          Geen diploma       Geen diploma

Stap 4: uitval

bereken_uitval() bepaalt de status van elke student: diploma behaald, zittend, of uitgevallen.

## peiljaar = het jaar na het laatste jaar in de data
uitval <- bereken_uitval(basisbestand, diploma, cohorten, jaar = 2023L)
uitval[, c("persoonsgebonden_nummer", "status", "uitval_1jr", "uitval_3jr")]
#> # A tibble: 3 × 4
#>   persoonsgebonden_nummer status          uitval_1jr                  uitval_3jr
#>   <chr>                   <fct>           <fct>                       <fct>     
#> 1 S1                      Diploma behaald Na 1 jaar nog ingeschreven… Na 3 jaar…
#> 2 S2                      Uitgevallen     Uitgevallen binnen 1 jaar   Uitgevall…
#> 3 S3                      Uitgevallen     Na 1 jaar nog ingeschreven… Uitgevall…

Stap 5: studiewissel

bereken_studiewissel() detecteert of een student binnen 1 of 3 jaar van opleiding is gewisseld.

wissel <- bereken_studiewissel(basisbestand, cohorten, diploma, uitval)
wissel[, c("persoonsgebonden_nummer", "studiewissel_1jr", "studiewissel_3jr")]
#> # A tibble: 3 × 3
#>   persoonsgebonden_nummer studiewissel_1jr             studiewissel_3jr   
#>   <chr>                   <fct>                        <fct>              
#> 1 S1                      Niet gewisseld binnen 1 jaar Geen switch bepaald
#> 2 S2                      Geen switch bepaald          Geen switch bepaald
#> 3 S3                      Gewisseld binnen 1 jaar      Geen switch bepaald

Stap 6: combineren

combineer_indicatoren() voegt alle stappen samen tot één analysebestand.

indicatoren <- combineer_indicatoren(cohorten, rendement, uitval, wissel)
indicatoren[, c("inschrijvingsjaar", "opleidingscode", "status", "rendement", "uitval", "studiewissel")]
#> # A tibble: 3 × 6
#>   inschrijvingsjaar opleidingscode status          rendement uitval studiewissel
#>               <int> <fct>          <fct>           <chr>     <chr>  <chr>       
#> 1              2020 34401          Diploma behaald Diploma … Niet … Niet gewiss…
#> 2              2020 34401          Uitgevallen     Geen dip… Uitge… Niet gewiss…
#> 3              2020 34401          Uitgevallen     Geen dip… Uitge… Gewisseld b…

Dashboard

Voor interactieve verkenning van de data kun je het dashboard starten:

start_dashboard()

Het dashboard vraagt om een 1CHO CSV-bestand en berekent automatisch alle indicatoren. Vanuit het dashboard kun je filteren op jaar, locatie, sector en opleiding, en de gefilterde data downloaden als CSV.