如何从多个蒙特卡罗模拟中提取值并将其编译为 R 中的一系列值?

问题描述 投票:0回答:1

我正在使用 R 中的三角分布进行蒙特卡洛模拟。

rtriangle(n = 10000, a = 9100, b = 13234, c = 11585)

在此示例中,我进行了 10,000 次迭代,其中“a”是最小值,“b”是最大值,“c”是平均值。这些值代表单个房屋的建筑成本。该模拟的结果将是 10,000 次迭代产生的值的分布。

我想做的事:

  1. 如何提取/获取分布中的第 50 个百分位值?
  2. 如何重新运行模拟 924 次 - 因为我想获得 924 栋不同房屋的施工值(所有参数保持不变)。
  3. 我想要实现的最终输出是从 924 个模拟中编译出的第 50 个百分位值。简而言之,将有 924 个不同的施工成本值(代表 924 个模拟中每个模拟的第 50 个百分位值)。

谢谢你。

r iteration simulation distribution montecarlo
1个回答
0
投票

编写一个辅助函数

sim
并用
replicate
调用它924次。

sim <- function(n, a, b, c = (a + b)/2) {
  triangle::rtriangle(n, a, b, c = c) |> median()
}

R <- 924L

set.seed(2024)
medians_vec <- replicate(R, sim(n = 10000, a = 9100, b = 13234, c = 11585)) |> c()
head(medians_vec)
#> [1] 11362.95 11338.21 11373.15 11370.72 11359.24 11364.01
hist(medians_vec, main = "Medians' Empirical Distribution", xlab = "Median")

创建于 2024-08-15,使用 reprex v2.1.0

© www.soinside.com 2019 - 2024. All rights reserved.