每个盒子中具有最大尺寸的多项式随机生成
Multinomial random generation with maximum size in each box
在 R 中,我想生成一个给定大小 N 的多项式分布随机数向量,例如使用 rmultinom
,但每个 K 框都有一个最大大小。
例如:
set.seed(1)
draw = rmultinom(n = 1, size = 1000, prob = c(67,211,264,166,144,52,2,175))
在本例中,大小为1000
,指定放入八个盒子(prob
的length
)的对象总数,prob = c(67,211,264,166,144,52,2,175)
八个框的概率向量(内部归一化为总和 1)。另外,我希望c(67,211,264,166,144,52,2,175)
成为八个盒子中每一个的最大尺寸的向量。
但是在这种情况下,可以生成高于 c(67,211,264,166,144,52,2,175)
的数字(例如在上面的示例中,draw[7,]=4
高于 2),而我希望每个数字小于或等于 prob
中指定的每个框的最大大小,加上 draw
总和 size = 1000
。
你知道任何功能或任何简单的方法吗?我找不到答案。
From wikipedia: "对于 n independent 次试验,每次试验都会导致 k 个类别中的一个成功,每个类别都有给定的固定成功概率, 多项式分布给出了各种类别成功次数的任何特定组合的概率。
这里的关键词是独立。您对每个类别的绘制次数的限制意味着抽样不是独立的。如果您的问题是多项式的,则有可能(尽管不太可能)从方框 7 中抽取所有数字。这不是您想要的,因此您不能使用 rmultinom
.
这里有一个不同的方法:
# vector of item counts
m <- c(67,211,264,166,144,52,2,175)
# expand the item counts in to a single vector with i repeated m[i] times
d <- unlist(lapply(1:length(m), function(x) rep(x, m[x])))
# sample from d without replacement
s <- sample(d, size=1000, replace=FALSE)
# count the number of items of each type were sampled
table(factor(s))
1 2 3 4 5 6 7 8
63 197 242 153 135 48 2 160
在 R 中,我想生成一个给定大小 N 的多项式分布随机数向量,例如使用 rmultinom
,但每个 K 框都有一个最大大小。
例如:
set.seed(1)
draw = rmultinom(n = 1, size = 1000, prob = c(67,211,264,166,144,52,2,175))
在本例中,大小为1000
,指定放入八个盒子(prob
的length
)的对象总数,prob = c(67,211,264,166,144,52,2,175)
八个框的概率向量(内部归一化为总和 1)。另外,我希望c(67,211,264,166,144,52,2,175)
成为八个盒子中每一个的最大尺寸的向量。
但是在这种情况下,可以生成高于 c(67,211,264,166,144,52,2,175)
的数字(例如在上面的示例中,draw[7,]=4
高于 2),而我希望每个数字小于或等于 prob
中指定的每个框的最大大小,加上 draw
总和 size = 1000
。
你知道任何功能或任何简单的方法吗?我找不到答案。
From wikipedia: "对于 n independent 次试验,每次试验都会导致 k 个类别中的一个成功,每个类别都有给定的固定成功概率, 多项式分布给出了各种类别成功次数的任何特定组合的概率。
这里的关键词是独立。您对每个类别的绘制次数的限制意味着抽样不是独立的。如果您的问题是多项式的,则有可能(尽管不太可能)从方框 7 中抽取所有数字。这不是您想要的,因此您不能使用 rmultinom
.
这里有一个不同的方法:
# vector of item counts
m <- c(67,211,264,166,144,52,2,175)
# expand the item counts in to a single vector with i repeated m[i] times
d <- unlist(lapply(1:length(m), function(x) rep(x, m[x])))
# sample from d without replacement
s <- sample(d, size=1000, replace=FALSE)
# count the number of items of each type were sampled
table(factor(s))
1 2 3 4 5 6 7 8
63 197 242 153 135 48 2 160