Wrong Denominator in Proportion of multiple factors using svy来自 svyciprop

Wrong Denominator in Proportion of multiple factors using svyby svyciprop

我想从复杂样本调查中提取的意外事件中获得比例和置信区间 table。我正在使用 svy svyciprop(包 survey)。

问题:我的代码没有在分母中添加我期望的数字,所以我得到了 'wrong' 比例。我在下面展示我的具体例子。关于如何解决这个问题的任何想法?

我想计算的比例

在下面的例子中,我想估计 'Proportion of Men with actv_30==1 in each category of P040 in relation to ALL men.'

让我们创建一个意外事件table并计算比例'outside' R.

ftable(svytable(~actv_30+v0302+P040, design = sample.pns13.18y)) #PNS 2013
enter code here
                         P040    Maybe       No      Yes
actv_30          v0302                                
0                  Men         3465091 32738241  5663912
                   Women       3793623 20721490  5961574
1                  Men         2826317        0  6761130
                   Women       2594562        0  5525180

在此示例中,计算如下:1.Men.Maybe / ALL men

1.Men.Yes == 13.14% == 6761130 / (6761130 + 2826317 + 3465091 + 32738241 + 5663912)

1.Men.Maybe == 5.49% == 2826317 / (6761130 + 2826317 + 3465091 + 32738241 + 5663912)

我得到的'wrong'比例

这是我的 R 代码和输出。问题是我的代码正在计算 P040 的每个类别中的比例。所以它正在计算: 1.Men.Maybe / 1.Men.Maybe + 0.Men.Maybe ,其中分母是 P040.

每个类别的总和

事实上,我想要:1.Men.Maybe / ALL men,其中分母是 v0302 每个类别的总和。

svyby(~factor( actv_commutetime30==1 ) ,
                   ~v0302+P040,
                   design = sample.pns13.18y ,
                   vartype="ci",
                   level = 0.95,
                   svyciprop)

            v0302  P040     factor(actv_30 == 1)    ci_l     ci_u
Men.Maybe     Men Maybe                     0.45     0.41    0.48 

Women.Maybe Women Maybe                     0.41     0.38    0.44 

Men.No        Men    No                     0.00     0.00    0.00 

Women.No    Women    No                     0.00     0.00    0.00 

Men.Yes       Men   Yes                     0.54     0.52    0.57 

Women.Yes   Women   Yes                     0.48     0.46    0.51 

知道如何解决这个问题吗?

亲爱的,使用可重现的例子

library(survey)
data(api)
## one-stage cluster sample
dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc)

# you subset by all men, i subset by
y <- subset( dclus1 , yr.rnd == 'No' )

# you have actv_30 == 1 i have cnum == 1
# and your p040 is equivalent to stype
svymean(~factor(interaction( stype , cnum == 1 ) ),y)