Transformar distribución normal a normal estándar y calcular probabilidades.
La distribución normal estándar o distribución normal tipificada es una distribución normal singular cuya denominación es media igual a cero y desviación igual a 1. \(\mu = 0 ; \sigma = 1\).
Se necesita una variable, Z que representa el producto de una transformación o cambio de variable de la variable aleatoria continua X que sigue una distribución normal del tipo \(N(μ, σ)\).
Esta transformación se llama tipificación (también estandarización o normalización):
¿Porque Z? En general, el valor de \(Z\) se interpreta como el número de desviaciones estándar que están comprendidas entre el promedio y un cierto valor de variable \(x\).
Se identifica \(z\) como la diferencia entre un valor de la variable y el promedio, expresada esta diferencia en cantidad de desviaciones estándar.[@mendenhall2010].
Entonces, a partir de cualquier variable aleatoria \(x\) que siga una distribución, se puede obtener otra característica \(z\) con una distribución normal estándar, sin más que efectuar la transformación conforme y de acuerdo a la fórmula.
\[ z = \frac{x - \mu}{\sigma} \]
\[ x \text{ es el valor de una variable aleatoria continua de una distribución normal} \\ \sigma \text{ desviación estándar de población} \\ \mu \text{ media de la población} \]
Establece que si una variable aleatoria está normalmente distribuida, entonces:
Ejemplo: una desviación estándar de la media es igual al valor \(z\) de 1.00. Al hablar de la tabla de probabilidad normal estándar, el valor \(z\) de 1.00 corresponde a una probabilidad de 0.3413. Por lo tanto, ¿qué porcentaje de las observaciones caerá entre más y menos una desviación estándar de la media? Se multiplica (2)(0.3413), lo que da 0.6826, o aproximadamente \(68\%\) de las observaciones están entre más y menos una desviación estándar de la media.
Cargar librerías y datos para representar una distribución normal y transformar a distribución normal estándar
library(cowplot) # Gráficos
library(ggplot2) # Gráfico
library(mosaic)
library(dplyr) # Para procesar, filtrar, ordenar con arrange
La población tiene una variable aleatoria de interés como lo puede ser la altura de las personas. Valores medidos en centímetros.
Se inicializan las variables para generar valores aleatorios y simular una población.
n <- 200
media <- 175
desv <- 10
Se generan 200 valores aleatorios o con las condiciones de una distribución normal de media igual a \(\mu = 175cm.\) y desviación de \(\sigma = 10cm.\).
set.seed(2023)
n <- 200
estaturas<- rnorm(n = n, mean = media, sd = desv)
estaturas
## [1] 174.1622 165.1706 156.2493 173.1386 168.6651 185.9080 165.8627 185.0164
## [9] 171.0073 170.3188 178.2696 170.8725 180.6204 181.6336 168.9710 181.9838
## [17] 180.9585 179.5209 183.9674 180.7222 170.8835 172.0567 187.1857 177.4411
## [25] 170.5485 156.5220 168.7117 166.3892 190.1492 202.3524 172.2512 187.7665
## [33] 166.8902 174.5508 168.6059 170.6164 180.0720 186.2922 184.7564 173.7540
## [41] 179.2834 179.1873 179.3547 172.9574 178.0235 181.9436 198.7307 185.7597
## [49] 178.3538 182.5343 181.6439 164.0912 170.7723 186.8340 190.8483 197.8086
## [57] 154.3454 170.9189 178.0101 181.9661 184.8818 172.1594 155.7773 163.2628
## [65] 185.4428 173.6707 183.4488 171.2841 185.4758 184.2542 160.2139 165.7737
## [73] 174.1510 166.3349 181.7504 174.1930 173.7441 171.1167 175.1683 163.7369
## [81] 177.1835 192.4304 173.8042 179.8618 176.4137 178.0797 184.9408 169.8219
## [89] 166.9286 155.7682 161.1086 179.2867 172.0622 197.8000 163.3549 187.4087
## [97] 160.0492 172.6836 166.7513 161.7583 175.7901 173.9076 184.0552 184.7537
## [105] 184.4308 174.8303 167.7840 178.0054 165.9688 188.8769 181.6989 175.0614
## [113] 177.6517 154.3890 182.5298 175.0942 164.9516 200.7925 182.0131 193.7924
## [121] 170.2494 178.6808 176.0354 178.4634 167.3164 185.9914 168.0551 172.9606
## [129] 171.7023 187.5072 173.7930 198.9812 178.5305 184.5160 171.8423 188.1553
## [137] 156.6120 181.3491 173.1951 178.8053 172.6986 173.4750 181.8548 157.6163
## [145] 175.0004 180.5990 178.6618 176.5170 173.8668 169.8614 179.5796 202.0468
## [153] 163.2948 184.2456 168.7872 184.2698 178.8299 175.0166 182.5670 190.9310
## [161] 192.2326 178.2643 180.1493 183.0001 165.5912 178.4760 173.8323 174.1998
## [169] 177.7924 174.9253 179.7447 177.9394 166.4722 156.6311 163.9346 170.1027
## [177] 194.8736 161.8801 169.6599 186.7238 175.5119 175.0552 184.5582 177.4248
## [185] 164.8037 184.4675 171.4228 182.5463 176.2973 167.4851 177.6740 171.7858
## [193] 165.5153 167.8036 169.0944 189.2960 192.8208 179.9633 190.5534 178.9348
Se identifican la media aritmética y la desviación de la población generada.
media.p <- round(mean(estaturas),2)
desv.p <- round(sd(estaturas),2)
media.p; desv.p
## [1] 176.38
## [1] 9.65
Se muestra la distribución normal con función plotDist() de la librería mosaic.
g1 <- plotDist(dist = "norm", mean = media.p, sd = desv.p, type = "h", xlab = "x's = Estaturas", col = 'blue')
g1
Z se interpreta como los valores que están a la derecha de una distribución normal con media igual a cero y desviación igual a 1.
\[ z = \frac{x - \mu}{\sigma} \]
En la siguiente función f.devolver.z() se hace una simulación de transforma cualquier valor de \(x\) a valores de \(z\). Se simula transformar valores de 170 a 180 de 0.5 en 0.5.
En el archivo que se carga a continuación, se encuentra programada una función f.devolver.z() para obtener el valor de z a partir de los parámetros x, media y desviación.
source("https://raw.githubusercontent.com/rpizarrog/probabilidad-y-estad-stica/master/2023/funciones/funciones%20para%20disribuciones%20de%20probabilidad.R")
x = seq(from = 170, to = 180, by = .5)
z <- f.devolver.z(x = x, media = media.p, desv = desv.p)
x; z
## [1] 170.0 170.5 171.0 171.5 172.0 172.5 173.0 173.5 174.0 174.5 175.0 175.5
## [13] 176.0 176.5 177.0 177.5 178.0 178.5 179.0 179.5 180.0
## [1] -0.66113990 -0.60932642 -0.55751295 -0.50569948 -0.45388601 -0.40207254
## [7] -0.35025907 -0.29844560 -0.24663212 -0.19481865 -0.14300518 -0.09119171
## [13] -0.03937824 0.01243523 0.06424870 0.11606218 0.16787565 0.21968912
## [19] 0.27150259 0.32331606 0.37512953
equivalencias <- data.frame (x = estaturas, z = f.devolver.z(x = estaturas, media = media, desv = desv))
# equivalencias
Se muestran ordenados para identificarlos de manera más práctica y únicamente los primeros y últimos veinte registros.
equivalencias <- arrange(equivalencias, x)
head(equivalencias, 20)
## x z
## 1 154.3454 -2.065457
## 2 154.3890 -2.061096
## 3 155.7682 -1.923179
## 4 155.7773 -1.922267
## 5 156.2493 -1.875067
## 6 156.5220 -1.847804
## 7 156.6120 -1.838798
## 8 156.6311 -1.836890
## 9 157.6163 -1.738369
## 10 160.0492 -1.495084
## 11 160.2139 -1.478605
## 12 161.1086 -1.389139
## 13 161.7583 -1.324173
## 14 161.8801 -1.311989
## 15 163.2628 -1.173720
## 16 163.2948 -1.170517
## 17 163.3549 -1.164511
## 18 163.7369 -1.126307
## 19 163.9346 -1.106538
## 20 164.0912 -1.090883
tail(equivalencias, 20)
## x z
## 181 187.7665 1.276654
## 182 188.1553 1.315530
## 183 188.8769 1.387694
## 184 189.2960 1.429604
## 185 190.1492 1.514920
## 186 190.5534 1.555339
## 187 190.8483 1.584827
## 188 190.9310 1.593103
## 189 192.2326 1.723256
## 190 192.4304 1.743037
## 191 192.8208 1.782077
## 192 193.7924 1.879238
## 193 194.8736 1.987356
## 194 197.8000 2.279999
## 195 197.8086 2.280855
## 196 198.7307 2.373066
## 197 198.9812 2.398119
## 198 200.7925 2.579248
## 199 202.0468 2.704676
## 200 202.3524 2.735239
La media debe ser 0 y la desviación es 1
\[ \mu = 0 \\ \sigma = 1 \]
Se muestran los datos de la distribución estaturas con valores transformados a z.
g2 <- plotDist(dist = "norm", mean = 0, sd = 1, type = "h", xlab = "Z's", col = 'red')
g2
plot_grid(g1, g2, nrow = 1, ncol=2)
Se muestran las gráficas de distribución normal con datos de estaturas en azul y gráficas de valores de estaturas transformados a \(z\) en color rojo.
gnormal <- ggplot(data = equivalencias) +
geom_point(aes(x = x, y = dnorm(x = x, mean = media.p, sd = desv.p)), col = 'blue') +
geom_line(aes(x = x, y = dnorm(x = x, mean = media.p, sd = desv.p)), col = 'blue') +
geom_vline(xintercept = media.p) +
ggtitle(label = "Distribución normal", subtitle = paste("Media = ", media.p))
gnormalstd <- ggplot(data = equivalencias) +
geom_point(aes(x = z, y = dnorm(x = z, mean = 0, sd = 1)), col = 'red') +
geom_line(aes(x = z, y = dnorm(x = z, mean = 0, sd = 1)), col = 'red') +
geom_vline(xintercept = 0) +
ggtitle(label = "Distribución normal Estándar", subtitle = paste("Media = ", 0))
plot_grid(gnormal, gnormalstd, nrow=1, ncol=2)
\[ P(x \ge 180) = 1 - P(x < 180) = \text {lower tail = FALSE} \]
x <- 180
prob1 <- round(pnorm(q = x, mean = media.p, desv.p, lower.tail = FALSE) * 100, 2)
paste(prob1, "%")
## [1] "35.38 %"
gnormal <- plotDist(dist = "norm", mean = media.p, sd = desv.p, type = "h", xlab = "x's", groups = x >= 180, col = c('blue', 'pink'), main= "Distribución normal", sub= paste("Media = ", media.p, "f(x > ", x , ") = ", prob1, "%"))
x <- 180
z <- f.devolver.z(x = x, media = media.p, desv = desv.p)
z
## [1] 0.3751295
prob2 <- round(pnorm(q = z, mean = 0, sd=1, lower.tail = FALSE) * 100, 2)
paste(prob2, "%")
## [1] "35.38 %"
gnormal.z <- plotDist(dist = "norm", mean = 0, sd = 1, type = "h", xlab = "z's", groups = x >= z, col = c('red', 'pink'), main= "Distribución normal estándar", sub= paste("Media = ", 0, "f(z > ", round(z,2) , ") = ", prob2, "%"))
plot_grid(gnormal, gnormal.z, nrow = 1, ncol=2)
La respuesta es razonar y deducir si el 50% está a la derecha y el otro 50% está a la izquierda entonces la probabilidad es aproximadamente del 50% \[ P(x <= mean) = 50 \% \\ o \\ P(z <= 0 ) = 50\% \]
x <- media.p
prob1 <- round(pnorm(q = x, mean = media.p, desv.p, lower.tail = FALSE) * 100, 2)
paste(prob1, "%")
## [1] "50 %"
gnormal <- plotDist(dist = "norm", mean = media.p, sd = desv.p, type = "h", xlab = "x's", groups = x<= media.p, col = c('blue', 'pink'), main= "Distribución normal", sub= paste("Media = ", media.p, "f(x < ", x , ") = ", prob1, "%"))
x <- media.p
z <- f.devolver.z(x = x, media = media.p, desv = desv.p)
z
## [1] 0
prob2 <- round(pnorm(q = z, mean = 0, sd=1) * 100, 2)
paste(prob2, "%")
## [1] "50 %"
gnormal.z <- plotDist(dist = "norm", mean = 0, sd = 1, type = "h", xlab = "z's", groups = x <= z, col = c('red', 'pink'), main= "Distribución normal estándar", sub= paste("Media = ", 0, "f(z < ", round(z,2) , ") = ", prob2, "%"))
plot_grid(gnormal, gnormal.z, nrow = 1, ncol=2)
Se toma de referencia algunos ejercicios de distribuciones normales. [@matemovil].
Por ejemplo, si se desea encontrar la probabilidad de que la variable estandarizada \(z\), tome un valor entre \(0\) y \(1.50\); hay que encontrar el área bajo la curva entre \(z = 0\) y \(z = 1.50\), o lo que es lo mismo la probabilidad \(P(0 \le z \le 1.50)\) [@matemovil].
z1 = 0
z2 = 1.5
prob2 <- pnorm(q = z2, mean = 0, sd=1) - pnorm(q = z1, mean = 0, sd = 1)
prob2 <- round(prob2 * 100, 2)
paste(prob2, "%")
## [1] "43.32 %"
gnormal.z <- plotDist(dist = "norm", mean = 0, sd = 1, type = "h", xlab = "z's", groups = x >= z1 & x <= z2, col = c('grey', 'pink'), main= "Distribución normal estándar", sub= paste("Media = ", 0, "f(",z1, "<= z <=",z2,")", prob2, "%"))
gnormal.z
La función xpnorm() de librería mosaic refleja el área bajo la curva y los valores porcentuales de probabilidad.
grafica <- xpnorm(q = c(0, 1.5), mean = 0, sd = 1)
grafica
## [1] 0.5000000 0.9331928
round(grafica[1] - grafica[2], 4)
## [1] -0.4332
Salida de xpnorm()
If X ~ N(0, 1), then
P(X <= 0.0) = P(Z <= 0.0) = 0.5000 P(X <= 1.5) = P(Z <= 1.5) = 0.9332
P(X > 0.0) = P(Z > 0.0) = 0.50000 P(X > 1.5) = P(Z > 1.5) = 0.06681
La distribución normal estándar es una versión especial de la distribución normal con media igual a cero y desviación estándar igual a uno. Es representada por la letra Z y se utiliza para estandarizar valores de variables continuas transformables en distribuciones normales. Esto permite hacer cálculos especiales como el de puntuaciones Z para homogeneizar valores y hacer comparaciones más directas, se utiliza en pruebas de hipótesis que involucran distribución normal, tambien en la teoría de probabilidad y la estadística inferencial, ya que muchos de los estadísticos utilizados en estas áreas están basados en la distribución normal. También se utiliza para calcular intervalos de confianza y realizar pruebas de hipótesis sobre la media de una población. Esto se logra transformando los valores de una muestra a valores Z y luego usando la distribución normal estándar para hacer inferencias sobre la media poblacional.