Utilizamos cookies propias y de terceros para mejorar nuestros servicios y mostrarle publicidad relacionada con sus preferencias mediante el análisis de sus hábitos de navegación. Si continua navegando, consideramos que acepta su uso. Puede cambiar la configuración u obtener más información aquí

View site in english Ir a la página de inicio Contacta conmigo
sábado, 12 de marzo de 2016

Introducción al análisis de datos PISA. Las puntuaciones

En el anterior artículo de esta serie vimos cómo realizar el cálculo de errores estándar con pesos replicados en la base de datos PISA, en este artículo haremos un pequeño resumen de uno de los puntos más polémicos de estos estudios, el complejo sistema de puntuaciones implementado.

Todos estamos acostumbrados a las puntuaciones brutas obtenidas en los exámenes, donde cada respuesta tiene asociada una determinada puntuación, cuya suma corresponde a la nota final del examen, o bien se calcula dicha nota como un simple porcentaje de respuestas correctas. Sin embargo, en PISA se construye un complejo modelo estadístico mediante el cual se imputan los resultados a los alumnos, y las notas ya no reflejan simplemente el resultado concreto obtenido por cada alumno en las pruebas.

Como en anteriores artículos, os dejo este enlace donde podéis descargar el manual de análisis de datos PISA, con un desarrollo detallado de todos estos temas.

Los exámenes PISA constan de una extensa batería de preguntas, tan extensa que resulta imposible que un alumno conteste a todas ellas, por lo que se elaboran una serie de cuadernillos con diferentes combinaciones de preguntas que se distribuyen aleatoriamente a los alumnos. Puesto que no todas las preguntas tienen la misma dificultad, el primer paso consiste en establecer dicha dificultad mediante una serie de pruebas preliminares que se realizan con una selección de alumnos de los diferentes países participantes. De esta manera, los cuadernillos se elaboran de manera que presenten la misma dificultad media, además de presentar algunas preguntas comunes que permitan enlazar los resultados utilizando la misma escala.

Puesto que la variable que queremos medir, la capacidad de los alumnos, se puede considerar una variable continua inobservable que se debe deducir del patrón de respuestas, se ha optado por utilizar una variante del modelo de Rasch para enlazar dicho patrón de respuestas con el rendimiento del alumno.

Básicamente, con el modelo de Rasch construimos una escala continua mediante una regresión logística que expresa la probabilidad de contestar correctamente a una determinada pregunta en función de su dificultad y de la supuesta capacidad del alumno. Un alumno con una capacidad alta tendrá una distribución de probabilidad diferente ante una pregunta difícil a la de un alumno con una capacidad menor. Una función probabilística enlaza las dificultades de las diferentes preguntas con las competencias de los alumnos usando la misma escala.

El supuesto fundamental para la validez del modelo de Rasch es la igualdad de dificultad de las preguntas para todos los alumnos, y esta es una de las críticas fundamentales que se dirigen contra estos exámenes, ya que una misma pregunta puede presentar diferente dificultad en distintos países. Para evitar esto, se trata de poner mucho cuidado en la traducción de las preguntas a los diferentes idiomas e incluso se retiran algunas de ellas o se incluyen otras nuevas en función de las características de cada país participante, además de realizar estudios preliminares en cada país para comprobar que se cumple este supuesto.

De esta manera, se pretende reflejar la variabilidad inherente a todo muestreo de manera que se puedan obtener estimadores insesgados y evitar subestimar o sobreestimar los resultados.

Pero la dificultad no acaba aquí. Puesto que en la muestra de alumnos cada individuo representa realmente una población, que se estima por el peso asignado a cada uno de ellos, la puntuación no se corresponde directamente con el resultado concreto del test. En lugar de esto, se utilizan una serie de estimadores de máxima verosimilitud, obtenidos a partir de las respuestas al cuestionario personal del alumno para obtener una distribución a posteriori que refleje la variabilidad de las posibles puntuaciones, a partir de la cual se extraen aleatoriamente cinco valores plausibles, que reflejan el rango de posibles valores obtenidos por dicha población. Esta distribución se construye de manera que las puntuaciones tengan una media de 500.

