Analisi dei dati PISA 2018 con R
Questa guida mostra come analizzare correttamente i dati dell'indagine OCSE PISA utilizzando R, rispettando le indicazioni metodologiche ufficiali per la stima di medie, regressioni e modelli multilivello su dati complessi con design campionario a più stadi.
EdSurvey che
automatizza entrambi i passaggi.
- Analisi manuale con Plausible Values
- Analisi avanzata con replicate weights (BRR)
- Utilizzo del pacchetto EdSurvey
1 Analisi manuale (PV + Rubin)
- Import dati studenti e scuole
- Preparazione e join del dataset
- Definizione variabili di interesse
- Loop sui 10 Plausible Values
- Stima modello multilivello per ciascun PV
- Salvataggio coefficienti
- Combinazione con regole di Rubin
library(tidyverse)
library(lme4)
# Import dati
student <- read.csv("CY07_MSU_STU_QQQ.csv")
school <- read.csv("CY07_MSU_SCH_QQQ.csv")
# Join studenti-scuole
data <- student %>%
left_join(school, by = c("CNT", "CNTSCHID"))
2 Analisi avanzata (PV + BRR)
Per stime corrette degli errori standard è necessario combinare il loop sui 10 Plausible Values con il loop sugli 80 replicate weights BRR. La varianza finale tiene conto sia dell'incertezza campionaria che dell'imputazione multipla.
rep_weights <- paste0("W_FSTR", 1:80)
pv_results <- list()
for (pv in 1:10) {
pv_name <- paste0("PV", pv, "FLIT")
coef_reps <- matrix(NA, nrow = 80)
for (r in 1:80) {
weight_var <- rep_weights[r]
data_analysis$weight <- data_analysis[[weight_var]]
coef_reps[r, ] <- estimate_model(data_analysis, pv_name)
}
# Varianza campionaria BRR
sampling_var <- (4 / 80) * colSums((coef_reps - colMeans(coef_reps))^2)
pv_results[[pv]] <- list(
coef = estimate_model(data_analysis, pv_name),
sampling_var = sampling_var
)
}
# Combinazione Rubin
final <- combine_rubin(pv_results)
3 Metodo EdSurvey
Il pacchetto EdSurvey automatizza la gestione di Plausible Values e
replicate weights nelle grandi indagini educative internazionali (PISA, TIMSS, PIRLS, ecc.),
riducendo drasticamente il codice necessario e minimizzando il rischio di errori metodologici.
install.packages("EdSurvey")
library(EdSurvey)
# Lettura dati PISA 2018 (International)
pisa <- readPISA(
path = "PISA2018/",
database = "INT"
)
# Regressione con gestione automatica di PV e BRR
model <- lm.sdf(
PVFLIT ~ ESCS + ST004D01T + IMMIG,
data = pisa
)
summary(model)
Riferimenti
- OECD (2020). PISA 2018 Technical Report. OECD Publishing, Paris.
- Bailey, P. & Zhang, T. (2023). EdSurvey: A Package for Analyzing NCES Data. R package documentation.
- OECD (2009). PISA Data Analysis Manual: SPSS and SAS (2nd ed.). OECD Publishing.