setwd("~/PyE 11 AM")

Distribución normal

Distribución Normal Estandarizada

Una curva de densidad normal (o de Gauss) describe la densidad de probabilidades en la distribución de valores de observaciones (muestra) de una variable aleatoria, cuando el número de observaciones es bastante grande. Se aplica a muchas de las variables usualmente medidas en biología, aunque hay otras curvas de distribución de densidad, con formas parecidas a la normal (tipo campana), por ejemplo la t de Student.

Su forma general para una población, con la fórmula correspondiente, es la siguiente:

Distribución normal

La densidad de probabilidad para un valor x, en una población inmensamente grande (X

), es 0, pues la probabilidad de un valor único, entre un número infinito de valores posibles de la variable, tiende a 0.

Debemos pensar en la densidad de probabilidad como la frecuencia de ocurrencia de un valor en un intervalo de valores de la variable continua $X, [x y x+dx] $

Si el valor de dx es infinitamente pequeño, entonces la función \(f_X(x)\) es la probabilidad de X en ese intervalo.

La curva de distribución de valores con μ=0 y σ=1 se conoce como la curva normal estandarizada, y su función de densidad de probabilidades es:

\[ Y_i = \frac{1}{\sqrt{2\pi}}.e^\frac{-X_i{^2}}{2}\qquad(1) \]

Tamaño de muestra y distribución normal

La curva normal estandarizada describe exactamente la densidad de probabilidades para un infinito número de valores de la variable; sin embargo usualmente nuestra muestra (o la población completa) contiene un número finito de valores, y esto produce desviaciones de los valores esperados según la curva normal estandarizada.

Vamos a visualizar cómo compara la curva normal, con histogramas de la frecuencia de valores de una variable aleatoria, con 30, 300, 3000, 30000, y 300000 valores.

#valores al azar de la distribución normal
randNorm <- rnorm(30)
#calculo de su densidad
randDensity <- dnorm(randNorm)
#gráfica
library(ggplot2)
library(gridExtra)
g1 <- ggplot(data.frame(x = randNorm, y = randDensity)) + 
  aes(x = x, y = y) +
geom_point() + 
  labs(x = "Random Normal Variable", y = "Densidad")

#valores al azar de la distribución normal
randNorm1 <- rnorm(300)
#calculo de su densidad
randDensity1 <- dnorm(randNorm1)
#gráfica
g2 <- ggplot(data.frame(x = randNorm1, y = randDensity1)) + 
  aes(x = x, y = y) +
geom_point() + 
  labs(x = "Random Normal Variable", y = "Densidad")

#valores al azar de la distribución normal
randNorm2 <- rnorm(3000)
#calculo de su densidad
randDensity2 <- dnorm(randNorm2)
#gráfica
g3 <- ggplot(data.frame(x = randNorm2, y = randDensity2)) + 
  aes(x = x, y = y) +
geom_point() + 
  labs(x = "Random Normal Variable", y = "Densidad")

#valores al azar de la distribución normal
randNorm3 <- rnorm(30000)
#calculo de su densidad
randDensity3 <- dnorm(randNorm3)
#gráfica
g4 <- ggplot(data.frame(x = randNorm3, y = randDensity3)) + 
  aes(x = x, y = y) +
geom_point() + 
  labs(x = "Random Normal Variable", y = "Densidad")

#valores al azar de la distribución normal
randNorm4 <- rnorm(300000)
#calculo de su densidad
randDensity4 <- dnorm(randNorm4)
#gráfica
g5 <- ggplot(data.frame(x = randNorm4, y = randDensity4)) + 
  aes(x = x, y = y) +
geom_point() + 
  labs(x = "Random Normal Variable", y = "Densidad")

#valores al azar de la distribución normal
randNorm5 <- rnorm(123456)
#calculo de su densidad
randDensity5 <- dnorm(randNorm5)
#gráfica
g6 <- ggplot(data.frame(x = randNorm5, y = randDensity5)) + 
  aes(x = x, y = y) +
geom_point() + 
  labs(x = "Random Normal Variable", y = "Densidad")


grid.arrange(g1, g2, g3, g4, g5, g6)

