测试 r 调查包中两种方法之间的差异

Testing difference between two means in r survey package

我在尝试使用 t 检验检验调查中两种方法之间的差异时遇到问题。基本上我有不同年份的重复健康调查,我想测试它们之间的均值差异是否有意义。使用 package survey 我能够得到方法,以及这个代码的标准错误

svyby(~CADL2,by=~ageco+year,design = wcd,FUN= svymean,na.rm=TRUE)

           ageco year CADL2None CADL2Limited se.CADL2None se.CADL2Limited
50-54.2007 50-54 2007 0.8717507   0.12824934   0.02652932      0.02652932
55-59.2007 55-59 2007 0.8919843   0.10801569   0.01662038      0.01662038
60-64.2007 60-64 2007 0.9056865   0.09431355   0.01556955      0.01556955
65-69.2007 65-69 2007 0.8525438   0.14745624   0.02376984      0.02376984
70-74.2007 70-74 2007 0.7534787   0.24652131   0.03419399      0.03419399
75-79.2007 75-79 2007 0.7466576   0.25334237   0.04010796      0.04010796
80-85.2007 80-85 2007 0.5690972   0.43090276   0.06083682      0.06083682
85+.2007     85+ 2007 0.3853919   0.61460811   0.08913058      0.08913058
50-54.2017 50-54 2017 0.7150962   0.28490379   0.13929132      0.13929132
55-59.2017 55-59 2017 0.8720697   0.12793025   0.04088908      0.04088908
60-64.2017 60-64 2017 0.8503688   0.14963123   0.01783197      0.01783197
65-69.2017 65-69 2017 0.7931459   0.20685411   0.01829031      0.01829031
70-74.2017 70-74 2017 0.7764609   0.22353912   0.01895070      0.01895070
75-79.2017 75-79 2017 0.6666032   0.33339681   0.02428625      0.02428625
80-85.2017 80-85 2017 0.5462507   0.45374929   0.03324155      0.03324155
85+.2017     85+ 2017 0.3223467   0.67765331   0.03956227      0.03956227

现在我想测试 2007 年 50-54 岁年龄组的平均值 (0.8717) 是否与 2017 年 (0.7151) 有显着差异。我尝试了 svyttest,但由于我对这个包还很陌生,所以无法使用它。

svyby(~CADL2,by=~ageco+year,design = wcd,FUN= svyttest,na.rm=TRUE)

Error in formula[[3]] : subscript out of bounds

我尝试在公式中交换变量,但每次都会出现此错误。你知道我如何让它工作或以任何其他方式实现两种方式之间的测试吗?

你想要svyby( CADL2 ~ year , ~ ageco , wcd , svyttest , keep.var = F )吗?

示例数据来自 ?svyttest

library(survey)
data(api)
dclus2<-svydesign(id=~dnum+snum, fpc=~fpc1+fpc2, data=apiclus2)
svyttest(enroll~comp.imp, dclus2)

# single subset
svyttest(enroll~comp.imp, subset(dclus2,stype=='E'))

# with svyby
svyby(enroll~comp.imp,~stype,dclus2,svyttest,keep.var=F)