Я выполняю вычисления с константами и векторами (приблизительная длина = 100), для которых мне нужно смоделировать нормальные распределения N (с помощью rnorm).Для констант (K, со стандартным отклонением = KU) я использую rnorm () стандартным способом:
K <- 2
KU <- 0.2
set.seed(123)
KN <- rnorm(n = 3, mean = K, sd = KU)
, что обеспечивает вектор длины 3 (KN):
[1] 1.887905 1.953965 2.311742
Теперь мне нужно сделать то же самое с вектором (V, стандартное отклонение VU).Мое первое предположение заключается в использовании:
V <- c(1, 2, 3)
VU <- 0.1 * V
set.seed(123)
VN <- rnorm(3, V, VU)
, но создается только вектор из 3 элементов, по одному для каждого элемента вектора:
[1] 0.9439524 1.9539645 3.4676125
Это фактически первое моделирование вектора, но мне нужно 3 раза этот вектор.Одним из решений является создание 9 чисел, но VN - это вектор из 9 элементов:
[1] 0.9439524 1.9539645 3.4676125 1.0070508 2.0258575 3.5145195 1.0460916 1.7469878 2.7939441
, а не 3 векторов из 3 элементов.То, что я хочу, это VN =
[1] 0.9439524 1.0070508 1.0460916
[2] 1.9539645 2.0258575 1.7469878
[3] 3.4676125 3.5145195 2.7939441
, поэтому VN - это 3 вектора, которые я могу впоследствии использовать в других вычислениях, таких как KN * VN.Решение, которое я нашел, это:
set.seed(123)
VN <- as.data.frame(t(matrix(rnorm(3 * length(V), V, VU), nrow = length(V))))
, но, на мой взгляд, это довольно громоздкое выражение (которое мне нужно повторить несколько раз в разных местах с довольно длинными именами переменных).Есть ли более простой способ в базе R для получения случайных векторов?Я хотел бы видеть что-то вроде:
VN <- rnorm.vector(3, V, VU)