【发布时间】:2021-10-13 09:06:07
【问题描述】:
我有一项调查需要做两件事;
- 我需要使用调查包将调查权重应用于一组变量,以检索“加权”平均值 AND
- 我需要找到这些变量的加权平均值。
在完成这两项操作后,我只想要每个变量的最终加权平均值。
我知道如何分别找到调查加权平均值和加权平均值,但我不知道如何将它们一起应用,或者以何种顺序应用这些权重。下面是我的数据示例,以及如何分别找到“调查加权平均值”和“加权平均值”。
请参阅下面的示例数据:
library(survey)
dat_in <- read_table2("code CCS trad_sec Q1 enrolled wgt
23 TRUE sec 20 400 1.4
66 FALSE trad 40 20 3.0
34 TRUE sec 30 400 4.4
78 FALSE sec 40 25 2.2
84 TRUE trad 20 25 3.7
97 FALSE sec 10 500 4.1
110 TRUE sec 80 1000 4.5
123 FALSE trad 33 679 4.8
137 TRUE sec 34 764 5.2
150 FALSE sec 43 850 5.6
163 TRUE trad 45 935 6.0
177 FALSE trad 46 1020 6.4
190 TRUE trad 48 1105 6.7
203 FALSE trad 50 1190 7.1
217 TRUE trad 52 1276 7.5
230 FALSE trad 53 1361 7.9
243 TRUE trad 55 1446 8.3
256 FALSE trad 57 1531 8.6
270 TRUE sec 59 1616 9.0
283 FALSE sec 60 1701 9.4
296 TRUE sec 62 1787 9.8
310 FALSE sec 64 1872 10.2
")
1.应用调查权重:
创建调查设计
SurveyDesign<- svydesign(id =~code,
weights = ~wgt,
data = dat_in)
求加权平均值和表格
# For CCS FALSE, sec
svymean(~Q1, subset(SurveyDesign,CCS=="FALSE" & trad_sec %in% c("sec")), na.rm = T)
# For CCS TRUE, sec
svymean(~Q1, subset(SurveyDesign,CCS=="TRUE" & trad_sec %in% c("sec")), na.rm = T)
2。求加权平均值:
基于注册的加权平均值
*根据评论编辑
dat_in %>% group_by(CCS, trad_sec) %>% mutate(wgtQ1 = weighted.mean(Q1, w = enrolled))
结合 1 和 2 的可能解决方案? (基于众包)
按组生成加权平均值
dat_in2 <- dat_in %>%
group_by(CCS, trad_sec) %>%
mutate(wgtQ1 = weighted.mean(Q1, w = enrolled)) %>%
ungroup
创建调查设计
SurveyDesign2<- svydesign(id =~code,
weights = ~wgt,
data = dat_in2)
**聚合加权平均的运行平均值
svymean(~wgtQ1, subset(SurveyDesign2,CCS=="FALSE" & trad_sec %in% c("sec")), na.rm = T)
我的直觉是我应该先应用加权平均值,然后再应用调查权重?上面的解决方案看起来很时髦,因为每一行都是每个组(CCS,trad_sec)的加权平均值,而设计对象应该被提供非聚合数据?
非常感谢所有建议!
【问题讨论】:
-
我觉得你可以用
dat_in %>% group_by(CCS, trad_sec) %>% mutate(wgtQ1 = weighted.mean(Q1, w = enrolled))简化步骤