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

为何R中两种二次多项式回归模型的系数结果不同?

两种多项式回归实现差异的原因分析

这两种写法的核心差异在于poly()函数的默认行为——它生成的是正交多项式,而非你预期的原始幂次项,具体拆解如下:

1. 本质区别

  • I(speed^2):直接计算speed的原始二次项,和一次项speed高度相关,模型系数是基于原始变量的回归结果,解释起来更直观(对应变量的边际效应)。
  • poly(speed, degree = 2):默认生成正交化的一次、二次项,这些项经过处理后互相独立(协方差为0),目的是避免高阶多项式的多重共线性问题,但系数含义和原始幂次项完全不同,所以看起来结果差异很大。

2. 验证预测能力一致

虽然系数不同,但两个模型的拟合能力、预测结果完全一致,你可以用代码验证:

data(cars)

# 原始幂次项模型
model1 <- lm(dist ~ speed + I(speed^2), data = cars)
# 默认正交多项式模型
model2 <- lm(dist ~ poly(speed, degree = 2), data = cars)

# 对比预测值
pred1 <- predict(model1, cars)
pred2 <- predict(model2, cars)
all.equal(pred1, pred2) # 输出TRUE,说明预测结果完全相同

3. 让poly()生成原始幂次项

如果想让poly()和I(speed^2)得到完全一致的系数,只需添加raw = TRUE参数,强制生成原始幂次项:

model3 <- lm(dist ~ poly(speed, degree = 2, raw = TRUE), data = cars)
summary(model3) # 此时系数和model1完全一致

4. 两种方式的适用场景

  • 正交多项式(poly默认):适合高阶多项式(比如3阶及以上),能有效缓解多重共线性,让各阶项的显著性检验更可靠。
  • 原始幂次项:系数解释更直观,但高阶时容易出现多重共线性,导致系数估计不稳定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 04:14:58