gpt4 book ai didi

r - 在总和等于 1 的条件下从 uniform 中提取

转载 作者:行者123 更新时间:2023-12-05 04:21:52 24 4
gpt4 key购买 nike

我想从均匀分布中生成 3 个随机概率,条件是它们的总和 = 1,同时为每个概率指定最小值和最大值。

例如考虑以下内容

p1 = U(0.25, 0.75); p2 = U(0.25, 0.75); p3 = U(0.00, 0.25)

服从:p1+p2+p3 = 1。

我可以用这段代码实现这个

n_draws <- 1e5
set.seed(1)
p <- data.frame(p1 = runif(n_draws, 0.25, 0.75))
p$p2 <- runif(n_draws,
ifelse(p$p1 >= 0.5, 0.25, 0.75 - p$p1), 1 - p$p1)
p$p3 <- 1 - (p$p1 + p$p2)

摘要显示值被限制在指定的范围内

summary(p)
p1 p2 p3
Min. :0.2500 Min. :0.2500 Min. :0.000001
1st Qu.:0.3740 1st Qu.:0.2941 1st Qu.:0.030647
Median :0.5000 Median :0.3807 Median :0.079315
Mean :0.4998 Mean :0.4066 Mean :0.093547
3rd Qu.:0.6254 3rd Qu.:0.5006 3rd Qu.:0.148063
Max. :0.7500 Max. :0.7489 Max. :0.249999

它们的和都等于1

all(rowSums(p) == 1)
> TRUE

但是 p2p3 向左倾斜。 Distributions of p

是否有更有效的方法来实现每个概率的均匀分布,确保它们的总和 = 1?

(这是我能回答的最接近问题的答案,但它并不能完全帮助我实现目标:https://stats.stackexchange.com/questions/289258/how-to-simulate-a-uniform-distribution-of-a-triangular-area)

最佳答案

sum = 1 的约束总是会引入失真:您不能让所有 3 个变量均匀分布。一个直观的理解是,如果所有变量都是均匀分布的,那么 p1、p2 和 p3 的所有组合应该是同等可能的,但我们知道这不是真的,因为有些是你的约束使不可能的。如果您生成任何类型的分布,然后根据某些标准拒绝其中的一部分,您几乎肯定不会留下相同类型的分布。

由于您的 p1 和 p3 之和永远不会超过 1,因此您可以绘制它们然后计算 p2,因为您永远不必丢弃 p2 值。这将确保 p1 和 p3 是从均匀分布中提取的,但 p2 不是这样,因为显然极值将被低估,因为它们与 p1 和 p3 的某些可能值不兼容。

p1s <- runif(n_draws, 0.25, 0.75)
p3s <- runif(n_draws, 0, 0.25)
p2s <- 1 - p1s - p3s
hist(p2s)

enter image description here

关于r - 在总和等于 1 的条件下从 uniform 中提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74140336/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com