以列作为 R 中每一行输入的模拟
Simulations with Columns as Input for Each Row in R
我正在尝试 运行 结合列中的静态变量和值进行模拟,对输出求和,然后将各个输出存储在向量或数据框中。
mean1 <- 2.4
sd1 <- 0.5
df <- data.frame(x = c(2, 3, 4), y = c(5, 6, 7))
我想做的是:
- 将 x 列中的每一行除以 y 列中的每一行
- 使用 mean1 和 sd1 乘以正态分布
- 对结果行值求和,因此我每次模拟只有一个值。
我想我明白如果我不逐行进行,我将如何获得价值,所以对于第 1 行,它将是:
v1 <- replicate(n = 1, expr = rnorm(n = 100, mean = mean1, sd = sd1) * 2 / 5, simplify = TRUE)
但是我画空白的地方是如何运行每一行,然后对每个模拟的每一行的结果求和,在这种情况下,对三行中每一行的三个值求和100 次,所以我的输出有 100 个值。
x
除以 y
是常量,因此您可以执行一次并将其保存在变量中。然后,您可以使用 replicate
100 次并在每次迭代时生成 1 个随机数以乘以 sum
.
val <- df$x/df$y
n <- 100
replicate(n, {
sum(val * rnorm(n = 1, mean = mean1, sd = sd1))
})
或者您也可以生成 100 个随机值,然后将它们相加 sapply
。
r_val <- rnorm(n, mean = mean1, sd = sd1)
sapply(r_val, function(x) sum(val * x))
Ronak 回答了我的问题:
val <- df$x/df$y
n <- 100
replicate(n, {
sum(val * rnorm(n = 1, mean = mean1, sd = sd1))
})
我不得不加回 df$column 引用(这里是 df$x),而不是创建一个常量,因为实际应用程序有更多的变量和比示例更复杂的数学,但结构运行完美。
谢谢!
我正在尝试 运行 结合列中的静态变量和值进行模拟,对输出求和,然后将各个输出存储在向量或数据框中。
mean1 <- 2.4
sd1 <- 0.5
df <- data.frame(x = c(2, 3, 4), y = c(5, 6, 7))
我想做的是:
- 将 x 列中的每一行除以 y 列中的每一行
- 使用 mean1 和 sd1 乘以正态分布
- 对结果行值求和,因此我每次模拟只有一个值。
我想我明白如果我不逐行进行,我将如何获得价值,所以对于第 1 行,它将是:
v1 <- replicate(n = 1, expr = rnorm(n = 100, mean = mean1, sd = sd1) * 2 / 5, simplify = TRUE)
但是我画空白的地方是如何运行每一行,然后对每个模拟的每一行的结果求和,在这种情况下,对三行中每一行的三个值求和100 次,所以我的输出有 100 个值。
x
除以 y
是常量,因此您可以执行一次并将其保存在变量中。然后,您可以使用 replicate
100 次并在每次迭代时生成 1 个随机数以乘以 sum
.
val <- df$x/df$y
n <- 100
replicate(n, {
sum(val * rnorm(n = 1, mean = mean1, sd = sd1))
})
或者您也可以生成 100 个随机值,然后将它们相加 sapply
。
r_val <- rnorm(n, mean = mean1, sd = sd1)
sapply(r_val, function(x) sum(val * x))
Ronak 回答了我的问题:
val <- df$x/df$y
n <- 100
replicate(n, {
sum(val * rnorm(n = 1, mean = mean1, sd = sd1))
})
我不得不加回 df$column 引用(这里是 df$x),而不是创建一个常量,因为实际应用程序有更多的变量和比示例更复杂的数学,但结构运行完美。
谢谢!