我的人数是固定的(例如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个),但不尽相同。我希望它们分布不均匀,...
Smith和Tromble在“ Sampling Uniformly from the Unit Simplex”中提出的算法显示了一种解决方案。我在“ Random Integers with a Given Positive Sum”部分中对此算法使用了伪代码。