Допустим, у меня есть популяция типа {1,2,3, ..., 23}, и я хочу сгенерировать выборку так, чтобы среднее значение выборки равнялось 6.
Я пытался использовать *Функция 1003 *, использующая пользовательский вектор вероятности, но он не работает:
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
Проблема отличается от выборки целочисленных значений в R с определенным средним значением , потому что у меня есть конкретная совокупность, и я не могу простогенерировать произвольные действительные числа, они должны быть внутри совокупности.
График вектора вероятности: