R package voor kansengelijkheidsanalyse in het hoger onderwijs
Het NFWA (No Fairness Without Awareness) package is een R package ontwikkeld op basis van het onderzoek van het lectoraat Learning Technology & Analytics (LTA) van De Haagse Hogeschool. Het LTA heeft tot doel kansengelijkheid voor studenten te verhogen met behulp van learning analytics en inzet van learning technology.
Het lectoraat heeft een onderzoeksmethode ontwikkeld om te kunnen analyseren of er sprake is van bias in studiedata in relatie tot het succes van studenten, wat een indicatie kan zijn van een gebrek aan kansengelijkheid. Deze methode gebruikt prognosemodellen op basis van machine learning. Een prognosemodel is dus niet een doel op zich, maar het instrument voor een analyse van kansengelijkheid, ook wel een fairness analyse genoemd.
Over deze methode heeft lector, Dr. Theo Bakker, zijn intreerede uitgesproken op 21 november 2024, getiteld: "No Fairness without Awareness. Toegepast onderzoek naar kansengelijkheid in het hoger onderwijs. Intreerede lectoraat Learning Technology & Analytics." (Bakker, 2024).
- Complete analyse in één functie -
analyze_fairness()voert alle stappen automatisch uit - Interactieve webinterface -
run_app()opent een Shiny app voor gebruik zonder R-kennis - Automatische data transformatie - Van 1CHO data naar analyse-klaar formaat
- Machine learning modellen - Logistic Regression en Random Forest voor prognoses
- Fairness-metrieken - Equal Opportunity, Predictive Parity, Accuracy Equality, Statistical Parity
- Visualisaties - Automatische generatie van dichtheidsplots en fairness-check plots
- PDF rapportage - Professionele rapporten met Quarto
- Metadata inbegrepen - Standaard metadata voor directe gebruik
- Cross-platform - Werkt op Windows, macOS en Linux
Je kunt het NFWA package direct vanuit GitHub installeren:
# Installeer remotes package als je het nog niet hebt
install.packages("remotes")
# Installeer het NFWA package
remotes::install_github("cedanl/no-fairness-without-awareness")| Software | Beschrijving | Download |
|---|---|---|
| R | Versie 4.3 of hoger | Download R |
| RStudio | Aanbevolen IDE (optioneel maar handig) | Download RStudio |
| Rtools | Alleen voor Windows - nodig voor package compilatie | Download Rtools |
| Quarto | Vereist voor PDF rapportage | Download Quarto |
| TinyTeX | LaTeX distributie voor PDF compilatie | Automatisch via tinytex::install_tinytex() |
Als je PDF rapporten wilt genereren, moet je Quarto installeren:
- Download en installeer Quarto van https://quarto.org/docs/get-started/
- Herstart R/RStudio volledig na installatie
- Verificatie:
quarto::quarto_path() # Moet een pad naar Quarto returneren, niet NULL
Troubleshooting:
- Als
quarto::quarto_path()NULLreturnt, is Quarto niet in je PATH - Herstart R/RStudio na Quarto installatie
- Op Windows: Zorg dat je account admin rechten had bij de installatie
- Geen Quarto? Zet
generate_pdf = FALSEinanalyze_fairness()en voer alleen analyses uit
Voor beleidsmakers en bestuurders die de analyse willen uitvoeren zonder R te leren:
library(nfwa)
# Installeer de Shiny dependencies indien nodig
install.packages(c("shiny", "bslib"))
# Open de webinterface
run_app()De app opent in je browser. Upload je EV en VAKHAVW bestanden, selecteer de opleiding en het instroomcohort, en download het PDF rapport.
library(nfwa)
# Laad je 1CHO data (CSV bestanden met puntkomma separator)
data_ev <- read.csv("pad/naar/jouw_EV_bestand.csv", sep = ";")
data_vakhavw <- read.csv("pad/naar/jouw_VAKHAVW_bestand.csv", sep = ";")
# Voer complete analyse uit
# eoi = minimaal instroomcohort (studenten die in 2020 of later zijn gestart)
result <- analyze_fairness(
data_ev = data_ev,
data_vakhavw = data_vakhavw,
opleidingsnaam = "B Tandheelkunde",
eoi = 2020,
opleidingsvorm = "VT",
generate_pdf = TRUE
)Dat is alles! De functie voert automatisch alle stappen uit en genereert een PDF rapport in je working directory.
Stap-voor-stap aanpak (voor meer controle)
library(nfwa)
# 1. Lees metadata in
metadata <- read_metadata()
# 2. Transformeer je data
df <- transform_data(
metadata = metadata,
opleidingsnaam = "B Tandheelkunde",
opleidingsvorm = "VT",
eoi = 2020, # studenten vanaf cohort 2020
data_ev = data_ev,
data_vakhavw = data_vakhavw
)
# 3. Voer de fairness-analyse uit
cutoff <- sum(df$retentie) / nrow(df)
run_nfwa(
df = df,
df_levels = metadata$df_levels,
sensitive_variables = metadata$sensitive_variables,
cutoff = cutoff
)
# 4. Genereer PDF rapport
render_report(
opleidingsnaam = "B Tandheelkunde",
opleidingsvorm = "VT"
)Resultaten verschijnen in de temp/ map:
fairness_density_{variabele}.png- Dichtheidsplotsfairness_plot_{variabele}.png- Fairness-check plotsconclusions_list.rds- Tekstuele conclusiesresult_table.png- Samenvattende resultatentabel
Tijdelijke bestanden opruimen:
# Na het genereren van je PDF rapport:
cleanup_temp()
# Of automatisch tijdens render:
render_report(
opleidingsnaam = "B Tandheelkunde",
opleidingsvorm = "VT",
cleanup_temp = TRUE
)Dit package werkt met enriched 1CHO data. Dat zijn de bestanden die eindigen op _enriched.csv, gegenereerd door de 1CijferHO Tool.
Gebruik de 1CijferHO Tool om je ruwe 1CHO bestanden om te zetten naar enriched CSV's. De tool draait de volledige pipeline voor je:
eencijferho pipeline --input data/01-input --output data/02-outputDit levert onder andere op:
EV*_enriched.csv-- inschrijvingsgegevens met gedecodeerde veldenVAKHAVW*_enriched.csv-- vakcijfers
De enriched bestanden bevatten leesbare namen in plaats van codes, bijvoorbeeld opleidingsnamen (opleidingscode_naam_opleiding) en vooropleiding-omschrijvingen. NFWA heeft deze gedecodeerde kolommen nodig om te werken.
Gebruik dus altijd de
_enriched.csvbestanden, niet de_decoded.csvof de gewone.csvoutput.
data_ev <- read.csv("pad/naar/EV_enriched.csv", sep = ";")
data_vakhavw <- read.csv("pad/naar/VAKHAVW_enriched.csv", sep = ";")data_ev (EV-bestand, studentniveau):
- Inschrijvingsgegevens per student
- Gedecodeerde opleidingsnamen (
opleidingscode_naam_opleiding) - Gedecodeerde vooropleiding-omschrijvingen
- Persoonsgebonden nummer, geslacht, postcode, etc.
data_vakhavw (VAKHAVW-bestand, vakniveau):
- Vakcijfers per student (centraal examen, schoolexamen)
- Gekoppeld via persoonsgebonden nummer
Data formaat: CSV bestanden met puntkomma (;) als separator.
Het package bevat standaard metadata (variabelen, levels, APCG en SES data). Je hoeft geen eigen metadata aan te leveren -- read_metadata() laadt alles automatisch.
# Package overzicht
?nfwa
# Functie-specifieke help
?analyze_fairness
?transform_data
?run_nfwa
?render_report
?cleanup_tempVoor een uitgebreide handleiding met voorbeelden:
# Bekijk de vignette in R
vignette("nfwa")
# Of open in browser
browseVignettes("nfwa")| Functie | Beschrijving |
|---|---|
run_app() |
Open de Shiny webinterface (geen R-kennis vereist) |
analyze_fairness() |
Complete analyse in één functie (AANBEVOLEN) |
read_metadata() |
Laad package metadata |
transform_data() |
Transformeer ruwe 1CHO data |
run_nfwa() |
Voer fairness-analyse uit |
render_report() |
Genereer PDF rapport |
cleanup_temp() |
Ruim tijdelijke bestanden op |
- 1cijferho - Data voorbereiding: converteert 1CHO bestanden naar het juiste formaat voor NFWA
- GitHub repository: cedanl/no-fairness-without-awareness
- Issues en bugs: GitHub Issues
- Pull requests zijn welkom!
Dit project is gelicenseerd onder de voorwaarden van de licentie zoals gespecificeerd in het LICENSE bestand.
Bakker, T. (2024). No Fairness without Awareness. Toegepast onderzoek naar kansengelijkheid in het hoger onderwijs. Intreerede lectoraat Learning Technology & Analytics. https://doi.org/10.5281/zenodo.14204674
Lectoraat Learning Technology & Analytics De Haagse Hogeschool Web: http://www.hhs.nl