【问题标题】:take a sample that has a specific mean取一个具有特定均值的样本
【发布时间】: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

标签: r sample


【解决方案1】:

你可以试试这个:

m = local({b=combn(1:23,5);
           d = colMeans(b);
           e = b[,d>5.5 &d<6.5];
           function()sample(e[,sample(ncol(e),1)])})
m()
[1] 8 5 6 9 3
m()
[1]  6  4  5  3 13

细分:

b=combn(1:23,5) # combine the numbers into 5
d = colMeans(b) # find all the means
e = b[,d>5.5 &d<6.5] # select only the means that are within a 0.5 range of 6
sample(e[,sample(ncol(e),1)]) # sample the values the you need

【讨论】:

  • 哇,完美运行!你能稍微解释一下,这一切意味着什么吗?如果您不这样做,我会理解(我可能只需要阅读文档并找出 local 和其他函数的含义)。
  • 我做了组合。结合 1:23 的 5 个值。然后找到了这些组合的所有手段。然后随机选择介于 5.5 和 6.5 之间的那些,然后将它们随机化
  • 现在我明白了。但在我的真实案例中,我的人口规模为 800,样本规模为 100(太大而无法生成所有组合)。嗯,也许我会做蒙特卡洛
  • 但如果您的样本量为 100,则无法获得 6 作为均值,因为最小均值可以是 50.5,因为它是在没有替换的情况下进行采样的。也就是说,如果您足够幸运的话采样 1:100 的值,没有大于 100 的值。mean(1:100)=50.5
  • 在我的真实案例中,我没有自然数 :) 我的实数平均值在 144 左右,样本的平均值必须在 140 左右。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-09
  • 1970-01-01
  • 2020-03-30
  • 2018-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多