我想在 R 中生成具有指定均值的整数样本。
我使用 mu+sd*scale(rnorm(n))
生成了一个 n
值的样本,它的 mean=mu
但这会生成浮点值;我想生成整数值。例如,我想生成一个 mean=4 的样本。我的样本量 n
=5,生成值的一个例子是 {2,6,4,3,5}。
关于如何在满足特定均值约束的同时在 R 中执行此操作的任何想法?
最佳答案
选择 n
的平均值为 m
的值等同于选择总和为 m*n
的 n
值>。 (我假设你会坚持使用正整数——否则事情会变得更难!)这是一个基于抽样分区的解决方案(加起来等于所需总数的值集)统一,但我不确定这是你想要的,因为它不是在值上统一采样,而是在分区上采样......也许其他人可以做得更好,或弄清楚如何重新加权样本。
对于比您的示例大得多的情况,这种暴力解决方案也可能会失败(共有 627 个分区,总共 20 个,5604 个,总共 30 个,37338,总共 40 个 ...)
m <- 4
n <- 5
library("partitions")
pp <- parts(m*n) ## all sets of integers that sum to m*n (=20 here)
## restrict to partitions with exactly n (=5) non-zero values.
pp5 <- pp[1:5,colSums(pp>0)==n]
set.seed(101) ## for reproducibility
## sample uniformly from this set
pp5[,sample(ncol(pp5),size=1)] ## 9, 5, 4, 1, 1
关于r - 具有指定均值的样本整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26569456/