You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何简便实现R语言10阶多项式回归?

生成10阶多项式回归的简便方法

不用手动写每一项,有几种更高效的方式:

方法1:用R内置的poly()函数(最推荐)

这是最简洁的写法,只需指定自变量和阶数,注意加上raw = TRUE来生成和手动写法一致的原始多项式项(默认是正交多项式,系数含义与手动展开的项不同):

reg_poly10 = lm_robust(testscr ~ poly(avginc, 10, raw = TRUE), data = school)

如果只是做多项式拟合、不纠结系数对应avginc^k的直接效应,也可以去掉raw = TRUE,正交多项式在数值计算上更稳定。

方法2:构造公式字符串(和手动写法完全一致)

如果想生成和课程里3阶写法完全相同的公式,可以用字符串拼接自动生成所有项:

# 生成1到10阶的多项式项字符串
poly_terms <- paste0("I(avginc^", 1:10, ")", collapse = " + ")
# 拼接成完整公式字符串
full_formula <- paste("testscr ~", poly_terms)
# 转换为公式对象并拟合
reg_poly10 <- lm_robust(as.formula(full_formula), data = school)

生成的公式和手动写testscr ~ I(avginc^1) + I(avginc^2) + ... + I(avginc^10)完全一致。

方法3:用循环构造公式(适合理解过程)

如果一定要用for循环,也可以逐步拼接公式项:

# 初始化公式项
terms <- "I(avginc^1)"
# 循环添加2到10阶的项
for(k in 2:10) {
  terms <- paste(terms, paste0("I(avginc^", k, ")"), sep = " + ")
}
# 构造完整公式并拟合
reg_poly10 <- lm_robust(as.formula(paste("testscr ~", terms)), data = school)

不过这种写法不如前两种简洁,一般推荐方法1或2。

内容的提问来源于stack exchange,提问作者BlankerHans

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 13:35:14