Title
En R, podemos generar un histograma de una distribución normal mediante la función
rnorm.
Muestras aleatorias de una distribución normal
Para que los resultados sean reproducibles generamos números pseudoaleatorios con al función set.seed
set.seed(123)
normal <- rnorm(10000)
head(data.frame(normal))
normal
1 -0.56047565
2 -0.23017749
3 1.55870831
4 0.07050839
5 0.12928774
6 1.71506499
Comprobamos que los resultados son muy parecidos a los que esperaríamos de una distribución normal estándar N(0, 1). Recordar que la notación de la distribución normal N(media, varianza), es distinta de la empleada por R: N(media, desviación típica).
mean(normal) # Calculamos la media
[1] -0.002371702
# Calculamos la varianza ≃ 1
sd(normal)^2
var(normal)
[1] 0.9986366
Si deseamos generar
muestras aleatorias distintas de la distribución estándar, especificamos la media y la desviación típica.
N(-2, 0.5)
set.seed(123)
normal <- rnorm(10000, -2, sqrt(.5))
head(data.frame(normal))
mean(normal)
[1] -2.001677
# Calculamos la varianza ≃ 0.5
sd(normal)^2
var(normal)
[1] 0.4986376
Histograma de la distribución
set.seed(123)
hist(rnorm(10000), prob = TRUE, xlab = "x",
main = "Histograma", xlim = c(-3, 3), ylim = c(0, 0.4))
Añadimos la curva de la función de densidad de probabilidad sobre el histograma:
curve(dnorm(x), xlim = c(-3, 3), add = TRUE, las = 1,
col = "darkblue", lwd = 2)
Tabla de frecuencias
Creamos la tabla de frecuencias de la muestra aleatoria generada.
set.seed(123)
rangos <- seq(-3, 3, 0.5)
intervalos <- cut(rnorm(10000), breaks = rangos)
tabla.frec <- table(intervalos)
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
Algunos valores de los 10.000 generados están fuera de los intervalos fijados de -3 y 3: 28
sum(tabla.frec)
[1] 9972
Referencias: