计算加权调查的置信区间

时间:2021-06-16 15:07:19

标签: r survey

您好:我正在使用 srvyr 包对加权调查进行一些分析。这是我用来生成一些表的一些代码的示例。但是,我如何从这里获得比例的置信区间? 我发现 this 问题非常有用,但我的数学很差,我不知道如何处理公式。

#Sample data
var1<-sample(c("red", "green", "blue"), size=1000, replace=T)
var2<-sample(c("male", "female"), size=1000, replace=T)
weight<-rnorm(1000, mean=55, sd=10)
df<-data.frame(var1, var2, weight)

library(srvyr)
#Make the survey design object
df %>% 
  as_survey_design(., weights=weight) ->df2

#Get weighted table
df2 %>% 
  group_by(var1,var2) %>% 
  summarize(n=survey_total())
#Get confiidence interval for weighted table

df2 %>% 
  group_by(var1,var2) %>% 
  summarize(n=survey_total(vartype="ci"))
#Convert to percentages, 
df2 %>% 
  group_by(var1,var2) %>% 
  summarize(n=survey_total(vartype="ci")) %>% 
  mutate(pct=(n/sum(n)*100))

我可以将标准误差或 ci 除以每组中的案例总数吗?或者我将它除以数据集中的行数?

1 个答案:

答案 0 :(得分:1)

尝试使用 library(survey)。计算比例的不同选项

var1<-sample(c("red", "green", "blue"), size=1000, replace=T)
var2<-sample(c("male", "female"), size=1000, replace=T)
weight<-rnorm(1000, mean=55, sd=10)
df<-data.frame(var1, var2, weight, val = 1)

library(survey)

dsurvey <- svydesign(ids = ~1, data = df, weights = ~weight)
svyby(~var1, by = ~var2, design = dsurvey, FUN = svymean)
#>          var2  var1blue var1green   var1red se.var1blue se.var1green se.var1red
#> female female 0.3303883 0.3603284 0.3092834  0.02124213   0.02176348 0.02087018
#> male     male 0.3110492 0.3552361 0.3337147  0.02109212   0.02192876 0.02161942
svyby(~var2, by = ~var1, design = dsurvey, FUN = svymean)
#>        var1 var2female  var2male se.var2female se.var2male
#> blue   blue  0.5207042 0.4792958    0.02821670  0.02821670
#> green green  0.5091939 0.4908061    0.02699336  0.02699336
#> red     red  0.4866327 0.5133673    0.02837296  0.02837296
svymean(~var1, design = dsurvey)
#>              mean     SE
#> var1blue  0.32083 0.0150
#> var1green 0.35781 0.0154
#> var1red   0.32136 0.0150
svymean(~var2, design = dsurvey)
#>               mean     SE
#> var2female 0.50564 0.0161
#> var2male   0.49436 0.0161
svymean(~interaction(var1, var2), design = dsurvey)
#>                                        mean     SE
#> interaction(var1, var2)blue.female  0.16706 0.0120
#> interaction(var1, var2)green.female 0.18220 0.0125
#> interaction(var1, var2)red.female   0.15638 0.0117
#> interaction(var1, var2)blue.male    0.15377 0.0115
#> interaction(var1, var2)green.male   0.17562 0.0123
#> interaction(var1, var2)red.male     0.16498 0.0120

reprex package (v2.0.0) 于 2021 年 6 月 16 日创建