--- title: "Aan de slag met staat1cho" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Aan de slag met staat1cho} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include = FALSE} knitr::opts_chunk$set(collapse = TRUE, comment = "#>") library(staat1cho) ``` ## Wat doet dit package? `staat1cho` berekent vier studie-indicatoren per instroomcohort op basis van de 1CHO-aanlevering van DUO: - **Instroom**: nieuwe studenten per cohortjaar - **Rendement**: diploma behaald binnen 3, 5 of 8 jaar - **Uitval**: student uitgeschreven zonder diploma binnen 1 of 3 jaar - **Studiewissel**: student gewisseld van opleiding binnen 1 of 3 jaar ## 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. ```{r basisbestand} 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. ```{r instroom} cohorten <- maak_instroom_cohort(basisbestand, soort_ho = "hbo") cohorten[, c("persoonsgebonden_nummer", "inschrijvingsjaar", "eerstejaar_instelling")] ``` ### Stap 2: diploma bepalen `maak_diploma_behaald()` zoekt het vroegste diploma per student. ```{r diploma} diploma <- maak_diploma_behaald(basisbestand) 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. ```{r rendement} rendement <- bereken_rendement(cohorten, diploma) rendement[, c("persoonsgebonden_nummer", "rendement_3jr", "rendement_5jr", "rendement_8jr")] ``` ### Stap 4: uitval `bereken_uitval()` bepaalt de status van elke student: diploma behaald, zittend, of uitgevallen. ```{r uitval} ## 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")] ``` ### Stap 5: studiewissel `bereken_studiewissel()` detecteert of een student binnen 1 of 3 jaar van opleiding is gewisseld. ```{r wissel} wissel <- bereken_studiewissel(basisbestand, cohorten, diploma, uitval) wissel[, c("persoonsgebonden_nummer", "studiewissel_1jr", "studiewissel_3jr")] ``` ### Stap 6: combineren `combineer_indicatoren()` voegt alle stappen samen tot één analysebestand. ```{r combineer, warning = FALSE} indicatoren <- combineer_indicatoren(cohorten, rendement, uitval, wissel) indicatoren[, c("inschrijvingsjaar", "opleidingscode", "status", "rendement", "uitval", "studiewissel")] ``` ## Dashboard Voor interactieve verkenning van de data kun je het dashboard starten: ```{r dashboard, eval = FALSE} 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.