El objetivo, de nuevo, es evitar subestimar o sobreestimar los resultados de los cálculos en los que estén implicados los resultados de los alumnos.

Las pruebas PISA se dividen en tres grandes bloques o dominios, comprensión lectora, matemáticas y ciencias. Para cada uno de estos dominios existen cinco valores plausibles diferentes. A su vez, cada año el estudio se centra en una de estas tres áreas, existiendo también valores plausibles para diferentes subdominios de los dominios principales.

Hay que tener cuidado a la hora de comparar resultados entre años diferentes. En el año 2000, la prueba se centró en la comprensión lectora, en 2003 en matemáticas, en 2006 en ciencias, en 2009 de nuevo en comprensión lectora y en 2012 de nuevo en matemáticas. Puesto que se han realizado algunas modificaciones en la calibración de los items, solo son directamente comparables las notas de diferentes años en los siguientes casos:

  • Ciencias: son comparables los años 2006, 2009 y 2012.
  • Matemáticas: son comparables los años 2003, 2006, 2009 y 2012.
  • Comprensión lectora: son comparables todos los años.

Así pues, tenemos una escala continua que enlaza la dificultad de las preguntas con las competencias de los alumnos, y unas calificaciones obtenidas con una técnica de imputación de valores faltantes consistentes en cinco valores plausibles diferentes para cada alumno obtenidos aleatoriamente de una distribución de probabilidad. No tengo el nivel suficiente para realizar una valoración técnica de este sistema, pero entiendo que puede resultar cuando menos sorprendente para los legos acostumbrados a las “notas de siempre”.

Pero como nuestro objetivo no es criticar el sistema de PISA, sino simplemente realizar prácticas de estadística con un buen conjunto de datos, vamos a pasar a ver una serie de ejemplos sobre cómo trabajar con los valores plausibles a la hora de realizar estimaciones.

Trabajar con los valores plausibles

En este enlace os podéis descargar código R para trabajar con valores plausibles, con las funciones de ejemplo que usaremos.

También usaremos dos conjuntos de datos extraídos de la base de datos de PISA, en este enlace os 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, que ya utilizamos en el anterior artículo de la serie sobre los pesos replicados.

Cuando realicemos cualquier cálculo en el que intervengan los valores plausibles, el procedimiento a seguir será siempre el mismo, realizaremos el cálculo por separado para cada uno de los cinco valores y, finalmente, calcularemos la media de los cinco resultados, ya sean coeficientes de regresión, medias, correlaciones o cualquier otro estimador.

A la hora de calcular la varianza muestral y los errores estándar, procederemos del mismo modo que vimos en el artículo anterior, pero esta vez realizando el cálculo con los 80 pesos replicados sobre cada uno de los cinco valores plausibles. Esto hace que tengamos que repetir cada cálculo 405 veces (afortunadamente, tenemos ordenadores). En este caso, además, debemos tener en cuenta la varianza entre los cinco valores plausibles, o varianza de imputación, que se debe añadir al error estándar. Esta varianza de imputación se calcula a partir de la diferencia al cuadrado del valor obtenido con cada uno de los valores plausibles y el valor medio del total, dividido por cuatro (el número de valores plausibles menos uno) y multiplicada por 1,2 (uno más un quinto).

Es incorrecto calcular primero la media de los cinco valores plausibles y realizar los cálculos sobre esta media, puesto que esto conduce a resultados sesgados. Es preferible realizar los cálculos sobre uno solo de los valores plausibles, lo que produce resultados insesgados, aunque no permite calcular la varianza de imputación.

Para no extendernos más, puesto que el manual de análisis de datos de PISA contiene un magnífico desarrollo de todos estos temas, pasamos directamente a los ejemplos de uso de las diferentes funciones de los ejemplos.

Cálculo de la media y desviación típica de los valores plausibles

Vamos a empezar cargando el conjunto de datos de Alemania 2003 en un dataframe:

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"

Tenemos los cinco valores plausibles de matemáticas y de comprensión lectora en las columnas PV1MATH a PV5MATH y PV1READ a PV5READ.

Ahora cargamos el código con los ejemplos y calculamos la media en matemáticas usando la función wght_meansd_pv:

