r-svyglm-如何为所有变量的逻辑回归模型编码



在R中,使用GLM包含所有变量,只需使用。如图所示,如何从数据帧中简洁地写出一个包含多个变量的公式?

例如:

y <- c(1,4,6)
d <- data.frame(y = y, x1 = c(4,-1,3), x2 = c(3,9,8), x3 = c(4,-4,-2))
mod <- lm(y ~ ., data = d)

然而,我很难和svydesign一起做到这一点。我有很多探索性变量以及ID和权重变量,所以首先我创建了我的调查设计:

des <-svydesign(ids=~id, weights=~wt, data = df)

然后我尝试使用权重创建二项式模型:

binom <- svyglm(y~.,design = des, family="binomial")

但我得到了错误:

Error in svyglm.survey.design(y ~ ., design = des, family = "binomial") : 
all variables must be in design = argument

我做错了什么?

您通常不想这样做,因为"所有变量";将包括设计元数据,如权重、集群指标、层次指标等

您可以使用col.names从设计对象中提取所有变量名称,然后使用reformulate,可能是在对名称进行子集设置之后,例如包中的api示例

> all_the_names <- colnames(dclus1)
> all_the_actual_variables <- all_the_names[c(2, 11:37)]
> reformulate(all_the_actual_variables,"y")
y ~ stype + pcttest + api00 + api99 + target + growth + sch.wide + 
comp.imp + both + awards + meals + ell + yr.rnd + mobility + 
acs.k3 + acs.46 + acs.core + pct.resp + not.hsg + hsg + some.col + 
col.grad + grad.sch + avg.ed + full + emer + enroll + api.stu

最新更新