关于R语言survey包svyciprop函数示例点估计的解读问询
关于survey包svyciprop函数的三个疑问解答
疑问1:svyciprop要求单个二元变量,但示例中的emer并非二元变量,为何能正常运行?
svyciprop确实要求输入二元变量,但示例里传给函数的不是原始的emer变量,而是通过I(emer==0)转换后的二元逻辑变量。原始emer是数值型(代表学校中持有应急资质的教师占比),经过emer==0的条件判断后,会生成一个由TRUE/FALSE组成的向量(对应1/0),本质就是二元变量,完全符合svyciprop的参数要求,所以能正常运行。
疑问2:公式~I(emer==0)的具体含义是什么?为什么必须用I()函数?
- 含义:这个公式的作用是对每个样本计算
emer是否等于0,生成一个二元向量——当某所学校的emer值为0时,结果为TRUE(对应1),否则为FALSE(对应0)。 - 为什么用
I():在R的公式语法中,==这类运算符会被当作公式的特殊语法解析(类似~a+b里的+),而不是执行逻辑判断。I()函数的作用是屏蔽公式的特殊解析规则,让R把括号内的内容当作普通的R表达式来计算,这样才能得到我们需要的二元判断结果。如果去掉I(),写成~emer==0,会触发公式解析错误,无法得到预期的二元变量。
疑问3:输出结果中的0.1913对应的是哪类统计对象的比例?
从I(emer==0)的逻辑可以直接得出:这个0.1913(即19.13%)是总体中没有教师持有应急资质的学校所占的加权比例。因为emer代表学校里持有应急资质的教师占比,emer==0就意味着该学校完全没有持有应急资质的教师,svyciprop计算的是这类学校在复杂调查设计下的总体估计比例。
附示例相关代码与输出
示例代码
require(survey) data(api) dclus1<-svydesign(id=~dnum, fpc=~fpc, data=apiclus1) rclus1<-as.svrepdesign(dclus1) svyciprop(~I(emer==0), rclus1, method="li") svyciprop(~I(emer==0), rclus1, method="lo") svyciprop(~I(emer==0), rclus1, method="as") svyciprop(~I(emer==0), rclus1, method="be") svyciprop(~I(emer==0), rclus1, method="me")
emer变量统计结果
> summary(apiclus1$emer) Min. 1st Qu. Median Mean 3rd Qu. Max. 0.00 3.00 8.00 10.74 16.00 49.00
method="be"的输出结果
> svyciprop(~I(emer==0), rclus1, method="be") 2.5% 97.5% I(emer == 0) 0.1913 0.0785 0.36
内容的提问来源于stack exchange,提问作者David Crow
相关产品推荐
相关产品推荐

