Моделирование Rnorm для многих наблюдений с использованием различных средних значений и значений Sd в R

  1. Используйте функцию Map для моделирования rnorm для многих наблюдений в R
  2. Используйте функцию apply для моделирования rnorm для многих наблюдений в R

В этой статье будет продемонстрировано несколько методов моделирования rnorm для многих наблюдений с использованием различных средних и sd значений в R.

Используйте функцию Map для моделирования rnorm для многих наблюдений в R

Функция rnorm используется для генерации случайных отклонений для нормального распределения, если по умолчанию среднее равно 0, а стандартное отклонение (sd) равно 1. Обратите внимание, что последние параметры могут быть переданы по желанию как вектор элементов. В этом случае мы сохранили предопределенные значения mean и sd как часть фрейма данных. Функция Map применяет данный объект функции к соответствующим элементам множества векторов. Он принимает объект функции в качестве первого аргумента и векторные объекты в качестве следующих аргументов. Обратите внимание, что количество векторных объектов должно быть равно обязательным параметрам данного функционального объекта. В следующем примере мы генерируем 5 отклонений для каждого элемента данных. Кроме того, мы используем функцию set.seed, чтобы указать начальное значение для воспроизводимых результатов между несколькими запусками программы. Функция Map возвращает объект список.

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

Выход:

[[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

Используйте функцию apply для моделирования rnorm для многих наблюдений в R

В качестве альтернативы, мы можем использовать функцию apply для имитации rnorm для разных строк во фрейме данных. Функция применить обычно используется для возврата значений от применения данного объекта функции к указанным полям массива или матрицы. Поля задаются вторым параметром MARGIN. Аргумент MARGIN может иметь значение 1, которое указывает функцию, которая будет применяться к строкам матрицы. С другой стороны, значение 2 обозначает столбцы матрицы, а c(1,2) обозначает как строки, так и столбцы матрицы. Первым аргументом функции применить может быть массив или матрица. Однако обратите внимание, что если переданный объект не является массивом, он приводится к типу массива с помощью функций as.matrix или 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)

Выход:

         [,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