在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