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:
No hay comentarios:
Publicar un comentario