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() ──┘
maak_synthetische_1cho() maakt een fictieve instelling
met complete studieloopbanen in het formaat van de 1cijferho-enriched
output. We schrijven die weg als CSV en lezen hem in zoals je dat met
een echte aanlevering doet.
synth <- maak_synthetische_1cho(n_per_jaar = 100, jaren = 2014:2023)
pad <- tempfile(fileext = ".csv")
readr::write_delim(synth, pad, delim = ";", na = "")
basis <- maak_basisbestand(pad)
laatste_jaar <- max(basis$inschrijvingsjaar)
laatste_jaar
#> [1] 2023maak_instroom_cohort() filtert op nieuwe
eerstejaarsstudenten: hoofdinschrijving en verblijfsjaar 1 aan de
instelling.
maak_diploma_behaald() zoekt het vroegste diploma per
student, met de opleiding waarin het behaald is.
bereken_rendement() bepaalt of dat binnen 3, 5 of 8 jaar
was.
diploma <- maak_diploma_behaald(basis)
rendement <- bereken_rendement(cohorten, diploma, laatste_jaar = laatste_jaar)
table(rendement$eerstejaar_instelling, rendement$rendement_5jr)
#>
#> Diploma binnen 5 jaar Diploma na 5 jaar Geen diploma
#> 2014 66 14 20
#> 2015 61 18 21
#> 2016 57 12 31
#> 2017 57 19 24
#> 2018 52 20 28
#> 2019 58 0 42
#> 2020 0 0 0
#> 2021 0 0 0
#> 2022 0 0 0
#> 2023 0 0 0
#>
#> Nog niet waarneembaar
#> 2014 0
#> 2015 0
#> 2016 0
#> 2017 0
#> 2018 0
#> 2019 0
#> 2020 100
#> 2021 100
#> 2022 100
#> 2023 100Cohorten vanaf 2020 zitten nog geen 5 jaar in de data. Die studenten krijgen “Nog niet waarneembaar” en tellen niet mee in percentages. Zonder deze regel zou het rendement voor recente cohorten kunstmatig instorten.
bereken_uitval() bepaalt de status van elke student:
diploma behaald, zittend of uitgevallen. Het peiljaar wordt afgeleid uit
de data.
bereken_studiewissel() detecteert of een student binnen
1 of 3 jaar van opleiding is gewisseld.
combineer_indicatoren() voegt alle stappen samen tot één
analysebestand.
indicatoren <- combineer_indicatoren(cohorten, rendement, uitval, wissel)
head(indicatoren[, c("inschrijvingsjaar", "opleidingscode", "status", "rendement", "uitval", "studiewissel")])
#> # A tibble: 6 × 6
#> inschrijvingsjaar opleidingscode status rendement uitval studiewissel
#> <int> <fct> <fct> <chr> <chr> <chr>
#> 1 2014 35501 Diploma behaald Diploma … Niet … Niet gewiss…
#> 2 2014 34401 Diploma behaald Diploma … Niet … Niet gewiss…
#> 3 2014 35501 Diploma behaald Diploma … Niet … Niet gewiss…
#> 4 2014 35501 Diploma behaald Diploma … Niet … Niet gewiss…
#> 5 2014 34402 Uitgevallen Geen dip… Uitge… Niet gewiss…
#> 6 2014 34401 Diploma behaald Diploma … Niet … Gewisseld b…Op studentniveau (standaard) telt een student één
keer, in de opleiding waarin die student instroomt. Alle uitkomsten
gelden voor de hele instelling: een student die wisselt en in een andere
opleiding een diploma haalt, telt bij de instroomopleiding als “Diploma
behaald”. De kolom diploma_in_instroomopleiding laat zien
hoe vaak dat gebeurt:
table(indicatoren$diploma_in_instroomopleiding, useNA = "ifany")
#>
#> FALSE TRUE <NA>
#> 50 429 521Op inschrijvingsniveau is elke opleiding een eigen cohort: een wissel telt als uitval uit de oude opleiding en als instroom in de nieuwe. Kies dit niveau als je opleidingen met elkaar wilt vergelijken.
maak_benchmarkrapport() aggregeert per sector,
opleidingsvorm, niveau en instroomjaar, met privacyonderdrukking van
kleine groepen. schrijf_benchmarkrapport() slaat het op als
Excel met toelichting en metadata.
rapport <- maak_benchmarkrapport(indicatoren)
rapport[rapport$sector == "totaal", c("inschrijvingsjaar", "n", "pct_uitval_1jr", "pct_rendement_5jr")]
#> # A tibble: 10 × 4
#> inschrijvingsjaar n pct_uitval_1jr pct_rendement_5jr
#> <int> <dbl> <dbl> <dbl>
#> 1 2014 100 11 66
#> 2 2015 100 11 61
#> 3 2016 100 18 57
#> 4 2017 100 13 57
#> 5 2018 100 17 52
#> 6 2019 100 13 58
#> 7 2020 100 13 NA
#> 8 2021 100 15 NA
#> 9 2022 100 20 NA
#> 10 2023 100 NA NAVoor interactieve verkenning kun je het dashboard starten en het CSV-bestand uploaden:
Wil je het rapport elk jaar op precies dezelfde manier maken, zonder
door het dashboard te klikken? Download staat1cho
als ZIP en open pipeline.R in RStudio. Vul bovenin het
pad naar je _enriched.csv in (met /, ook op
Windows):
pad_1cho <- "C:/Tools/1cijferho/data/02-output/EV21PL24_enriched.csv"
niveau <- "student" # of "inschrijving"
vakhawv_pad <- "" # pad naar VAKHAVW..._decoded.csv, of leeg
vlpbek_pad <- "" # nog leeg latenKies Session > Set Working Directory > To
Source File Location en klik op Source. De
pipeline zet het benchmarkrapport en de tussenbestanden in de map
Output/<jaar> naast pipeline.R.
| Functie | Wat het doet |
|---|---|
start_dashboard() |
Start het interactieve Shiny-dashboard |
maak_basisbestand() |
Laadt het 1CHO-bestand en voegt labelkolommen toe |
maak_instroom_cohort() |
Maakt het cohortbestand aan (nieuwe instromers) |
maak_diploma_behaald() |
Bepaalt diplomaresultaten per student |
bereken_rendement() |
Rendement binnen 3, 5 en 8 jaar |
bereken_uitval() |
Uitvalstatus binnen 1 en 3 jaar |
bereken_studiewissel() |
Studiewissel binnen 1 en 3 jaar |
combineer_indicatoren() |
Voegt alle indicatoren samen, met vooropleiding, eerstejaars HO en
het attribuut peildatum |
lees_vakhawv() /
verrijk_met_vakhawv() |
Leest VAKHAVW-vakcijfers en koppelt ze per student |
lees_bekostiging() /
verrijk_met_bekostiging() |
Leest een VLPBEK-bestand en koppelt de bekostigingsstatus (koppelt
nog niet aan echte EV-bestanden, zie
?lees_bekostiging) |
is_gepseudonimiseerd() |
Herkent gepseudonimiseerde persoonsnummers |
maak_benchmarkrapport() |
Geaggregeerd rapport met peildatum en privacyonderdrukking (groepen < 30, cellen < 5) |
schrijf_benchmarkrapport() |
Slaat het benchmarkrapport op als Excel met toelichting, validatie en metadata |
maak_synthetische_1cho() |
Synthetisch 1CHO-bestand met bekende uitkomsten voor demo en validatie |
DEFINITIES, BEKOSTIGINGSTATUS_CODES |
Definities van de indicatoren en de DUO-redencodes |
staat1cho verwacht de _enriched.csv van 1cijferho:
puntkomma-gescheiden, UTF-8, kolomnamen in snake_case. Het dashboard
controleert na het uploaden of de verplichte kolommen aanwezig zijn. De
kolommen
hoogste_vooropleiding_voor_het_ho_omschrijving_vooropleiding
en eerste_jaar_in_het_hoger_onderwijs zijn optioneel;
zonder die kolommen worden vooropleiding en eerstejaars HO
“onbekend”.
Het package vraagt R 4.1.0 of nieuwer. Voor het dashboard zijn
daarnaast bslib, DT, ggplot2,
plotly, scales, tidyr en
writexl nodig.