是否存在创建置信区间的现有功能
从svyby
对象获取比例(在我的情况下为survey
包中二进制项目的交叉表)。我经常比较各个组之间的比例,拥有一个可以提取置信区间的函数(使用调查函数svyciprop
而不是confint
会非常方便)。下面的示例显示了我想要实现的目标。
载入资料
library(survey)
library(weights)
data(api)
apiclus1$both<-dummify(apiclus1$both)[,1]#Create dummy variable
dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc)
创建一个svyby对象,该对象比较整个stype中变量“both”和“both”的比例
b<-svyby(~both, ~stype, dclus1, svymean)
confint(b)#This works, but svyciprop is best in other cases, especially when proportion is close to 0 or 1
svyciprop(b)#This requires that you specify each level and a design object
是否有可能创建一个函数(例如
byCI(b,method="likelihood")
与confint(b)
相同但使用svyciprop
吗?从根本上讲,它必须遍历svyby
对象的每个级别并创建一个置信区间。到目前为止,我的尝试尚未成功。可能还有另一种解决方法,但是我喜欢使用
svyby()
,因为它快速而直观。 最佳答案
svyby()
有一个vartype=
参数,用于指定您希望如何指定采样不确定性。使用vartype="ci"
获取置信区间,例如
svyby(~I(ell>0),~stype,design=dclus1, svyciprop,vartype="ci",method="beta")
可以很容易地检查出它与手工完成每个级别的效果是否相同,例如,
confint(svyciprop(~I(ell>0), design=subset(dclus1,stype=="E"),method="beta"))
关于r - svyby比例的置信区间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14112508/