source("pisa-pv.R")
wght_meansd_pv(datadeu,94:98,93,13:92)
MEAN SE-MEAN STDEV SE-STDEV
502.985532 3.317209 102.592793 1.765833

En el primer parámetro pasamos el dataframe con los datos, en el segundo los índices de las columnas con los valores plausibles, el tercero es para indicar la columna con el peso del alumno y el último para los índices de las columnas con los pesos replicados.

Obtenemos un vector de cuatro posiciones con la media, su error estándar, la desviación típica y su error estándar.

Con estos datos, podemos construir intervalos de confianza para la media multiplicando el error típico por 1,96, para el 95% por ejemplo, y sumando y restando el resultado a la media o la desviación típica.

Ahora, supongamos que queremos obtener la media por separado según el sexo de los alumnos. Este dato se encuentra en la variable dicotómica de la columna ST03Q01, 1 para los alumnos y 2 para las alumnas. En primer lugar obtenemos una submuestra eliminando los valores faltantes. Para ello, en este enlace puedes descargar ejemplos de código para muestreo de datos PISA.

source(“pisa-sampling-code.R”)
deusamp<-wght_sample(datadeu,c(9,11,13:98),5000,13:93)

Con esto hemos seleccionado, además de los pesos y los valores plausibles en matemáticas, solo la columna ST03Q01, con el sexo de los alumnos, y la columna HISEI, un índice de status socioeconómico que usaremos posteriormente.

Ahora, podemos calcular la media agrupada por sexos con la función wght_meansdfact_pv:

wght_meansdfact_pv(deusamp,84:88,2,83,3:82)
ST03Q01-1 ST03Q01-2
MEAN 506.243645 521.023972
SE-MEAN 3.813855 4.021791
STDEV 92.854737 95.907179
SE-STDEV 2.096294 2.478750

En el primer parámetro hemos pasado de nuevo el dataframe, en el segundo los índices de los valores plausibles, en el tercero el índice de la columna (o columnas) por las que queremos agrupar los resultados, en el cuarto pasamos el índice de la columna con el peso del alumno y la última de nuevo es para los índices de columna de los pesos replicados.

Como resultado tenemos una matriz con una columna para los datos de los alumnos, la primera, y otra para los de las alumnas.

Diferencias de medias

Vamos a ver ahora las dos funciones de los ejemplos que se pueden utilizar para calcular diferencias de medias. Para estos ejemplos vamos a trabajar con una muestra que contiene varios países, Finlandia, España y Perú, en el año 2012:

