生成大小偏斜的组,但其元素加到固定的总和

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

我的人数是固定的(例如1000)。我想将这1000人分为一些随机的类Y(例如5个),但不尽相同。我希望它们根据某些严重偏斜的概率分布(类似于幂律分布)不均匀地分布。

我的直觉是,我需要生成概率分布,该概率分布为(1)偏斜,而(2)也加起来为1。

我的临时解决方案是从幂定律分布中生成随机数,然后将它们乘以一个标量,以确保这些总和接近我的目标数,将我的目标数调整为该新数,然后进行相应的拆分。

但是看上去似乎很不雅致,'y_size'并不总等于1000,这需要循环遍历并重试。有什么更好的方法?

require(poweRlaw)
x<-1000
y<-10
y_sizes<-rpldis(10,xmin=5,alpha=2,discrete_max=x)
y_sizes<-round(y_sizes * x/sum(y_sizes)) 
newx<-y_sizes #newx only approx = x rather than = x
people<-1:x
groups<-cut(
  people,
  c(0,cumsum(y_sizes))
) %>% as.numeric
data.frame(
  people=people,
  group=groups
)

我的人数是固定的(例如1000)。我想将这1000人分为一些随机的类Y(例如5个),但不尽相同。我希望它们分布不均匀,...

r random sampling
1个回答
0
投票

Smith和Tromble在“ Sampling Uniformly from the Unit Simplex”中提出的算法显示了一种解决方案。我在“ Random Integers with a Given Positive Sum”部分中对此算法使用了伪代码。

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