Apuntes de R
Apunte 04: Puntaje Z
La distribución normal estándar y los puntajes Z
La distribución normal estándar es una distribución que tiene una media de 0 y una desviación estándar de 1. Asimismo, los puntajes Z están expresados en relación a una media de 0 y con una desviación estándar de 1. Es por esto que, cuando tomamos una distribución normal que no es estándar y la convertimos en puntajes Z, estamos esencialmente transformándola en una distribución normal estándar. Es como si estuviéramos reajustando la escala de los puntajes brutos para que se ajusten a una nueva referencia, donde la media es cero y la desviación estándar es uno. Esto nos permite comparar y analizar datos de diferentes distribuciones de manera más uniforme y fácilmente interpretable.
Calculando puntajes Z desde puntajes brutos
Los puntajes Z son calculados a partir del puntaje bruto, la media de la población y la desviación estándar de la población usando la siguiente fórmula:
\[ Z_i = \dfrac{PB_i - \mu}{\sigma} \]
Donde \(PB_i\) es el puntaje bruto de la persona \(i\), \(\mu\) es el promedio de la población y \(\sigma\) es la desviación estándar.
Si conozco entonces el promedio de una población y su desviación estándar, por ejemplo sé que una prueba de matemática se distribuye con \(\mu = 20\) y \(\sigma = 2\), entonces puedo calcular el puntaje Z correspondiente a un puntaje bruto de 24.5 puntos así:
24.5 - 20)/2 (
[1] 2.25
Si tengo que calcular múltiples valores Z, por ejemplo, los valores correspondientes a los puntajes brutos de 1.4, 5.2, 8.3, 15.2, 25.7, 30.1 y 32 puntos (en la misma prueba anterior), podría hacer los cálculos por separado:
1.4 - 20)/2 (
[1] -9.3
5.2 - 20)/2 (
[1] -7.4
8.3 - 20)/2 (
[1] -5.85
15.2 - 20)/2 (
[1] -2.4
25.7 - 20)/2 (
[1] 2.85
30.1 - 20)/2 (
[1] 5.05
32 - 20)/2 (
[1] 6
Pero esto puede ser realizado en R de manera mucho más facil aprovechando la capacidad de R de realizar cálculos sobre vectores:
<- c(1.4, 5.2, 8.3, 15.2, 25.7, 30.1, 32)
puntajes_brutos
- 20)/2 (puntajes_brutos
[1] -9.30 -7.40 -5.85 -2.40 2.85 5.05 6.00
Lo que podemos ver es una forma mucho más eficiente de calcularlos.
Otra posibilidad es que simplemente tengamos disponibles los valores de una población sin que se nos indique su media y desviación estándar. Por ejemplo, podemos tener las edades de los pasajeros del Titanic:
# Leyendo una base de datos de titanic con otro formato
<- read.csv("https://david-ti.github.io/introstats/data/titanic.csv") titanic
Si queremos calcular los puntajes Z correspondientes a las edades de los pasajeros del Titanic podemos hacerlo de varias maneras:
Método 1
<- mean(titanic$Age, na.rm = TRUE)
media_edad
<- sd(titanic$Age, na.rm = TRUE)
devest_edad
<- (titanic$Age - media_edad)/devest_edad
Puntajes_Z_M1
# Vemos los 10 primeros valores en el vector que tiene ahora los puntajes Z
head(Puntajes_Z_M1, 10)
[1] -0.5300051 0.5714304 -0.2546462 0.3649113 0.3649113 NA
[7] 1.6728659 -1.9067995 -0.1858065 -1.0807229
Método 2
<- (titanic$Age - mean(titanic$Age, na.rm = TRUE))/sd(titanic$Age, na.rm = TRUE)
Puntajes_Z_M2
# Vemos los 10 primeros valores en el vector que tiene ahora los puntajes Z
head(Puntajes_Z_M2, 10)
[1] -0.5300051 0.5714304 -0.2546462 0.3649113 0.3649113 NA
[7] 1.6728659 -1.9067995 -0.1858065 -1.0807229
Método 3
# Usamos la función scale que automáticamente estandariza los valores
<- scale(titanic$Age)
Puntajes_Z_M3
# Vemos los 10 primeros valores en el vector que tiene ahora los puntajes Z
head(Puntajes_Z_M3, 10)
[,1]
[1,] -0.5300051
[2,] 0.5714304
[3,] -0.2546462
[4,] 0.3649113
[5,] 0.3649113
[6,] NA
[7,] 1.6728659
[8,] -1.9067995
[9,] -0.1858065
[10,] -1.0807229
Calculando puntajes brutos a partir de puntajes Z
El cálculo de puntajes brutos a partir de los puntajes Z es el inverso de la fórmula anterior:
\[ PB_i = \mu + \sigma \times Z_i \]
De forma que en la misma prueba anterior, donde sé que \(\mu = 20\) y \(\sigma = 2\), puedo convertir el puntaje Z = 1.9 a puntaje bruto usando el siguiente cálculo:
20 + (2 * 1.9)
[1] 23.8
Asimismo, como vimos previamente, podemos convertir una serie de puntajes Z a puntaje bruto usando vectores:
<- c(-1.6, -0.3, 0.6, 2.0, 1.1, -2.5, -2.3, -1.1, 1.6, 2.4)
puntajes_Z
20 + (puntajes_Z * 1.9)
[1] 16.96 19.43 21.14 23.80 22.09 15.25 15.63 17.91 23.04 24.56
Áreas bajo la curva en una distribución normal
Dada la relación entre puntajes Z y la distribución normal estándar, cuando hablamos de los valores en el eje x en la distribución normal estándar estamos hablando de puntajes Z: distancias del promedio en términos de desviaciones estándar. Por ejemplo, un puntaje Z = 2 significa estar dos desviaciones estándar sobre el promedio y un puntaje Z = -1 significa estar una desviación estándar bajo el promedio.
Como toda distribución de probabilidad, el área bajo la curva en una distribución estándar suma un total de 1.
Sabemos además que las áreas bajo la curva en una distribución normal estándar se distribuyen con valores específicos, por ejemplo, en los segmentos divididos por las desviaciones estándar.
El 34.1% de los casos se encuentra entre los valores Z -1 y 0.
Y como la distribución es simétrica, el 34.1% de los casos se encuentra entre los valores Z 0 y 1.
Tenemos un 13.6% de los casos entre los valores Z -2 y -1
Y un 13.6% de los casos entre los valores Z 1 y 2
Y un 2.14% entre los valores Z -3 y -2
y de forma simétrica un 2.14 entre los valores Z 2 y 3
En base a estos porcentajes podemos ver, por ejemplo, que el 99.7% de los casos se encuentra entre -3 desviaciones estándar y 3 desviaciones estándar.
En base a estos porcentajes podemos ver, por ejemplo, que aproximadamente el 95% de los casos se encuentra entre -2 y 2 desviaciones estándar (95.4% para ser más precisos).
Y que un 68.3% de los casos se encuentra entre -1 y 1 desviación estándar.
Calculando áreas bajo la curva en base a puntajes Z
Hasta ahora hemos visto áreas bajo la curva de valores Z enteros: -3, -2, -1, 0, 1, 2 y 3. Pero, dado que la distribución normal es continua, también podemos calcular el área bajo la curva de cualquier valor.
Para realizar este cálculo, utilizamos la función pnorm
de R. Esta función nos brinda la proporción del área bajo la curva a la izquierda de un valor Z específico.
Por ejemplo, si queremos ver la proporción bajo la curva que se encuentra bajo un puntaje Z de 0, podemos usar:
# Proporción bajo la curva a la izquierda de 0 (valores menores que 0)
pnorm(0)
[1] 0.5
Podemos ver que esto nos arroja como resulado 0.5, lo que significa que la mitad de los valores, el 50%, se encuentran bajo el promedio en la distribución normal estándar.
Lo que pnorm
esta haciendo es mostrarnos el valor equivalente al área a la izquierda del valor Z que le entregamos:
De esta forma, usando la función pnorm
puedo pedirle a R que me indique el área bajo la curva bajo cualquier valor. Por ejemplo, si quiero saber qué proporción de casos se encuentra bajo el valor Z = 1.25, puedo usar:
pnorm(1.25)
[1] 0.8943502
# Podemos pedir que redondee el valor usando la funcion round.
# El argumento digits indica cuantos decimales queremos.
round(pnorm(1.25), digits = 2)
[1] 0.89
Lo que corresponde a esta área:
Otro ejemplo, podemos calcular la proporción de valores que se encuentra bajo el valor Z = -.5.
round(pnorm(-.5),2)
[1] 0.31
normalInterval(-10,-.5)
Y podemos ver que el 31% de los casos se encuentra bajo este valor Z.
Qué pasa si quiero, en cambio, calcular los valores que se encuentran sobre un valor Z? Por ejemplo, ¿cómo puedo saber cuántas personas se encuentran por sobre el valor Z = 1.75?
La respuesta es sencilla: sabemos que el área total bajo la curva es igual a 1, por ende, el área por sobre Z = 1.75 es igual a 1 menos el área bajo ese valor:
# Esta es la proporción de casos bajo el valor Z 1.75
round(pnorm(1.75),2)
[1] 0.96
# Para calcular la proporción por sobre ese valor...
# ...le resto a 1 (el total) la proporción de casos bajo 1.75
1 - round(pnorm(1.75),2)
[1] 0.04
De esta manera puedo ver que solo un 4% de los casos se encuentra por sobre el valor Z = 1.75.
Calculando áreas bajo la curva de un intervalo entre dos puntajes Z
Hasta ahora hemos aprendido a calcular la proporción de casos que se encuentra bajo un valor o por sobre un valor Z.
¿Cómo podemos calcular la proporción de casos entre dos valores Z?, por ejemplo, ¿cuántos casos se encuentran entre los valores Z -0.32 y 1.24?
Partamos por aplicar lo que sabemos hasta ahora… Podemos calcular la proporción de casos bajo el valor 1.24:
# Esta es la proporción de casos bajo el valor Z 1.24
round(pnorm(1.24),2)
[1] 0.89
Sabemos entonces que una proporcion de .89 de los casos se encuentra bajo el valor Z 1.24, sin embargo, lo que queremos identificar es solo parte de esta área… queremos saber el valor correspondiente a:
Eso quiere decir que en nuestro cálculo inicial nos “sobra” la proporción de casos que se encuentra bajo el valor Z = -.32
# Esta es la proporción de casos bajo el valor Z -0.32
round(pnorm(-.32),2)
[1] 0.37
Ahora que tenemos toda la información que necesitamos podemos calcular el área bajo la curva en el intervalo entre -0.32 y 1.24, restándole al área bajo el valor 1.24 el área bajo el valor -0.32:
# Esta es la proporción de casos bajo el valor Z 1.24
round(pnorm(1.24),2)
[1] 0.89
# Esta es la proporción de casos bajo el valor Z -0.32
round(pnorm(-.32),2)
[1] 0.37
# Restamos ambas proporciones, partiendo por aquella que está más a la derecha
round(pnorm(1.24),2) - round(pnorm(-.32),2)
[1] 0.52
Lo que nos deja la proporción del área que buscábamos: .52. Vale decir, el 52% de los casos se encontrará entre los valores Z = -0.32 y Z = 1.24.
Calculando el valor Z correspondiente a una determinada proporción
Hasta ahora hemos estado usando valores Z para poder calcular el área bajo la curva, pero R nos permite resolver el problema inverso: ¿Qué puntaje Z está asociado a una determinada proporción bajo la curva en una distribución normal estándar?
Por ejemplo: ¿Qué puntaje Z está por sobre un 35.2% de los casos?
Para resolver esta pregunta, podemos usar en R el comando qnorm
(del inglés quantile normal, ya que es equivalente a expresar el percentil que buscamos), el que recibe la proporción o percentil de casos que buscamos y nos indica el valor Z correspondiente. Tengan en mente que al igual que el comando pnorm
, qnorm
nos entregará el valor Z que tiene la proporción que buscamos a su izquierda.
Entonces, ¿qué puntaje Z está por sobre un 35.2% de los casos? o en otras palabras, ¿qué puntaje Z corresponde al percentil 35.2?
# Usamos qnorm para identificar el valor Z correspondiente
qnorm(.352)
[1] -0.3799265
# Podemos redondear este resultado también
round(qnorm(.352),2)
[1] -0.38
Aplicando puntajes Z: El caso de los puntajes PSU/PTU
Los puntajes de la Prueba de Selección Universitaria y de la prueba de transición están construidos para seguir una distribución normal con media igual a 500 puntos y con una desviación estándar igual a 110 puntos. Producto de esto la distribución de puntajes en todos los años es igual, con el mismo promedio y la misma desviación estándar.
Producto de esto, podemos saber con bastante exactitud qué proporción de personas se encuentra bajo, sobre o entre puntajes específicos.
Ejemplo 1: ¿Cuantas personas obtuvieron puntajes sobre 700 puntos en la prueba de mátematica?
Comenzamos con convertir el puntaje bruto, 700, a puntaje Z:
700 - 500)/110 (
[1] 1.818182
Vemos que esto corresponde a un puntaje Z igual a 1.82 aproximadamente. Podemos ahora usar pnorm
para determinar qué porcentaje de personas obtuvo un puntaje en la prueba de matemática por debajo de 700 puntos y podemos restarle ese valor a 1 (el total).
1 - round(pnorm(1.82), 2)
[1] 0.03
Vemos que solo el 3% de las personas que rindieron la prueba obtuvo puntajes de matemática por sobre 700 puntos.
Ejemplo 2: ¿Cuántas personas obtuvieron puntajes entre 750 y 850 puntos en la prueba de lenguaje?
Comenzamos calculando los puntajes Z:
round((c(750,850) - 500)/110,2)
[1] 2.27 3.18
Y realizamos la resta entre la proporción bajo el valor Z = 3.18 y la proporción bajo el valor Z = 2.27.
round(pnorm(3.18), 2) - round(pnorm(2.27), 2)
[1] 0.01
Y vemos que solo el 1% de quienes rinden la prueba obtienen puntajes entre 750 y 850 puntos.
Ejemplo 3: ¿Cuántas personas obtuvieron puntajes bajo 450 puntos en la prueba de matemática?
Calculamos el puntaje Z y usamos la función pnorm.
round(pnorm((450 - 500)/110),2)
[1] 0.32
Y vemos que el 32% de las personas no alcanza el puntaje de 450 en la prueba de matemática.