r - 不能在循环中使用 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 功能)。
解决方案
数字溢出将是我的猜测。如果您深入研究 的代码poly
,您会发现它会生成单个多项式项作为中间步骤:
X <- outer(x, seq_len(n) - 1, "^")
当n
(您想要的多项式的次数)为 3 时,结合用于生成线性模型的代码lm()
,结果项呈指数增长。
推荐阅读
- vb.net - 格式化时间跨度,小时数超过 24,而不是使用天数部分
- elasticsearch - 如果实体索引是基于时间的,如何使用 ElasticsearchEntityMapper?
- python - python - 如何在python列表中找到在n个组合中总和为给定数字的数字组合?
- c++ - 计算中间值的最通用方法
- html - 如何在 Materialise CSS 中创建可选列表
- laravel - 带有 LARAVEL Lighthouse PHP 的 GraphQL - 如何隐藏属性?
- c# - 为什么 c# 和 python 中的浮点数不能正确计算
- jmeter - Jmeter:想要在频繁的时间间隔中捕获随机令牌
- java - spring boot main方法中的NullPointerException
- spring - Spring Data 多个 jpa-named-queries.properties 文件