R中的Svyglm包裹调查未返回标准错误

时间:2017-03-09 15:16:56

标签: r survey standard-error

我真的很感激这方面的一些帮助。我想估算一个glm的系数和95%CI,它适用于2级家庭调查(由dd和hh.num1定义)。我最近才遇到包调查

我一直在关注插图中的示例:1)设置数据集以考虑采样方法 - 使用 svydesign 2)使用命令 svyglm <设置glm / em>的。对于示例数据集:

library(survey)data(api)head(apiclus1)dclus1 <- svydesign(id = ~dnum, weights = ~pw, data = apiclus1)logitmodel <-svyglm(I(sch.wide=="Yes")~awards+comp.imp+enroll+target+hsg+pct.resp+mobility+ell+meals, design=dclus1, family=quasibinomial())summary(logitmodel)

添加大量变量似乎没问题,所以我确信该软件包正在使用一个好的数据集。

当我对我的数据集执行相同操作时,std错误将返回&#34; Inf&#34;如果加入3或4个变量,我就无法弄清楚原因。看起来它似乎更常见于各种因素。很抱歉,我还没有能够使用其他示例复制错误,但数据集可能是downloaded here

所以使用这个数据集:

load("balo2_7March17.Rdat")  
dclus1 <- svydesign(id=~dd+hh.num1, weights=~chweight, data = balo2)  
glm1 <- svyglm(out.penta ~ factor(MN18c) + windex5 + age.y, 
          design=dclus1, family=quasibinomial())  
summary(glm1)  

如果MN18c是数字,则产生std错误,如果它是一个因素(并且应该是),则stnd错误是Inf。如果不知道还能做什么,我将需要在STATA中尝试分析。我看到一些评论,如果应用于“坏”,可能会出现错误。数据集,但是什么包含&#34;坏&#34;?

1 个答案:

答案 0 :(得分:0)

问题是您的模型中的剩余自由度为零。剩余df是设计df(PSU数量减去层数)减去预测变量的数量,当每个层有两个大群集时,很容易将其变为负数。残余df的这个定义可能是保守的,但这不是一个简单的问题。

>  degf(dclus1)
[1] 5
> glm1$df.resid
[1] 0

您可以使用以下方式提取标准错误

> SE(glm1)
   (Intercept) factor(MN18c)2 factor(MN18c)3 factor(MN18c)4        windex5 
     0.5461374      0.4655331      0.2805168      0.3718879      0.1376936 
         age.y 
     0.1638210 

,如果您愿意使用其他的剩余自由度,则可以将其指定为summary并获得$ p $值。特别是,如果您的协变量都不在聚类级别,则存在一个合理的论据,即回归不消耗自由度,因此一次可以使用一个参数

> summary(glm1, df=degf(dclus1))

Call:
svyglm(formula = out.penta ~ factor(MN18c) + windex5 + age.y, 
    design = dclus1, family = quasibinomial())

Survey design:
svydesign(id = ~dd + hh.num1, weights = ~chweight, data = balo2)

Coefficients:
               Estimate Std. Error t value Pr(>|t|)   
(Intercept)     -3.0848     0.5461  -5.648  0.00241 **
factor(MN18c)2  -0.1183     0.4655  -0.254  0.80957   
factor(MN18c)3  -0.4908     0.2805  -1.750  0.14059   
factor(MN18c)4  -0.6137     0.3719  -1.650  0.15981   
windex5          0.2556     0.1377   1.856  0.12256   
age.y            0.9934     0.1638   6.064  0.00176 **

组合参数(例如测试组成MN18c的三个系数)比较麻烦,我认为您至少需要df=degf(clus1)-3+1

在即将发布的4.1版中,该软件包将报告这种情况下的标准错误(但除非指定了不同的df=,否则$ p $ -values不会报告)