En este documento se pretende demostrar la creación de una función, la cual genera una muestra aleatoria de un tamaño n de una distribución normal. Además se mostrará estadística descriptiva junto con gráficas para la mejor interpretación de los resultados.
En primer lugar, se necesita de la siguiente librería para continuar con el script:
library(psych)
Para la creación de esta función se le pedirá ingresar un parámetro ‘n’ el cual indicará el tamaño de la muestra.
Y porque se distribuye según una Normal, se sabe que se denota por los parámetros miu y sigma (𝜇,𝜎). Los cuales son generados aleatoriamente con la función runif().
Luego se usa rnorm() para poder generar la distribución normal usando los datos: n que ingresas al llamar la función generada, miu y sigma que se produjeron anteriormente.
muestraN <- function(n){
miu <- floor(runif(1, min=1, max=100))
sigma <- runif(1,0,10)
mt <- rnorm(n,miu,sigma)
print(mt)
print(describe(mt))
## Después se usa **matrix()** para generar nuevos datos. Se ocupará una variable **k** que se forma aleatoriamente entre 1 y 1000.
k <- runif(1,1,1000) #La k indica el número de muestras que se realizarán
ma <- matrix(NA,k,n) #k muestras de tamaño n
mediax <- vector() #Promedio de las k muestras
## Posteriormente, se crea un ciclo para poder generar las k muestras de la Normal originada.
for (i in 1:k)
{
x<-rnorm(n,miu,sigma)
ma[i,]<-x
mediax[i]<-mean(x)
}
## Para terminar necesitamos 'imprimir' algunos resultados para demostrar la eficacia de la función.
## Aquí se optó por revelar la Media de las tres últimas simulaciones muestrales de la Normal, junto con sus respectivos gráficos:
print('Media de las 3 últimas simulaciones')
print((c(mediax[k-2],mediax[k-1],mediax[k])))
# Histogramas de las 3 últimas muestras de la Normal #
hist(ma[k-2,],probability=T, main='Simulación N() Aleatoria I',xlab='X')
hist(ma[k-1,],probability=T, main='Simulación N() Aleatoria II', xlab='X')
hist(ma[k,],probability=T, main='Simulación N() Aleatoria última', xlab='X')
# Histograma para visualizar la normalidad de la media muestral #
hist(mediax,probability=T,main="Distribución de muestreo de la Media",
xlab="media muestral")
# Curva que sigue la Normal #
x<- rnorm(n, miu, sigma/sqrt(n))
curve(dnorm(x, miu, sigma/sqrt(n)), col=2, lty=2, lwd=2, add=TRUE)
}
Para comprobar la validez de la función creada y explicada con anterioridad, sólo necesitamos probarla. Escribimos la función con el parámetro que queramos, el cual indica el tamaño de la muestra, y en este caso elijo el número 90 para intentar.
Lo primero que lanzará la función serán los 90 datos generados aleatoriamente. En seguida se verá su Estadística Descriptiva gracias a describe() que se insertó en la función creada. De la cual nos interesa lo siguiente:
n - tamaño de la muestra, este caso es 90
mean - la media
sd - desviación estándar
median - la mediana
min - mínimo
max - máximo
muestraN(90)
## [1] 98.92945 87.72520 92.65633 76.45359 96.15573 101.64311 106.66344
## [8] 107.88932 96.13990 104.10403 100.46511 90.15126 101.79263 87.20908
## [15] 88.85344 98.25978 106.39946 108.25992 108.46152 102.02372 97.91405
## [22] 94.41140 102.19568 95.13240 108.87844 100.49959 88.25682 105.89027
## [29] 94.91502 115.84650 112.82290 94.94566 89.45782 83.90615 95.97858
## [36] 109.87264 108.23356 111.50138 107.19506 99.77472 92.84347 99.78605
## [43] 93.92698 104.77938 99.04167 106.37854 89.99140 103.79702 106.90729
## [50] 95.16856 90.65183 89.02176 105.18301 99.57377 93.40190 103.97752
## [57] 85.88076 74.10886 101.55374 96.21607 105.55576 107.58303 91.45453
## [64] 96.50404 97.53645 96.11815 94.54339 99.39103 97.07556 105.21833
## [71] 98.47996 98.54524 96.24042 98.66736 106.62934 93.77054 103.54551
## [78] 94.06562 96.64335 90.23304 111.70967 94.33924 89.22771 91.13750
## [85] 101.68152 92.14415 105.02775 87.55201 89.80272 102.55933
## vars n mean sd median trimmed mad min max range skew kurtosis
## X1 1 90 98.26 7.86 98.37 98.44 8.39 74.11 115.85 41.74 -0.32 0.14
## se
## X1 0.83
## [1] "Media de las 3 últimas simulaciones"
## [1] 96.39649 97.07277 97.09631
Cada Histograma ayuda a visualizar la dispersión de los datos aleatorios, en este caso, se ocuparon las tres últimas muestras de las n elegidas.
A este respecto, al sólo trabajar con 90 datos, es posible que la repartición de datos no siga notoriamente a la curva (campana de Gauss). Por lo que podría llevarnos a falsas conclusiones sobre la normalidad de los datos. En realidad, para saber a ciencia cierta si existe normalidad, sería necesario hacer un test de normalidad el cual nos lanzaría un p-value. Y si éste es > 0.05 podemos afirmar con un 95% de confianza que nuestros datos se ajustan a una distribución normal.
Sin embargo, en el último histograma nombrado ‘Distribución de muestreo de la Media’ se confirmó la presencia de un patrón acampanado para la distribución modelada que se asemeja a la distribución teórica, indicada con la línea punteada en el mencionado Gráfico. Esta evidencia apoya la idea de que el promedio muestral está cerca del promedio poblacional, independientemente de la muestra que se elija.
Aprendí a usar RMarkdown, creo que todavía no logro dominarlo por completo, empero he hecho un avance para lograr explicar mis scripts.