
线性回归和方差分析
|
333
11.11 多项式回归
11.11.1 问题
需要用
x
的多项式对
y
进行回归。
11.11.2 解决方案
在回归公式中调用函数 poly(x, n) 对
x
的一个
n
次多项式进行回归。此示例将
y
建模
为
x
的三次函数:
lm(y ~ poly(x, 3, raw = TRUE))
该示例的公式对应于以下三次回归方程:
y
i
=
β
0
+
β
1
x
i
+
β
2
x
2
i
+
β
3
x
3
i
+
ε
i
11.11.3 讨论
当人们首先在 R 中使用多项式模型时,他们经常做一些如下笨重的事情:
x_sq <- x ^ 2
x_cub <- x ^ 3
m <- lm(y ~ x + x_sq + x_cub)
显然,这非常令人烦恼,并且它使用额外的变量来填充他们的工作空间。下面的写法就
容易得多:
m <- lm(y ~ poly(x, 3, raw = TRUE))
设定 raw = TRUE 是必要的。没有它,函数 poly 计算正交多项式而不是简单多项式。
除了方便之外,以上写法的一个巨大优势是当你从模型中做出预测时,R 将计算
x
的所
有乘方项(参见 11.19 节)。否则,你每次使用模型时,都要自己计算
x
2
和
x
3
。
使用 poly 的另一个好理由是,你不能用以下方式编写回归公式:
lm(y ~ x + x^2 + x^3) # Does not do what you think!
R 将 x^2 和 x^3 解释为交互项,而不是 x 的乘方。得到的模型是一个单项线性回归,完
全不符合你的期望。你可以如下编写回归公式: ...