data<-read.csv("dataesp-fin-per-2012.csv",sep=";")
names(data)
[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"

Obtenemos una muestra sin valores faltantes con las columnas HISEI y ST03Q01:

datasamp<-wght_multiple_sample(data,4,c(13,15,17:102),10000,17:97)

Y le aplicamos la función wght_meandiffcnt_pv para obtener la diferencia de medias entre los tres países:

wght_meandiffcnt_pv(datasamp,85:89,1,84,4:83)
Finland-Peru Finland-Spain Peru-Spain
MEANDIFF 152.16477 37.419909 -114.74486
SE 3.80965 2.747142 4.01396

En el primer parámetro pasamos el dataframe con los datos, en el segundo los índices de las columnas con los valores plausibles de matemáticas, el tercero es para el índice de la columna con el país, el cuarto el índice de la columna con el peso del alumno y el último para los índices de las columnas con los pesos replicados.

Obtenemos una matriz con la diferencia de medias y su error estándar, con una columna para cada combinación de dos países. Vemos que todas las diferencias son significativas simplemente dividiendo el valor de la media por su error estándar y comprobando que el resultado es superior a 1,96. Hay que tener en cuenta que entre países, por ser muestras independientes, el error estándar es igual a la raíz cuadrada de la suma de los errores estándar de la media cada país al cuadrado.

Si queremos obtener la diferencia de medias agrupando por una serie de factores, podemos utilizar la función wght_meandifffactcnt_pv:

wght_meandifffactcnt_pv(datasamp,85:89,1,3,84,4:83)
$Finland
ST03Q01-0-1
MEANDIFF 0.2220833
SE 2.8871318

$Peru
ST03Q01-0-1
MEANDIFF -18.963934
SE 3.951501

$Spain
ST03Q01-0-1
MEANDIFF -14.467193
SE 3.326229

$BTWNCNT
, , Finland-Peru

ST03Q01-0-1
MEANDIFF 19.186017
SE 4.893863

, , Finland-Spain

ST03Q01-0-1
MEANDIFF 14.689276
SE 4.404467

, , Peru-Spain

ST03Q01-0-1
MEANDIFF -4.496741
SE 5.165091

Hemos añadido un nuevo parámetro, el cuarto, para indicar los índices de las columnas con los factores para agrupar.

En esta ocasión, obtenemos una lista de matrices. Las primeras posiciones son para las diferencias dentro de cada país entre los alumnos y las alumnas. Vemos que para Finlandia la diferencia de medias no es significativa, mientras que si lo es para Perú y España.

En el último elemento de la lista tenemos un array de tres dimensiones, una de las cuales es para indicar la pareja de países entre los que se calcula la diferencia de medias y las otras dos forman una matriz similar a la de las diferencias dentro de cada país pero para la diferencia entre las diferencias de medias dentro de cada país. Así vemos que, entre Finlandia y Perú, hay una diferencia de 19 puntos entre las diferencias de medias entre alumnos y alumnas.

Cálculo de coeficientes de regresión

En este último ejemplo, vamos a calcular coeficientes de regresión usando los valores plausibles como variables dependientes y el índice socioeconómico HISEI y el sexo de los alumnos en ST03Q01 como variables independientes. Usaremos el conjunto de datos de Alemania 2003.

Primero recodificamos la variable sexo de manera que las alumnas tengan el valor cero y los alumnos el valor 1:

deusamp[deusamp$ST03Q01 == 2,"ST03Q01"]<-0

Y, a continuación, usaremos la función wght_lmpv:

wght_lmpv(deusamp,"HISEI+ST03Q01",84:88,83,3:82)
$PV1MATH

Call:
lm(formula = frmlpv, data = sdata, weights = sdata[, wght])

Coefficients:
(Intercept) HISEI ST03Q01
407.216 2.344 -13.510


$PV2MATH

Call:
lm(formula = frmlpv, data = sdata, weights = sdata[, wght])

Coefficients:
(Intercept) HISEI ST03Q01
409.167 2.313 -14.543


$PV3MATH

Call:
lm(formula = frmlpv, data = sdata, weights = sdata[, wght])

Coefficients:
(Intercept) HISEI ST03Q01
407.989 2.322 -13.936


$PV4MATH

Call:
lm(formula = frmlpv, data = sdata, weights = sdata[, wght])

Coefficients:
(Intercept) HISEI ST03Q01
405.827 2.373 -13.372


$PV5MATH

Call:
lm(formula = frmlpv, data = sdata, weights = sdata[, wght])

Coefficients:
(Intercept) HISEI ST03Q01
405.368 2.392 -14.976


$RESULT
(Intercept) HISEI ST03Q01 R2 ADJ.R2
407.1134620 2.3486810 -14.0673728 0.1485837 0.1481672

$SE
(Intercept) HISEI ST03Q01 R2 ADJ.R2
7.61739862 0.13066454 3.54528219 0.01360461 0.01361126

En el primer parámetro pasamos el dataframe con los datos, en el segundo el lado derecho de la fórmula en forma de cadena de texto, el tercero es para los índices de las columnas con los valores plausibles, el cuarto el índice de la columna con el peso del alumno y el último para los índices de las columnas con los pesos replicados.

Obtenemos una lista con una posición para los coeficientes de los modelos de cada uno de los valores plausibles por separado, otra para la media de los coeficientes resultantes (RESULT), junto con el R2 y el R2 ajustado y una última posición (SE) para los errores estándar.

Comparte este artículo: Compartir en Twitter Compártelo en Facebook Compartir en Google Plus Compartir en LinkedIn
Comentarios (0):
* (Su comentario será publicado después de la revisión)

E-Mail


Nombre


Web


Mensaje


CAPTCHA
Change the CAPTCHA codeSpeak the CAPTCHA code