Introducción al análisis de datos PISA. Los pesos muestrales y los pesos replicados
En el anterior artículo de esta serie vimos una introducción al análisis de datos PISA, con unos ejemplos de funciones en código R para realizar muestreos, y hablamos de los pesos muestrales, que ponderan a cada uno de los alumnos de manera que represente a un conjunto de individuos con las mismas características en lugar de a un solo alumno (no olvidemos que PISA pretende evaluar el efecto de las políticas educativas sobre el conjunto de la población del país, no sobre alumnos individuales). En el presente artículo, veremos cómo utilizar estos pesos a la hora de obtener estadísticos a partir de las muestras y veremos también como calcular los errores típicos de estos estadísticos utilizando pesos replicados.
En este enlace tenéis una introducción al programa PISA más detallada, y en este otro podéis descargar el manual de análisis de datos PISA, donde encontraréis un desarrollo más riguroso y completo de los temas que veremos aquí.
Aquí podéis descargar descargar ejemplos de código R para realizar cálculos con pesos replicados, estas funciones son las que utilizaremos en este artículo. También utilizaremos dos conjuntos de datos de ejemplo, aquí podéis descargar la muestra de datos de PISA 2003 de Alemania, y en este otro podéis descargar la muestra de datos de PISA 2012 para España, Perú y Finlandia.
Conjunto de datos Alemania 2003
Este conjunto de datos contiene datos para todos los alumnos que realizaron el examen en Alemania el año 2003. En primer lugar, vamos a cargar los datos en un dataframe y examinar las columnas que contiene:
datadeu<-read.csv("datadeu-2003.csv",sep=";")
names(datadeu)
[1] "YEAR" "STUDENTID" "SCHOOLID" "COUNTRY_NAME" "SUBNATIO_NAME" "STRATUM_NAME"
[7] "CULTPOSS" "HISCED" "HISEI" "ST01Q01" "ST03Q01" "PARED"
[13] "W_FSTR1" "W_FSTR2" "W_FSTR3" "W_FSTR4" "W_FSTR5" "W_FSTR6"
[19] "W_FSTR7" "W_FSTR8" "W_FSTR9" "W_FSTR10""W_FSTR11""W_FSTR12"
[25] "W_FSTR13""W_FSTR14""W_FSTR15""W_FSTR16""W_FSTR17""W_FSTR18"
[31] "W_FSTR19""W_FSTR20""W_FSTR21""W_FSTR22""W_FSTR23""W_FSTR24"
[37] "W_FSTR25""W_FSTR26""W_FSTR27""W_FSTR28""W_FSTR29""W_FSTR30"
[43] "W_FSTR31""W_FSTR32""W_FSTR33""W_FSTR34""W_FSTR35""W_FSTR36"
[49] "W_FSTR37""W_FSTR38""W_FSTR39""W_FSTR40""W_FSTR41""W_FSTR42"
[55] "W_FSTR43""W_FSTR44""W_FSTR45""W_FSTR46""W_FSTR47""W_FSTR48"
[61] "W_FSTR49""W_FSTR50""W_FSTR51""W_FSTR52""W_FSTR53""W_FSTR54"
[67] "W_FSTR55""W_FSTR56""W_FSTR57""W_FSTR58""W_FSTR59""W_FSTR60"
[73] "W_FSTR61""W_FSTR62""W_FSTR63""W_FSTR64""W_FSTR65""W_FSTR66"
[79] "W_FSTR67""W_FSTR68""W_FSTR69""W_FSTR70""W_FSTR71""W_FSTR72"
[85] "W_FSTR73""W_FSTR74""W_FSTR75""W_FSTR76""W_FSTR77""W_FSTR78"
[91] "W_FSTR79""W_FSTR80""W_FSTUWT""PV1MATH" "PV2MATH" "PV3MATH"
[97] "PV4MATH" "PV5MATH" "PV1READ" "PV2READ" "PV3READ" "PV4READ"
[103] "PV5READ" "SCWEIGHT""BFMJ_2003" "BMMJ_2003" "BSMJ_2003"
Las primeras seis columnas simplemente identifican al alumno y no las vamos a utilizar. Los datos que utilizaremos en los ejemplos están en las siguientes columnas:
- HISEI: Se trata de un índice de status socioeconómico basado en el índice internacional ISEI. Se toma el mayor de los índices que corresponden a los padres según su ocupación. Es una variable continua.
- ST01Q01: Se trata del grado o curso en el que estaba el alumno en el momento del examen. El examen no se realiza a alumnos que están en el mismo curso, sino a alumnos que tienen la misma edad, por lo que es posible encontrar, en función de determinados parámetros como el mes de nacimiento, alumnos de diferentes cursos.
- ST03Q01: Aquí tenemos el sexo del alumno, es un factor con dos niveles, 1 es masculino y 2 es femenino.
- W_FSTUWT: En esta columna tenemos el peso que le corresponde al alumno.
- W_FSTR1 a W_FSTR80: En estas columnas están los 80 pesos replicados, que veremos un poco más adelante.
En la web oficial de PISA de la OCDE podéis encontrar documentación sobre todas las preguntas y un extenso informe técnico para cada uno de los años en los que se ha realizado el examen.
Conjunto de datos España, Perú y Finlandia 2012
Este otro conjunto de datos contiene datos de tres países diferentes, Finlandia, Perú y España, y lo utilizaremos para ver ejemplos de trabajo sobre muestras con varios países. Como antes, lo cargaremos y veremos las columnas que contiene:
dataepf<-read.csv("dataesp-fin-per-2012.csv",sep=";")
names(dataepf)
[1] "YEAR" "STUDENTID" "SCHOOLID" "COUNTRY_NAME" "SUBNATIO_NAME" "STRATUM_NAME"
[7] "CULTPOSS" "REPEAT_2012" "FAMSTRUC2" "ST35Q04_2012" "ST35Q05_2012" "ST35Q06_2012"
[13] "HISEI" "TIMEINT" "ST03Q01" "BELONG" "W_FSTR1" "W_FSTR2"
[19] "W_FSTR3" "W_FSTR4" "W_FSTR5" "W_FSTR6" "W_FSTR7" "W_FSTR8"
[25] "W_FSTR9" "W_FSTR10" "W_FSTR11" "W_FSTR12" "W_FSTR13" "W_FSTR14"
[31] "W_FSTR15" "W_FSTR16" "W_FSTR17" "W_FSTR18" "W_FSTR19" "W_FSTR20"
[37] "W_FSTR21" "W_FSTR22" "W_FSTR23" "W_FSTR24" "W_FSTR25" "W_FSTR26"
[43] "W_FSTR27" "W_FSTR28" "W_FSTR29" "W_FSTR30" "W_FSTR31" "W_FSTR32"
[49] "W_FSTR33" "W_FSTR34" "W_FSTR35" "W_FSTR36" "W_FSTR37" "W_FSTR38"
[55] "W_FSTR39" "W_FSTR40" "W_FSTR41" "W_FSTR42" "W_FSTR43" "W_FSTR44"
[61] "W_FSTR45" "W_FSTR46" "W_FSTR47" "W_FSTR48" "W_FSTR49" "W_FSTR50"
[67] "W_FSTR51" "W_FSTR52" "W_FSTR53" "W_FSTR54" "W_FSTR55" "W_FSTR56"
[73] "W_FSTR57" "W_FSTR58" "W_FSTR59" "W_FSTR60" "W_FSTR61" "W_FSTR62"
[79] "W_FSTR63" "W_FSTR64" "W_FSTR65" "W_FSTR66" "W_FSTR67" "W_FSTR68"
[85] "W_FSTR69" "W_FSTR70" "W_FSTR71" "W_FSTR72" "W_FSTR73" "W_FSTR74"
[91] "W_FSTR75" "W_FSTR76" "W_FSTR77" "W_FSTR78" "W_FSTR79" "W_FSTR80"
[97] "W_FSTUWT" "PV1MATH" "PV2MATH" "PV3MATH" "PV4MATH" "PV5MATH"
[103] "PV1READ" "PV2READ" "PV3READ" "PV4READ" "PV5READ" "PV1SCIE"
[109] "PV2SCIE" "PV3SCIE" "PV4SCIE" "PV5SCIE" "SCWEIGHT"
En este conjunto de datos usaremos las mismas columnas que en el anterior, pero además realizaremos la estratificación por países a partir de la columna COUNTRY_NAME. El sexo en este conjunto de datos está codificado como 0 (masculino) y 1 (femenino).
El peso de los alumnos
En la columna W_FSTUWT se encuentra el valor del peso de cada alumno. La suma de pesos en la muestra completa nos debe dar como resultado el número total de alumnos de 15 años en el país correspondiente. Por ejemplo, en Alemania 2003:
sum(datadeu[,"W_FSTUWT"])
884357.7
Aunque en realidad tenemos poco más de 4000 registros:
nrow(datadeu)
4660
La forma correcta de calcular los estadísticos, como la media, es ponderar los valores de las columnas que intervienen en el cálculo con el peso del alumno, y usar la suma total de pesos como tamaño muestral. Por este motivo, cuando obtenemos una submuestra, debemos corregir las columnas que contienen los pesos de manera que su suma siga siendo igual a la población total. Por ejemplo, obtenemos una submuestra de 1000 alumnos de Alemania 2003 (aquí podéis descargar ejemplos de código para muestreo de datos PISA):
source("pisa-sampling-code.R")
deusamp<-wght_sample(datadeu,c(9,10,11,107,13:93),1000,13:93)
El segundo parámetro son los índices de las columnas que queremos obtener, el tercero el número máximo de registros y el último los índices de las columnas que contienen pesos. Eliminamos las filas con datos faltantes, ya que, por simplicidad, los ejemplos consideran que la muestra no tiene faltantes.
Si ahora calculamos la suma de los pesos en la submuestra, veremos que el valor sigue siendo aproximadamente el de la población total:
sum(deusamp[,"W_FSTUWT"])
868076
Como hemos realizado una selección de cerca de uno de cada cuatro registros de la muestra completa, los pesos en la submuestra se han multiplicado aproximadamente por 4.
La varianza muestral y los pesos replicados
Hemos visto que, al sumar los pesos en la muestra completa y la submuestra, el resultado no es exactamente el mismo. Si tomamos cualquier otra submuestra aleatoria sucederá lo mismo, ya que los datos serán diferentes y esto afectará al cálculo de cualquier estadístico.
La varianza muestral refleja precisamente la varianza de los valores de un estadístico entre varias muestras diferentes tomadas sobre la misma población, y su raíz cuadrada es el error típico o error estándar.
En PISA, el muestreo se realiza además en dos etapas, primero se seleccionan los centros y después los alumnos dentro de cada centro. Esto hace que los alumnos seleccionados dentro de cada centro puedan presentar entre si menos diferencias que con los alumnos de otros centros, por lo que no pueden considerarse independientes. La consecuencia de esto es que el error típico al calcular los estadísticos será superior al de una muestra aleatoria de alumnos realizada en una sola etapa (seleccionando aleatoriamente los alumnos de entre toda la población).
Dependiendo de las políticas educativas y, en general, de la composición de la sociedad en cada uno de los diferentes países que participan en el estudio, nos encontraremos con que en ciertos países, como los del norte de Europa, la varianza dentro de los centros escolares es superior a la varianza entre centros, lo que indica un sistema más igualitario, mientras que en otros países sucede lo contrario.
En general, debido al amplio abanico de diferencias entre sistemas educativos, realizar un cálculo mediante algún tipo de fórmula de la varianza muestral requiere una serie de procedimientos muy complejos, por lo que se ha optado por un método más sencillo para dicha estimación, utilizando pesos replicados. En concreto se ha elegido la variante de pesos balanceados de Fay (BRR Fay Replicates), que es un método apropiado para muestreos en dos etapas.
Los métodos de pesos replicados utilizan una gran cantidad de submuestras diferentes (muestras replicadas) para calcular el parámetro de interés en cada una de ellas y estimar la varianza muestral a partir de la variabilidad del parámetro entre las diferentes muestras y el cálculo obtenido a partir de la muestra completa.
La idea es dividir los centros educativos en una serie de estratos donde se agrupan centros con características similares (por ejemplo, centros rurales y urbanos, y, dentro de estos estratos, se subdividen por su tamaño). Entonces seleccionamos aleatoriamente dos centros dentro de cada estrato, con los que vamos formando las submuestras replicadas.
Con el método BRR usado en PISA, para cada submuestra replicada se selecciona al azar un centro de cada estrato, y se ajustan los pesos de este centro multiplicándolos por un valor que los reduce, mientras que se incrementa de la misma manera el peso del otro centro del estrato (usando un factor de 0,5, reducimos uno a la mitad y el otro lo incrementamos 1,5 veces).
En concreto, se generan 80 de estas muestras replicadas y, por lo tanto, 80 pesos replicados, que se encuentran en las variables W_FSTR1 a W_FSTR80.
Así, para calcular por ejemplo el error típico de la media de la variable HISEI en el conjunto de datos de Alemania 2003, el procedimiento es calcular la media usando el peso del estudiante, y la media usando cada uno de los 80 pesos replicados. El error típico será la raíz cuadrada de la suma de las diferencias al cuadrado de cada una de estas medias con la media muestral dividida por 20 (este valor se obtiene de multiplicar 80 por el cuadrado de 1 menos el factor de ajuste, que es 0,5. En el manual de análisis de datos tenéis una exposición muy completa de todo esto).
Con el error típico se pueden calcular intervalos de confianza para el estadístico.
Veamos el ejemplo. Realizaremos el cálculo de la media y la desviación típica del índice socioeconómico HISEI de la submuestra de 1000 alumnos obtenida anteriormente:
source("pisa-brr-mean-sd.R")
wght_meansd(deusamp,"HISEI",85,5:84)
HISEI
MEAN 48.5000493
SE-MEAN 0.6071643
STDEV 14.8578949
SE-STDEV 0.2968571
Ahora vamos a obtener otra submuestra con el máximo número de casos que tengan un valor no nulo en la variable en cuestión (solo tomaremos, aparte de los pesos, las columnas HISEI y ST03Q01, correspondiente al sexo):
deusamphisei<-wght_sample(datadeu,c(9,11,13:93),5000,13:93)
wght_meansd(deusamphisei,"HISEI",83,3:82)
HISEI
MEAN 48.3451345
SE-MEAN 0.4175300
STDEV 15.2116896
SE-STDEV 0.1711459
Como podéis ver, los valores para la media y la desviación estándar son ligeramente diferentes, y los errores típicos son inferiores en la muestra con más casos. Para calcular el intervalo de confianza al 95% de la media en cada uno de los dos casos, solo tenemos que multiplicar el error típico por 1,96, restándolo y sumándolo del valor calculado para la media. En el primer caso, obtenemos un intervalo entre 47,3 y 49,7, mientras que en el segundo tenemos un valor más exacto, entre 47,5 y 49,2.
Con otra de las funciones de los ejemplos, podemos calcular los mismos parámetros separando los datos por sexo, por ejemplo:
wght_meansdfact(deusamphisei,1,2,83,3:82)
ST03Q01-1 ST03Q01-2
HISEI-MEAN 48.1962231 48.4997784
HISEI-MEAN-SE 0.5165389 0.4982433
HISEI-STDEV 15.0769228 15.3488631
HISEI-STDEV-SE 0.2383348 0.2171738
Donde el valor 1 es para el sexo masculino y 2 para el femenino.
Si una muestra contiene varios países, los cálculos para cada país se deben realizar por separado, ya que el muestreo entre países es independiente. No se deben mezclar nunca datos procedentes de muestras de varios países en un mismo cálculo.
Vemos que en la muestra completa de Finlandia, Perú y España 2012, el número de casos es muy diferente entre los tres países:
summary(dataepf[,"COUNTRY_NAME"])
Finland Peru Spain
8829 6035 25313
Así que obtenemos una submuestra de 6000 casos para cada uno de los países:
epfsample<-wght_multiple_sample(dataepf,4,c(13,15,17:97),6000,17:97)
summary(epfsample[,1])
Finland Peru Spain
6000 5865 6000
Y calculamos de nuevo la media para cada país:
wght_meansdbycnt(epfsample,2,1,84,4:83)
$Finland
HISEI
MEAN 55.6057865
SE-MEAN 0.4423959
STDEV 20.3976583
SE-STDEV 0.1703312
$Peru
HISEI
MEAN 35.0376205
SE-MEAN 0.8072296
STDEV 22.0254373
SE-STDEV 0.3894301
$Spain
HISEI
MEAN 47.2766651
SE-MEAN 0.6689927
STDEV 21.6684690
SE-STDEV 0.2214915
Errores estándar en el cálculo de otros tipos de estimadores
Los pesos replicados se deben utilizar para calcular los errores típicos en el cálculo de cualquier otro estimador, como los porcentajes, diferencias de medias, coeficientes de regresión, coeficientes de correlación, etc. El sistema es siempre el mismo, se calcula el estimador utilizando los pesos de los alumnos, y el error típico a partir de las diferencias usando cada uno de los 80 pesos replicados.
Para no extender demasiado este artículo, vamos a ver unos ejemplos aplicados al cálculo de porcentajes y diferencias de medias.
Para calcular los porcentajes, en lugar de contar casos lo que hacemos es sumar pesos. Empezaremos por hacer una selección de datos con columnas de tipo factor para realizar el recuento.
deusamp<-wght_sample(datadeu,c(10,11,13:93),5000,13:93)
Las variables que estamos seleccionando son ST01Q01, que es el grado en el que está el alumno en el momento del examen, y ST03Q01, que es el sexo del alumno.
Calculamos el porcentaje para cada uno de los niveles de la variable ST01Q01:
source("pisa-brr-ppc.R")
wght_ppc(deusamp,2,84,4:83)
ST01Q01-7 ST01Q01-8 ST01Q01-9 ST01Q01-10 ST01Q01-11
PPC 0.012842361 0.131188804 0.607029322 0.247570089 0.0013694241
SE 0.001709619 0.007742315 0.007703966 0.006291796 0.0005622651
También podemos calcular los porcentajes cruzando el sexo (ST03Q01) con el grado (ST01Q01):
wght_ppccrossed(deusamp,3,2,84,4:83)
$PPC
ST01Q01-7 ST01Q01-8 ST01Q01-9 ST01Q01-10 ST01Q01-11
ST03Q01-1 0.004358764 0.05979673 0.3073397 0.1414563 0.0009367937
ST03Q01-2 0.008483597 0.07139207 0.2996896 0.1061138 0.0004326304
$SE
ST01Q01-7 ST01Q01-8 ST01Q01-9 ST01Q01-10 ST01Q01-11
ST03Q01-1 0.001231345 0.004413145 0.007526257 0.006872076 0.0004729134
ST03Q01-2 0.001443247 0.005295298 0.008157956 0.005292804 0.0003061333
Si lo que tenemos es una muestra con varios países, podemos calcular también las proporciones de uno o más factores usando el mismo sistema, teniendo en cuenta que cada país se debe tratar como una muestra independiente de los demás países.
epfsample<-wght_multiple_sample(dataepf,4,c(8,9,15,17:97),3000,17:97)
wght_ppc_bycnt(epfsample,1,c(2,3),85,5:84)
$PPC
REPEAT_2012-0 REPEAT_2012-1 FAMSTRUC2-OT FAMSTRUC2-SP FAMSTRUC2-TP
Finland 0.9612392 0.03876079 0.008453862 0.16754413 0.8240020
Peru 0.7419961 0.25800394 0.035015059 0.17617838 0.7888066
Spain 0.6931980 0.30680197 0.007125347 0.09000235 0.9028723
$SE
REPEAT_2012-0 REPEAT_2012-1 FAMSTRUC2-OT FAMSTRUC2-SP FAMSTRUC2-TP
Finland 0.007014295 0.007014295 0.003348302 0.007966431 0.008795873
Peru 0.013091412 0.013091412 0.003424426 0.007678364 0.008152635
Spain 0.016219592 0.016219592 0.002599557 0.006451242 0.007152187
Aquí tenemos dos factores diferentes, REPEAT_2012, que vale 0 para los alumnos no repetidores y 1 para los repetidores, y FAMSTRUCT, estructura de la familia, que vale TP para familias con padre y madre, SP para familias con solo uno de ellos, y OT para otros tipos de unidades familiares. Los porcentajes se calculan por separado para cada factor.
Podemos saber si un porcentaje es mayor que cero, digamos que con un nivel de significación del 95%, simplemente dividiendo el valor por su error típico. Si el resultado es mayor que 1,96, podemos afirmar que dicho porcentaje es mayor que cero, al menos con un 95% de confianza.
Por último veremos dos ejemplos de diferencias de medias y el cálculo de sus errores estándar. En el primer ejemplo, el cálculo se realiza con los datos de Alemania 2013, calculamos la diferencia de medias en el índice socioeconómico HISEI entre los dos sexos. El error estándar en este caso se calcula de la misma manera, primero calculamos la diferencia de medias usando los pesos de los alumnos, y después usando los pesos replicados y calculando las diferencias.
source("pisa-brr-differences.R")
deusamp<-wght_sample(datadeu,c(9,11,13:93),5000,13:93)
wght_meandiff(deusamp,1,2,83,3:82)
ST03Q01-1-2
HISEI-MEANDIFF -0.3035552
HISEI-MEANDIFF-SE 0.5798229
De nuevo podemos saber si este valor es significativamente mayor que cero dividiéndolo por su error estándar. En este caso el valor absoluto es menor que 1,96, por lo que podemos afirmar con una confianza del 95% que no hay diferencia en el índice socioeconómico ISEI de los padres de los alumnos masculinos y femeninos.
En el caso de las diferencias de medias entre países, el error estándar ya no se calcula de la misma manera, por tratarse de muestras independientes. En este caso, el error típico es la raíz cuadrada de la suma de los errores estándar de cada país al cuadrado.
epfsample<-wght_multiple_sample(dataepf,4,c(13,15,17:97),3000,17:97)
wght_meandiffbycnt1(epfsample,2,1,84,4:83)
Finland-Peru Finland-Spain Peru-Spain
HISEI-MEANDIFF 20.668446 9.105845 -11.562602
HISEI-MEANDIFF-SE 1.034906 0.918880 1.125643