【发布时间】:2018-11-19 11:27:24
【问题描述】:
假设我有一个像 {1,2,3, ..., 23} 这样的总体,我想生成一个样本,使样本的平均值等于 6。
我尝试使用sample 函数,使用自定义概率向量,但没有成功:
population <- c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23)
mean(population)
minimum <- min(population)
maximum <- max(population)
amplitude <- maximum - minimum
expected <- 6
n <- length(population)
prob.vector = rep(expected, each=n)
for(i in seq(1, n)) {
if(expected > population[i]) {
prob.vector[i] <- (i - minimum) / (expected - minimum)
} else {
prob.vector[i] <- (maximum - i) / (maximum - expected)
}
}
sample.size <- 5
sample <- sample(population, sample.size, prob = prob.vector)
mean(sample)
样本的平均值大约是总体的平均值(在 12 左右波动),我希望它在 6 左右。
一个好的样本是:
- {3,5,6,8,9},平均值=6.2
- {2,3,4,8,9},平均值=5.6
问题与sample integer values in R with specific mean 不同,因为我有一个特定的人口,我不能只生成任意实数,它们必须在人口内。
【问题讨论】:
-
不是重复的,添加解释原因。
-
你能举一个平均为六的样本的例子吗?
-
@Onyambu,已添加
-
@akrun 为什么你把它标记为重复,你看到我添加了为什么它不是重复的解释吗?
-
@banan3'14 我找到了一个重复链接并标记为重复。我重新打开了它。没看到下面的cmets