我有一个包含70个变量的数据集,我想在它上面尝试多项式回归。如果列数只有三/四列,我可以手动编写以下代码--
model <- lm(y ~ poly(var1,3) + poly(var2,3) + poly(var4,4)
如果我们有70个变量,该怎么办呢?我们需要手动输入所有变量的名称吗?还是有更简单的方法?
我有一个包含70个变量的数据集,我想在它上面尝试多项式回归。如果列数只有三/四列,我可以手动编写以下代码--
model <- lm(y ~ poly(var1,3) + poly(var2,3) + poly(var4,4)
form <- as.formula(paste("y~", paste0("poly(var", 1:10, ")", collapse="+")))
form <- as.formula(paste("y~", paste0("poly(var", 1:10, ", degree=3)", collapse="+")))
另外,如果您的数据集 df
中仅包含因变量 y
和感兴趣的协变量(它们具有非系统性的名称),您可以尝试使用以下方法:
ind.y <- grep("y", colnames(df))
form <- as.formula(paste("y~", paste0("poly(", colnames(df[, -ind.y]), ", degree=3)", collapse="+")))
mgcv
包中的 gam
函数。此外,您可能还需要进行变量选择,但正如之前提到的那样,这是一个在交叉验证环节讨论的问题。 - adibender