在 R 中数据框中的列子集上拟合模型
Fit model on a subset of columns in dataframe in R
我正在尝试对协变量的子集使用 lm() 和 matchit()。我生成了任意数量的前缀为 "covar" 的列,即 "covar.1"、"covar.2" 等。我想做类似
的事情
lm(组~协变量,数据=df)
其中 covars 是字符串向量 c("covar.1", "covar.2", ...).
我尝试了几种方法,例如
cols <- colnames(df)
covars <- cols[grep("covar", colnames(df))]
m.out <- matchit(group ~ covars, data=df, method="nearest", distance="logit", caliper=.20)
但得到了variable lengths differ (found for 'covars')
.
仅使用 covars 和 group 定义一个新数据框可以工作,但这违背了我使用 matchit
的目的,因为我希望匹配的数据也有其他列,而不仅仅是我选择要匹配的 covars .
这似乎是一项简单的任务,但不知何故,我在谷歌搜索后无法弄清楚。不确定 R 公式期望那里作为列的子集。感谢任何帮助。
您可能想要使用 as.formula
。
尝试这样做:
替换group ~ covars
和as.formula(paste('group','~', paste(covars, collapse="+"))))
我在你的另一个问题中提到了这一点,但是 cobalt
包有一个专门用于此的功能,即 f.build()
。 f.build()
的第一个参数是包含处理变量名称(或公式左侧)的字符串,第二个参数是包含右侧变量名称的字符串向量公式的(即协变量)。第二个参数也可以是包含协变量的 data.frame; f.build()
只是提取名称。然后它执行所选答案中描述的操作,位添加了一些其他方面,使其更通用并且对错误更健壮。
cobalt
文档在 f.build()
上有一个 section 并将它与 glm()
和 matchit()
一起使用作为示例。
在 运行 matchit()
之后,您可以使用 cobalt
中的 bal.tab()
函数评估协变量的平衡,该函数与 MatchIt
兼容:
bal.tab(m.out, un = TRUE)
cobalt
的 documentation 详细解释了它与 MatchIt
的用法。
我正在尝试对协变量的子集使用 lm() 和 matchit()。我生成了任意数量的前缀为 "covar" 的列,即 "covar.1"、"covar.2" 等。我想做类似
的事情lm(组~协变量,数据=df)
其中 covars 是字符串向量 c("covar.1", "covar.2", ...).
我尝试了几种方法,例如
cols <- colnames(df)
covars <- cols[grep("covar", colnames(df))]
m.out <- matchit(group ~ covars, data=df, method="nearest", distance="logit", caliper=.20)
但得到了variable lengths differ (found for 'covars')
.
仅使用 covars 和 group 定义一个新数据框可以工作,但这违背了我使用 matchit
的目的,因为我希望匹配的数据也有其他列,而不仅仅是我选择要匹配的 covars .
这似乎是一项简单的任务,但不知何故,我在谷歌搜索后无法弄清楚。不确定 R 公式期望那里作为列的子集。感谢任何帮助。
您可能想要使用 as.formula
。
尝试这样做:
替换group ~ covars
和as.formula(paste('group','~', paste(covars, collapse="+"))))
我在你的另一个问题中提到了这一点,但是 cobalt
包有一个专门用于此的功能,即 f.build()
。 f.build()
的第一个参数是包含处理变量名称(或公式左侧)的字符串,第二个参数是包含右侧变量名称的字符串向量公式的(即协变量)。第二个参数也可以是包含协变量的 data.frame; f.build()
只是提取名称。然后它执行所选答案中描述的操作,位添加了一些其他方面,使其更通用并且对错误更健壮。
cobalt
文档在 f.build()
上有一个 section 并将它与 glm()
和 matchit()
一起使用作为示例。
在 运行 matchit()
之后,您可以使用 cobalt
中的 bal.tab()
函数评估协变量的平衡,该函数与 MatchIt
兼容:
bal.tab(m.out, un = TRUE)
cobalt
的 documentation 详细解释了它与 MatchIt
的用法。