我真的很感激这方面的一些帮助。我想估算一个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;?
答案 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不会报告)