如何在R中使用"."拟合所有预测变量的多项式模型?

4

我正在尝试使用所有的预测变量拟合一个多项式逻辑回归模型。我已经尝试过,但是没有成功:

poly_model = glm(type~ poly(., 2), data=train_data, family=binomial)

我正在使用内置数据集:

train_data = MASS::Pima.tr

如何正确地完成这个任务?


你能否写出你要拟合的实际模型?如果你包含一个简单的可重现示例,其中包含样本输入和期望输出,可以用来测试和验证可能的解决方案,那么我们更容易帮助你。 可重现示例 - MrFlick
我添加了我正在使用的数据集,该数据集是R内置的。它有7个预测变量,我使用“类型”作为响应变量。 - user15300490
1
我认为使用 . 无法完成此操作。你可能需要构建所需的公式,例如 fm <- reformulate(paste0("poly(", setdiff(names(train_data), "type"), ", 2)"), "type"); glm(fm, data=train_data, family=binomial) - Ritchie Sacramento
1个回答

3

使用 . 语法没有实现的方式。您需要明确构建公式。您可以使用辅助函数来完成此操作。

get_formula <- function(resp) {
  reformulate(
    sapply(setdiff(names(train_data), resp), function(x) paste0("poly(", x, ", 2)")),
    response = resp
  )
}


model <- get_formula("type")
model
# type ~ poly(npreg, 2) + poly(glu, 2) + poly(bp, 2) + poly(skin, 
#     2) + poly(bmi, 2) + poly(ped, 2) + poly(age, 2)
glm(model, data=train_data, family=binomial)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接