有没有办法使用 R 调查包来估计具有置信区间的多项式比例?

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

我有一份调查数据,其中包含分类变量。我想计算 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 似乎表明该函数不适用于非二进制变量。

r statistics multinomial proportions
1个回答
1
投票

如果您对普通的 +/- 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
© www.soinside.com 2019 - 2024. All rights reserved.