lunes, 18 de mayo de 2009

R: Distribución Normal

En este apartado, se explicarán las funciones existentes en R para obtener resultados válidos que se basen en la distribución Normal de variables aleatorias continuas.

Ya que aquí sólo se expondrá cómo es el manejo de las funciones, se recomienda que se visite el capítulo: Variables Aleatorias Continuas y Distribuciones de Probabilidad, para determinar en qué consiste dicha distribución.

Para obtener valores que se basen en la distribución Normal, R, dispone de cuatro funciones:

R: Distribución Normal.
dnorm(x, mean = 0, sd = 1, log = F)Devuelve resultados de la función de densidad.
pnorm(q, mean = 0, sd = 1, lower.tail = T, log.p = F)Devuelve resultados de la función de distribución acumulada.
qnorm(p, mean = 0, sd = 1, lower.tail = T, log.p = F)Devuelve resultados de los cuantiles de la Normal.
rnorm(n, mean = 0, sd = 1)Devuelve un vector de valores de la Normal aleatorios.


Los argumentos que podemos pasar a las funciones expuestas en la anterior tabla, son:
  • x, q: Vector de cuantiles.
  • p: Vector de probabilidades.
  • n: Números de observaciones.
  • mean: Vector de medias. Por defecto, su valor es 0.
  • sd: Vector de desviación estándar. Por defecto, su valor es 1.
  • log, log.p: Parámetro booleano, si es TRUE, las probabilidades p son devueltas como log (p).
  • lower.tail: Parámetro booleano, si es TRUE (por defecto), las probabilidades son P[X ≤ x], de lo contrario, P [X > x].

Para comprobar el funcionamiento de estas funciones, usaremos un ejemplo de aplicación.

Imaginemos el siguiente problema: Sea Z una variable aleatoria normal con una media de 0 y una desviación estándar igual a 1. Determinar:

a) P(Z > 2).

b)
P(-2 ≤ Z ≤ 2).

c)
P(0 ≤ Z ≤ 1.73).

d)
P(Z ≤ a) = 0.5793.

e) P(Z > 200). Siendo la media 100 y la desviación estándar 50.


La variable aleatoria continua Z, sigue una distribución estándar Normal: Z ~ N(0, 1)


Apartado a)

Para resolver este apartado, necesitamos resolver: P( Z > 2), por lo tanto, usamos la función acumulada de distribución indicando que la probabilidad de cola es hacia la derecha:

> pnorm(2, mean = 0, sd = 1, lower.tail = F)
[1] 0.02275013


Apartado b)

Necesitamos resolver: P(-2 ≤ z ≤ 2), volvemos a emplear la función de densidad acumulada, esta vez, con la probabilidad de cola por defecto, hacia la izquierda:

> pnorm(c(2), mean = 0, sd = 1) - pnorm(c(-2), mean = 0, sd = 1)
[1] 0.9544997


Apartado c)

Necesitamos resolver: P(0 ≤ z ≤ 1.73), este ejercicio se resuelve con el mismo procedimiento que el apartado anterior, por lo tanto, volvemos a emplear la función de densidad acumulada:

> pnorm(c(1.73), mean = 0, sd = 1) - pnorm(c(0), mean = 0, sd = 1)
[1] 0.4581849


Apartado d)

En este apartado, debemos obtener el valor de a para que se cumpla la probabilidad, es decir: P(Z ≤ a) = 0.5793. Para ello, debemos usar la función de quantiles:

> qnorm(0.5793, mean = 0, sd = 1)
[1] 0.2001030

Por lo tanto, el valor a para que satisfazga la probabilidad de 0.5793 es: 0.2001030, aproximádamente, 0.20.

Lo vamos a demostrar: Teniendo en cuenta las tablas que dispone Aqueronte, adecuamos el dato:

0.5793 - 0.5 = 0.0793

Buscamos en las tablas de la Normal el valor de Z que tenga la probabilidad 0.0793, y dicho valor, es Z = 0.20.


Apartado e)

La curiosidad de este apartado es que no tenemos una normal estándar, pero no hay problema, simplemente, debemos especificar los valores de la media y desviación estándar en los argumentos de la función de distribución acumulada para que la tipificación la realice automáticamente la función de R.

Otra cosa importante a tener en cuenta, es que debemos indicar que la probabilidad de cola es hacia la derecha.

> pnorm(c(200), mean = 100, sd = 50, lower.tail = F)
[1] 0.02275013


Como hemos podido comprobar, R dispone de varias funciones que satisfacen cualquier cálculo y operación que se desee realizar sobre la distribución Normal.

Por supuesto, se recomienda que se emplee la ayuda de R para ampliar conocimientos sobre las funciones expuestas en este capítulo.

> ?stats::Normal