library(ISLR)
根据任何功能选择模型:
amodel <- lm(crim ~ poly(dat$zn, 3), data = Boston)
Works,返回一个模型。当我尝试对循环中的每个变量执行此操作时,我得到:
dat <- dplyr::select(Boston, -crim)
sapply(dat, function(x) {
mod <- lm(crim ~ poly(x, 3), data = Boston)
summary(mod)
})
poly(x,3)中的错误:&#39; degree&#39;必须小于唯一的数量 点
如何让它在循环中运行?我想为波士顿的每个poly(feature, 3)
创建一个模型(减去crim功能)。
答案 0 :(得分:0)
数字溢出是我的猜测。如果您深入研究poly
的代码,您将看到它生成单个多项式项作为中间步骤:
X <- outer(x, seq_len(n) - 1, "^")
当n
(你想要的多项式的次数)为3时,与用于生成线性模型lm()
的代码相结合,得到的项达到指数式。