使用 R 中的调查包应用调查权重

问题描述 投票:0回答:1

我需要一些关于使用调查包在 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)
r frequency survey weighted
1个回答
0
投票

您可以使用调查包中的

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
公式用于指示我们想要对所有观测值求和。

© www.soinside.com 2019 - 2024. All rights reserved.