我有一份调查数据,其中包含分类变量。我想计算 Q1 中每个响应的比例,并生成估计值的置信区间或不确定性。这可行吗?数据集已经生成了样本权重。我正在使用 R 调查包,但似乎无法理解它。下表示例 谢谢你
身份证 | 体重 | Q1 | Q2 |
---|---|---|---|
11 | 1.3 | 1 | 4 |
13 | 1.5 | 3 | 3 |
16 | 1.3 | 4 | 2 |
18 | 1.3 | 2 | 3 |
19 | 1.6 | 1 | 1 |
调查设计<- svydesign(ids = ~1, data = xxx, weights = ~Personweight)
比例<- svyciprop(~Q1, survey_design)
#error 似乎表明该函数不适用于非二进制变量。
如果您对普通的 +/- 1.96 标准误差置信区间感到满意,则可以仅使用
svymean
和 confint
。
使用内置示例之一:
> svymean(~stype, dclus2)
mean SE
stypeE 0.68118 0.0556
stypeH 0.13432 0.0567
stypeM 0.18450 0.0222
> confint(svymean(~stype, dclus2))
2.5 % 97.5 %
stypeE 0.57212715 0.7902345
stypeH 0.02312234 0.2455123
stypeM 0.14094122 0.2280625
如果您想要其他方法之一,则需要进行一些数据整理。您可以在二进制指标上使用
svyciprop
> svyciprop(~I(stype=="E"),dclus2,method="xlogit")
2.5% 97.5%
I(stype == "E") 0.681 0.560 0.782
或者您可以使用
svycontrast
进行变换,使用 confint
,然后再变换回来,这就是 svyciprop
中实际发生的情况
> m<-svymean(~stype, dclus2)
> l<-svycontrast(m, quote(log(stypeE/(1-stypeE))))
> c<-confint(l,df=degf(dclus2))
> exp(c)/(1+exp(c))
2.5 % 97.5 %
contrast 0.5599558 0.782011
现在唯一的问题是如何编写为所有级别执行此操作的循环。也许类似
> f<-function(level) eval(bquote(
svyciprop(~I(stype==.(level)),dclus2,method="xlogit")
))
> lapply(c("E","M","H"),f)
[[1]]
2.5% 97.5%
I(stype == "E") 0.681 0.560 0.782
[[2]]
2.5% 97.5%
I(stype == "M") 0.185 0.144 0.234
[[3]]
2.5% 97.5%
I(stype == "H") 0.1343 0.0547 0.2939