Nótese como en esto casos, la curva tiende a estrecharse mientras más grande es el número de variables. así como también, debido a la inmensa cantidad de valores que posee, a parecerse más a una línea en lugar de puntos individuales. De igual forma y notable en cada gráfica, la densidad es mayor en valores cercanos a la media, como debiera esperarse.

gg1 <- ggplot(data.frame(x = randNorm1), aes(x = x)) +
    geom_histogram(binwidth = 0.1) +
  labs(x = "Random Normal Variable", y = "Frecuencia")

gg2 <- ggplot(data.frame(x = randNorm3), aes(x = x)) +
    geom_histogram(binwidth = 0.1) +
  labs(x = "Random Normal Variable", y = "Frecuencia")

gg3 <- ggplot(data.frame(x = randNorm5), aes(x = x)) +
    geom_histogram(binwidth = 0.1) +
  labs(x = "Random Normal Variable", y = "Frecuencia")
grid.arrange(gg1, gg2, gg3)

En este tipo de gráficas que representan la frecuencia de las variables, estas definitivamente no son tan similares entre sí como aquellas que muestran la densidad de probabilidad más arriba, lo cual es observable al aplicarlas a valores de 300, 30000 y 123456 variables aleatorias.

Probabilidad a partir de una distrubución normal

Utilizando los valores acumulados de la curva normal (integral) podemos calcular la proporción (o probabilidad) de observaciones que se encuentran antes o después de la medida de una observación.

Usando tabla de Z para distribución normal

Pero antes debemos estandarizar la escala de las mediciones a la curva normal estándar (μ=0 y σ=1); para esto usamos el valor Z: (Ecuación 2)

\[ Z = \frac{X_i - \mu}{\sigma}\qquad(2) \]

Tabla de probabilidades: https://drive.google.com/file/d/15JejXWAuKlln8Or5oSdYE6QqWC6m4jNo/view

Función pnorm para predecir probabilidades en R

La función pnorm nos permite calcular la proporción (probabilidad) de valores de una muestra que se encuentran antes o después de un valor Xi, siempre que conozcamos la media y desviación estándar de la muestra (¡asumiendo que los valores se distribuyen normalmente!). La función tiene la siguiente sintáxis:

pnorm(xi, mean = Xbarra, sd = s, lower.tail = TRUE o FALSE)

Donde… xi: valor (cuantil) que divide los datos Xbarra: media de la muestra s: desviación estándar de la muestra lower.tail TRUE o FALSE: si queremos proporción antes o después del valor xi

#Calcular la proporción (o probabilidad) de valores menores de 6.6 mm en una distribución normal de tamaños de semillas, con media = 6.0 mm y desviación estándar = 1.1 mm:

pnorm(6.6, mean=6, sd=1.1, lower.tail = TRUE)
## [1] 0.7072795

Nota: Sí se desea obener la proporción antes de xi se puede emitir el código “lower.tail = TRUE”.

#y la proporción de valores mayores de 5.4 mm:
pnorm(5.4, mean=6, sd=1.1, lower.tail = FALSE)
## [1] 0.7072795
#también podemos calcular la proporción de valores entre dos valores (o fuera de esos dos valores)
props <- pnorm( c(5.4,6.6), mean=6.0, sd=1.1, lower.tail = TRUE  )
props
## [1] 0.2927205 0.7072795

En ambos casos la proporción es igual ya que ambos valores se encuentran igual de lejos de la media, con la diferencia que uno es hacia atrás (5.4) y otro hacia adelante (6.6) y que representan las proporciones después y antes de xi respectivamente.

#proporción de valores entre 5.4 mm y 6.6 mm
props[2] - props[1]
## [1] 0.4145591

Asignación:

  • ¿cuáles son las principales aplicaciones (en su carrera) de la distribución normal?

Para la ingeniería electrónica, ser capaz de predecir el comportamiento o la tendencia que tomará un conjunto de datos es fundamental, pues aunque estas parezcan seguir patrones aleatorios, es necesario aplicar la probabilidad y la estadística para realizar comparaciones y verificar que tanto se ven realmente afectadas por cosas como el ruido externo. Un ejemplo claro es la señal que puede recibir un cable UTP que transmite información (como datos, voz, video, etc.), la cual puede variar dependiendo al ruido generado por los pares de cables contiguos o conocido como NEXT, que podría llegar a generar distintos valores dependiendo de varios factores. Con la probabilidad podría ser posible estudiar el caso específico a profundidad y quizás llegar a un decisión concluyente sobre que hacer al respecto.

  • Realice un caso de estudio aplicado (con datos) en el cual se requiera del cálculo de probabilidad con distribución normal.

