Generación de datos aleatorios

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)
}

Resultados

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

Interpretación de los Gráficos

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.

Lo que aprendí esta semama

Aprendí a usar RMarkdown, creo que todavía no logro dominarlo por completo, empero he hecho un avance para lograr explicar mis scripts.