首页 > 解决方案 > 不能在循环中使用 poly(x)?“度”必须小于唯一点数

问题描述

library(ISLR)

根据任何特征选择模型:

amodel <- lm(crim ~ poly(dat$zn, 3), data = Boston)

工作,返回一个模型。当我尝试对循环中的每个变量执行此操作时,我得到:

dat <- dplyr::select(Boston, -crim)
sapply(dat, function(x) {
  mod <- lm(crim ~ poly(x, 3), data = Boston)
  summary(mod)
})

poly(x, 3) 中的错误:“度”必须小于唯一点数

我怎样才能让它在循环中运行?我想为poly(feature, 3)波士顿的每个人创建一个模型(减去crim 功能)。

标签: rregressionlinear-regression

解决方案


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

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

n(您想要的多项式的次数)为 3 时,结合用于生成线性模型的代码lm(),结果项呈指数增长。


推荐阅读