Simule Rnorm para muchas observaciones utilizando diferentes valores medios y Sd en R

Jinku Hu 30 enero 2023
  1. Utilice la función Map para simular rnorm para muchas observaciones en R
  2. Utilice la función apply para simular rnorm para muchas observaciones en R
Simule Rnorm para muchas observaciones utilizando diferentes valores medios y Sd en R

Este artículo demostrará múltiples métodos para simular rnorm para muchas observaciones utilizando diferentes valores de media y sd en R.

Utilice la función Map para simular rnorm para muchas observaciones en R

La función rnorm se utiliza para generar desviaciones aleatorias para la distribución normal dado que la media predeterminada es igual a 0 y la desviación estándar (sd) es 1. Tenga en cuenta que los últimos parámetros se pueden pasar opcionalmente como vector de elementos. En este caso, almacenamos valores predefinidos de media y sd como parte del DataFrame. La función Map aplica el objeto de función dado a los elementos correspondientes de múltiples vectores. Toma el objeto de función como primer argumento y los objetos vectoriales como los siguientes argumentos. Tenga en cuenta que el número de objetos vectoriales debe ser igual a los parámetros obligatorios del objeto de función dado. En el siguiente ejemplo, generamos 5 desviaciones para cada elemento de data. Además, usamos la función set.seed para especificar el valor de semilla para obtener resultados reproducibles entre múltiples ejecuciones de programas. La función Map devuelve un objeto list.

set.seed(123)
df1 <- data.frame(
  data = sample(1:64, 4),
  mean = sample(1:64, 4),
  sd = c(1, 4, 8, 20)
)

n <- 5
func1 <- function(x, y) rnorm(n, mean = x, sd = y)
list1 <- Map(func1, df1$mean, df1$sd)
list1

Producción :

[[1]]
[1] 3.129288 4.715065 3.460916 1.734939 2.313147

[[2]]
[1] 40.21735 46.89633 43.43926 43.60309 42.44273

[[3]]
[1] 45.55327 64.29531 53.98280 34.26706 55.61085

[[4]]
[1] 44.54417 32.64353 49.64050 33.47991 39.42218

Utilice la función apply para simular rnorm para muchas observaciones en R

Alternativamente, podemos usar la función apply para simular rnorm para diferentes filas en el DataFrame. La función apply se usa generalmente para devolver valores de la aplicación del objeto de función dado a los márgenes especificados de un array o un array. Los márgenes se especifican mediante el segundo parámetro denominado MARGEN. El argumento MARGIN puede tener el valor de 1, que indica la función que se aplicará a las filas del array. Por otro lado, el valor 2 denota las columnas del array y c(1,2) indica tanto las filas como las columnas del array. El primer argumento de la función apply puede ser un array o un array. Sin embargo, tenga en cuenta que si el objeto pasado no es un array, se convierte en el tipo de array mediante las funciones as.matrix o as.array.

set.seed(123)
df1 <- data.frame(
  data = sample(1:64, 4),
  mean = sample(1:64, 4),
  sd = c(1, 4, 8, 20)
)

n <- 5
func1 <- function(x) rnorm(n, mean = x[1], sd = x[2])
apply(df1[-1], 1, FUN = func1)

Producción :

         [,1]     [,2]     [,3]     [,4]
[1,] 3.129288 40.21735 45.55327 44.54417
[2,] 4.715065 46.89633 64.29531 32.64353
[3,] 3.460916 43.43926 53.98280 49.64050
[4,] 1.734939 43.60309 34.26706 33.47991
[5,] 2.313147 42.44273 55.61085 39.42218
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artículo relacionado - R Distribution