不能在循环中使用poly(x)? '度'必须少于唯一点数

时间:2018-06-14 06:17:09

标签: r regression linear-regression

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功能)。

1 个答案:

答案 0 :(得分:0)

数字溢出是我的猜测。如果您深入研究poly的代码,您将看到它生成单个多项式项作为中间步骤:

X <- outer(x, seq_len(n) - 1, "^")

n(你想要的多项式的次数)为3时,与用于生成线性模型lm()的代码相结合,得到的项达到指数式。