Datos aleatorios

Generando aleatoriedad.
distributions
set.seed
rnorm
rbinom
rexp
cbind
round
write.table
Author

Román Salmerón Gómez

Published

November 5, 2022

R permite generar datos pseudoaleatorios a partir de las distribuciones máss conocidas (para más detalles usar help(“Distributions”)). Algunos ejemplos son:

set.seed(1643) # establezco semilla para que siempre se obtenga el mismo conjunto de datos aleatorios
  # útil cuando se quiere reproducir una simulación sin tener que almacenar los datos
  # o si se desea que todo el mundo tenga los mismos datos

observaciones = 350
normales = rnorm(observaciones, 5, 2) # normal de media 5 y desviación típica 2
binomiales = rbinom(observaciones, 10, 0.2) # binomial con 10 repeticiones y probabilidad de éxito 0.2
exponenciales = rexp(observaciones, 2) # exponencial de parámtero 2
poisson = rpois(observaciones, 2) # Poisson de parámetro 2
  
datos.aleatorios = cbind(normales, binomiales, exponenciales, poisson)
head(datos.aleatorios)
       normales binomiales exponenciales poisson
[1,]  2.0050809          3     0.3866402       5
[2,]  6.7255732          1     0.3848037       2
[3,]  8.8051380          2     0.1193952       4
[4,]  8.0901950          2     0.2986488       5
[5,] -0.8889319          3     0.7036355       1
[6,]  7.6885197          2     0.2331038       2
datos.aleatorios = round(datos.aleatorios, digits=2) # redondeo al segundo decimal
head(datos.aleatorios)
     normales binomiales exponenciales poisson
[1,]     2.01          3          0.39       5
[2,]     6.73          1          0.38       2
[3,]     8.81          2          0.12       4
[4,]     8.09          2          0.30       5
[5,]    -0.89          3          0.70       1
[6,]     7.69          2          0.23       2

Este conjunto de datos se puede guardar mediante el comando write.table:

write.table(datos.aleatorios, "datos_aleatorios.txt", row.names=FALSE, col.names=TRUE, sep=";")
  # se guardan los datos de la variable 'datos.aleatorios' en el archivo "datos_aleatorios.txt"
  # puesto que se indica el nombre directamente, se almacenan en el directorio de trabajo
  # con 'row.names' se indica si se guardan el nombre de las filas
  # con 'col.names' se indica si se guardan el nombre de las columnas
  # con 'sep' se indica cómo se quieren separar las columnas

Aunque el comando set.seed permite replicar exactamente los mismos datos generados de forma aleatoria, puede haber situaciones donde interesen guardar este tipo de datos (u otros).