r - 具有指定均值的样本整数值

标签 r random mean

我想在 R 中生成具有指定均值的整数样本。 我使用 mu+sd*scale(rnorm(n)) 生成了一个 n 值的样本,它的 mean=mu 但这会生成浮点值;我想生成整数值。例如,我想生成一个 mean=4 的样本。我的样本量 n=5,生成值的一个例子是 {2,6,4,3,5}。 关于如何在满足特定均值约束的同时在 R 中执行此操作的任何想法?

最佳答案

选择 n 的平均值为 m 的值等同于选择总和为 m*nn 值>。 (我假设你会坚持使用整数——否则事情会变得更难!)这是一个基于抽样分区的解决方案(加起来等于所需总数的值集)统一,但我不确定这是你想要的,因为它不是在上统一采样,而是在分区上采样......也许其他人可以做得更好,或弄清楚如何重新加权样本。

对于比您的示例大得多的情况,这种暴力解决方案也可能会失败(共有 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/

相关文章:

r - 如何计算 R 中前 10% 的平均值

r - 计算非线性最小二乘拟合的R ^ 2

java - 如何避免使用 java 随机函数重复和零?

python - 标准库中 python 的 random.random() 范围

r - 如何创建均值和标准差data.table中的列

r - 为什么意思是给NA?

r - 在同一个图表上绘制不同的行

r - 仅在 ggplot2 重叠时闪避或抖动

r - 使用字符串索引 xts 并仅返回该确切时间的观察结果

javascript - 简化随机顺序的 jQuery 函数