Datos sobre cerdos de Guinea o Cobayas (Caso de Estudio)

Grupo de datos obtenido a un estudio realizado con el fin de obtener información acerca de como es el crecimiento de los dientes de 60 cerdos de guinea con respecto al tamaño de las dosis que se les era suministrada y también el tipo de dosis. Por motivos de practicidad, en esta práctica se utilizan únicamente las columnas que indican los tamaños de los dientes y las dosis proporcionadas.

library(readr)
library(ggplot2)
dientes <- read_csv("dientes.csv")
## Parsed with column specification:
## cols(
##   Cobayas = col_double(),
##   Tamanio = col_double(),
##   `M<e9>todo` = col_character(),
##   Dosis = col_double()
## )
View(dientes)

tamaño <- as.numeric(dientes$Tamanio)
dosis <- as.numeric(dientes$Dosis)

Histograma de frecuencia

library(fdth)
## 
## Attaching package: 'fdth'
## The following objects are masked from 'package:stats':
## 
##     sd, var
dist <- fdt(tamaño, breaks="Sturges")
dist
##     Class limits  f   rf rf(%) cf  cf(%)
##   [4.158,8.4553)  7 0.12 11.67  7  11.67
##  [8.4553,12.753)  8 0.13 13.33 15  25.00
##   [12.753,17.05) 10 0.17 16.67 25  41.67
##   [17.05,21.347)  8 0.13 13.33 33  55.00
##  [21.347,25.644) 14 0.23 23.33 47  78.33
##  [25.644,29.942) 10 0.17 16.67 57  95.00
##  [29.942,34.239)  3 0.05  5.00 60 100.00
plot(dist,type="fh")

ggplot(data.frame(x = dosis, y = tamaño)) + 
  aes(x = x, y = y) +
geom_point() + 
  labs(x = "Dósis suministradas", y = "Tamaños registrados")

### Media, Mediana y Moda

summary(dientes$Tamanio)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    4.20   13.07   19.25   18.81   25.27   33.90
library(modeest)
## 
## Attaching package: 'modeest'
## The following object is masked from 'package:fdth':
## 
##     mfv
mfv(dientes$Tamanio)
## [1] 26.4

Desviación Estándar y Varianza

sd(dientes$Tamanio)
## [1] 7.649315
var(dientes$Tamanio)
## [1] 58.51202

Probabilidad de encontrar valores

pnorm(20.81, mean = 18.81, sd = 7.649315, lower.tail = TRUE)
## [1] 0.6031316

Probabilidad de encontrar valores para los tamaños menores o iguales a 20.81.

pnorm(16.81, mean = 18.81, sd = 7.649315, lower.tail = FALSE)
## [1] 0.6031316

Probabilidad de encontrar valores para los tamaños menores o iguales a 16.81.

Con esto se observa como al igual que sucede con una variable generada aleatoriamente, la probabilidad de encontrar valores menores o mayores a números igual de alejados a la media siempre es la misma, cuando se cumpla la condición que indica que en uno se descartan los valores menores que xi y en el otro no.

Probabilidad de encontrar valores muy alejados y muy cercanos a la media respectivamente:

pnorm(5, mean = 18.81, sd = 7.649315, lower.tail = TRUE)
## [1] 0.0355068
pnorm(19, mean = 18.81, sd = 7.649315, lower.tail = TRUE)
## [1] 0.5099082
props <- pnorm( c(13.07, 25.57), mean = 18.81, sd = 7.649315, lower.tail = TRUE)
props
## [1] 0.2265087 0.8115815
props[2] - props[1]
## [1] 0.5850728

Redacción personal

La proporición existente entre ambos valores de probabilidad previamente calculados. Como se observa, gran parte de todos los valores, un poco más de la mitad de los mismos, se encuentran en esa proporción que inicia desde el primer cuartil hasta el tercer cuartil, sin embargo, no es realmente tan grande como pudiera esperarse en una distribución normal. Esto último es gracias a que la varianza entre los valores es relativamente grande, indicando que tienden a tener diferencias bastante notorias entre valores.