【发布时间】:2018-08-08 12:10:04
【问题描述】:
我有一个包含 27 个样本的数据框,分为 3 个层次。我想复制 500 次加权平均值,其中平均值是在随机选择的 3 个地层样本中计算得出的,权重是地层的相对面积。
我的想法是为每个层创建一个选择循环并计算平均值。我能够计算选择的简单平均值,但我无法计算加权平均值(我不知道如何同时提取权重和值):
#data
DF<-data.frame(v= c(16,42,63,15,42,63,85,16,43),
s= c(1,3,2,2,1,3,3,1,2),
w=c(0.2,0.5,0.3,0.3,0.2,0.5,0.5,0.2,0.3),
stringsAsFactors=T)
#simple mean
x<-c()
for (i in 1:3){
x.tm<-sample(subset(DF$v,DF$s==i),2,replace=T)
x<-c(x,x.tm)
d<-mean(x)}
此外,我对replicate 函数以及在其中插入加权平均值的方式感到困惑。例如,尝试简单的方法我得到了一个空列表:
t<-replicate(500,{
for (i in 1:3){
x.tm<-sample(subset(DF$v,DF$s==i),2, replace=T)
x<-c(x,x.tm)
d<-mean(x)
}
})
我也尝试过使用 boot::boot 命令,但结果是一样的。
【问题讨论】:
-
所以我猜
x代表值,w代表权重,s代表层 ID?在我们谈论引导之前,你能告诉我们你到底想要什么吗?这是我从您的代码中了解到的。对于第 1 层,您随机绘制 2 个值(希望有相关的权重),然后您想要计算每个层的(加权)平均值或计算所有 6 个值的(加权)平均值(3 个层 x 2 个绘制值) ? -
对不起,“v”代表我的人口值,而“x”代表提取的值。我想计算所有 6 个值的加权平均值。我的最终目标是获得一个包含 500 个平均值的数据库,然后计算 2.5 和 97.5 百分位数以及这些平均值。
-
是的,我的错,我的意思是
v,但没关系,Terru_theTerror 提出的答案应该可以解决问题。
标签: r weighted-average statistics-bootstrap