Title
En esta entrada emplearemos diferentes funciones en R para el cálculo de valores asociados con la distribución normal. Los valores por defecto son los de la distribución normal estándar, una media de 0 y una desviación típica de 1: N(0, 1).
Los prefijos antepuestos a las funciones de distribución de probabilidad, en nuestra entrada de la normal (norm), son:
d - density, densidad
p - probability, probabilidad
q - quantile, cuantil
r - random, aleatorio
dnorm
Devuelve la altura de la función de densidad en un punto. La marcamos con una línea vertical punteada
# Altura en el punto x = 0
v <- 0
curve(dnorm(x), xlim = c(-3, 3), las = 1,
main = bquote("dnorm:" ~ .(round(dnorm(v), 4))))
segments(x0 = v, y0 = 0, x1 = v, y = dnorm(v), lty = 3)
pnorm
Dado un número o una lista, devuelve la probabilidad acumulada a la izquierda de los valores suministrados. Veamos varios ejemplos.
pnorm(-0.24)
[1] 0.4051651
Al ser simétrica podemos calcular la probabilidad de Pr(X>0.24)
# Probabilidad acumulada partiendo de la derecha
pnorm(0.24, lower.tail = FALSE)
# Restamos a la probabilidad total la acumulada a la izquierda
1 - pnorm(0.24)
# P(X>=-1)
1 - pnorm(-1)
pnorm(-1, lower.tail = FALSE)
pnorm(1)
[1] 0.8413447
pnorm(2.89) - pnorm(0.3)
1-pnorm(0.3) - pnorm(-2.89)
pnorm(0.3, lower.tail = FALSE) - pnorm(2.89, lower.tail = FALSE)
[1] 0.913085
1-pnorm(-1)-pnorm(-1)
1-pnorm(-1) - pnorm(1, lower.tail = FALSE)
pnorm(-1, lower.tail = FALSE) - pnorm(1, lower.tail = FALSE)
[1] 0.6826895
qnorm
Es la función inversa de pnorm. Dada una probabilidad devuelve el número que deja a la izquierda la probabilidad acumulada suministrada.
Calculamos la inversa de los ejemplos anteriores.
qnorm(0.5)
[1] 0.5
Ejemplo 2: cola de la izquierda
qnorm(0.4051651)
[1] -0.2400001
Ejemplo 3: cola de la derecha
qnorm(0.8413447, lower.tail = FALSE)
[1] -1
qnorm((1-0.6826895)/2) # Izquierda
qnorm((1 - 0.6826895)/2, lower.tail = FALSE) # Derecha
[1] -1
[1] 1
rnorm
Genera números aleatorios de la distribución normal. Lo empleamos al comienzo de la entrada para dibujar la distribución normal.
A continuación creamos un histograma al que añadimos la curva de la distribución normal. Empleamos la función set.seed para que generar números pseudoaleatorios y que los resultados sean los mismos si le asignamos el mismo número.
set.seed(123)
hist(rnorm(10000), prob = TRUE, xlab = "x", main = "Histograma",
xlim = c(-3, 3), ylim = c(0, 0.4), las = 1)
curve(dnorm(x), xlim = c(-3, 3), add = TRUE, las = 1,
col = "darkblue", lwd = 2)
Creamos la tabla de frecuencias del histograma anterior:
set.seed(123)
rangos <- seq(-3, 3, 0.5)
intervalos <- cut(rnorm(10000), breaks = rangos)
tabla.frec <- table(intervalos) # Crea la tabla de frecuencias
as.data.frame(tabla.frec)
intervalos Freq
1 (-3,-2.5] 46
2 (-2.5,-2] 173
3 (-2,-1.5] 438
4 (-1.5,-1] 942
5 (-1,-0.5] 1451
6 (-0.5,0] 1978
7 (0,0.5] 1899
8 (0.5,1] 1484
9 (1,1.5] 924
10 (1.5,2] 431
11 (2,2.5] 161
12 (2.5,3] 45
Entradas relacionadas