staat1cho berekent vier studie-indicatoren per
instroomcohort op basis van de 1CHO-aanlevering van DUO:
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() ──┘
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"
)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 2020maak_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_diplomaS1 heeft een diploma in 2022, S2 en S3 niet.
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 diplomabereken_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…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 bepaaldcombineer_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…Voor interactieve verkenning van de data kun je het dashboard starten:
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.