我需要一些关于使用调查包在 RStudio 中使用调查权重的指导。
table_1015 包含 2010 年至 2015 年的调查数据,其中每一行是参与者的一个回答,包括年龄、种族、性别和教育水平/年级等信息(均为分类变量)。它还包括对调查中标记为 q1、q2、q3 等的问题的答复。其中 1 = 是,0 = 否,“缺失”= 不适用/无答复。
我使用下面的代码按年份和年龄计算未加权的频率和比例。
age_1015 <- table_1015 %>%
group_by(year, age) %>%
summarise(count = n()) %>%
mutate(proportion = count / sum(count))
age_1015 的部分输出示例:
年 | 年龄 | 数 | 比例 |
---|---|---|---|
2010 | 12岁 | 5 | 0.185 |
2010 | 13岁 | 8 | 0.296 |
2010 | 14岁 | 14 | 0.519 |
2011 | 12岁 | 3 | 0.115 |
2011 | 13岁 | 7 | 0.269 |
2011 | 14岁 | 16 | 0.615 |
2012 | 12岁 | 2 | 0.118 |
2012 | 13岁 | 4 | 0.235 |
2012 | 14岁 | 11 | 0.647 |
我将如何将以下调查设计对象应用于上述对象?我想计算加权频率(weighted_count)和加权比例(weighted_prop)。
srvy_des_1015 <- <- svydesign(ids = ~PSU, data = table_1015, weights = ~weight, strata = ~stratum, nest = TRUE)
您可以使用调查包中的
svytotal
和 svyby
函数来获取加权计数和比例。它将应用您包含在调查设计对象中的调查权重进行计算。
# survey design object
srvy_des_1015 <- svydesign(ids = ~PSU, data = table_1015, weights = ~weight, strata = ~stratum, nest = TRUE)
total_weighted <- svytotal(~1, design = srvy_des_1015)
age_1015_weighted <- svyby(~1, ~year+age, design = srvy_des_1015, FUN = svytotal)
age_1015_weighted <- as.data.frame(age_1015_weighted)
# Calculate proportion
age_1015_weighted$proportion <- age_1015_weighted$V1 / as.numeric(total_weighted)
names(age_1015_weighted) <- c("year", "age", "weighted_count", "weighted_proportion")
print(age_1015_weighted)
svyby
函数是基础R中tapply
函数的包装。 ~1
和svytotal
函数中的svyby
公式用于指示我们想要对所有观测值求和。