4085 字
20 分钟
高级统计方法 第一轮学习 Chapter 7

高级统计方法 第一轮学习 Chapter 7 非线性模型#

多项式回归#

多项式回归#

多项式回归#

多项式回归(polynomial regression):以预测变量的幂作为新的预测变量以替代原始变量。例如,三次回归模型有三个预测变量 x,x2,x3x, x_2, x_3,是一种简单实用的表达数据非线性关系的模型。

模型为:

yi=β0+β1xi+β2xi2+β3xi3++βdxid+ϵiy_i = \beta_0 + \beta_1 x_i + \beta_2 x_i^2 + \beta_3 x_i^3 + \ldots + \beta_d x_i^d + \epsilon_i

对阶数 dd 的选择不宜过大,一般不大于 3344

f^(x0)\hat{f}(x_0) 的标准误差计算如下:

  • 最小二乘法能到每个系数 β^j\hat{\beta}_j 的方差估计,以及每一对系数估计之间的协方差。

  • 由此可以计算出 f^(x0)\hat{f}(x_0) 的方差:

    Var(f^(x0))=Var(j=0dβ^jx0j)=j=0dk=0dx0jx0kCov(β^j,β^k)\text{Var}(\hat{f}(x_0)) = \text{Var}\left(\sum_{j=0}^d \hat{\beta}_j x_0^j\right) = \sum_{j=0}^d \sum_{k=0}^d x_0^j x_0^k \text{Cov}(\hat{\beta}_j, \hat{\beta}_k)

    f^(x0)\hat{f}(x_0) 的逐点标准误差(函数在某个已知点的标准误)就是其方差的平方根。

R 中可采用 lm() 函数拟合多项式回归模型。poly() 函数避免了输入带有 ageage 幂项的繁琐公式,其返回的是一个矩阵,列表示的是正交多项式的基。

poly() 函数也可通过内加 raw=TRUE 参数,实现直接估计 ageage, age2age^2, age3age^3age4age^4

raw=TRUE 表示直接使用 ageage 的原始值;如果不设置此项,R 函数将对年龄数据进行变换(一般是正交变换即施密特正交化)后,再进行回归,所以二者得到的系数不同。

将多项式函数作为预测变量的逻辑斯谛回归就能用来分类。即拟合的为下列模型:

log(p(X)1p(X))=β0+β1X+β2X2++βdXd\log\left(\frac{p(X)}{1 - p(X)}\right) = \beta_0 + \beta_1 X + \beta_2 X^2 + \ldots + \beta_d X^d

阶梯函数#

阶梯函数#

阶梯函数#

阶梯函数(step function):将预测变量的取值空间划分为若干区域,以此来生成新的预测变量,并在每个区间内拟合一个常数值。

首先在 XX 的范围内选择 K1K - 1 个切点 c1,c2,,cK1c_1, c_2, \ldots, c_{K-1},将 XX 的取值空间划分为 KK 个区间:

C1=I(XX<c1)C2=I(Xc1X<c2)CK=I(XXcK1)\begin{aligned} C_1 & = I(X | X < c_1) \\ C_2 & = I(X | c_1 \leq X < c_2) \\ & \ldots \\ C_K & = I(X | X \geq c_{K-1}) \end{aligned}

其中 II 是示性函数,表示当括号内条件成立时取值为 11,否则取值为 00

XX 只能落在 KK 个区间中的某一个,于是对任意 XX 的取值:C1(X)+C2(X)++CK(X)=1C_1(X) + C_2(X) + \ldots + C_K(X) = 1

C1,C2,,CKC_1, C_2, \ldots, C_K 作为新的预测变量,拟合下列线性模型:

yi=β0+β1C1(Xi)+β2C2(Xi)++βKCK(Xi)+ϵiy_i = \beta_0 + \beta_1 C_1(X_i) + \beta_2 C_2(X_i) + \ldots + \beta_K C_K(X_i) + \epsilon_i
  • 对于 XX 的一个给定值,C1(X),C2(X),,CK(X)C_1(X), C_2(X), \ldots, C_K(X) 中至多只有一项是非零的。

  • X<CiX < C_i 时,式中每个 Cj(X)=0C_j(X) = 0y^=β0\hat{y} = \beta_0,所以 β0\beta_0yy 在区间 (,c1)(-\infty, c_1) 上的预测值。

ci1X<cic_{i-1} \leq X < c_i 时,y^=β0+βi\hat{y} = \beta_0 + \beta_i,所以 βi\beta_i 是区间 [ci1,ci)[c_{i-1}, c_i) 上的相应变量的平均增量。

  • 本质上,是基于 xx 取值设置的哑变量。

  • 回归结果相当于对 xx 分段赋值以固定值。

拟合阶梯函数前,需对数据先用cut() 函数处理,可自动对年龄变量进行分割点的选择,cut() 函数返回的实际上是一个有序变量,之后lm() 据此生成一系列回归中的哑变量。

基函数#

基函数#

基函数#

多项式和阶梯函数回归模型实际上是特殊的基函数方法。基本原理是使用变量X的函数或变换 b1(X),b2(X),,bK(X)b_1(X), b_2(X), \ldots, b_K(X) 作为新的预测变量,拟合线性模型:

yi=β0+j=1Kβjbj(Xi)+ϵiy_i = \beta_0 + \sum_{j=1}^K \beta_j b_j(X_i) + \epsilon_i
  • bj(X)b_j(X) 称为基函数(basis function)。

多项式回归:基函数为 bj(X)=Xjb_j(X) = X^j

阶梯函数回归:基函数为 bj(X)=I(XCj)b_j(X) = I(X \in C_j)

回归样条#

4.1 以分段多项式回归为例#

以分段多项式回归为例#

分段多项式将 XX 的取值范围切割成 KK 个区域,在每个区域分别独立拟合一个多项式函数。

回归样条的多项式一般有一些限制,从而保证在区域边界或称为结点的位置,这些多项式能够得到光滑的连接。

简单说,分段多项式在 XX 的不同区域拟合独立的低阶多项式函数,以此取代在 XX 全部取值范围内拟合高阶多项式。系数发生变化的临界点(区域边界)称为结点 (knot)。

无节点的分段多项式,就是标准的三次多项式。

只有一个节点的三次多项式,方程可以为

yi={β01+β11xi+β21xi2+β31xi3+ϵiif xi<cβ02+β12xi+β22xi2+β32xi3+ϵiif xicy_{i}=\left\{\begin{array}{ll}{\beta_{01}+\beta_{11}x_{i}+\beta_{21}x_{i}^{2}+\beta_{31}x_{i}^{3}+\epsilon_{i}}&{\mathrm{if~}x_{i}<c}\\ {\beta_{02}+\beta_{12}x_{i}+\beta_{22}x_{i}^{2}+\beta_{32}x_{i}^{3}+\epsilon_{i}}&{\mathrm{if~}x_{i}\geq c}\end{array}\right.

如果不加以限制,可能会出现节点处有不连续的现象。

故而需要加上必要的额外限制,使得任一侧的多项式在节点上应该是连续的。

4.2 约束条件与样条类型#

约束条件与样条类型#

约束级别对应样条类型
无约束普通分段多项式
C0C^0(值连续)连续分段多项式
C1C^1(值+一阶导连续)三次 Hermite、普通三次样条
C2C^2(值+一阶+二阶导连续)经典三次样条、B 样条、平滑样条、自然/夹紧/周期样条
C2C^2 + 额外形状约束单调、保凸、保形样条(PCHIP 等)
C2C^2 + 惩罚项平滑样条(Smoothing spline)
局部支撑 + C2C^2B 样条(统计中最常用基函数)

4.3 dd 阶样条的定义#

dd 阶样条的定义#

dd 阶样条的一般定义是:分段 dd 阶多项式,同时在每个节点的 00 阶导数(即:函数自身)到 d1d-1 阶导数都是连续的。

但是,直接保证分段的多项式的 00 阶导数(即:函数自身)到 d1d-1 阶导数都是连续的,是非常困难的。

我们改为使用基函数的方式表达样条:下式中 b1,b2,,bKb_1, b_2, \ldots, b_K 为基函数;通过选择合适的基函数,使得相加后的整个式子在节点处满足约束:在每个节点 00 阶导数(即:函数自身)到 d1d-1 阶导数都是连续的。

yi=β0+j=1Kβjbj(Xi)+ϵiy_i = \beta_0 + \sum_{j=1}^K \beta_j b_j(X_i) + \epsilon_i

线性样条#

在每个区域内拟合一条直线,同时要求在各结点处满足连续性。

即:一个节点为 ξk,k=1,,K\xi_k, k = 1, \ldots, K 的线性样条。该样条在节点处连续,为分段线性多项式。

yi=β0+j=1K+1βjbj(Xi)+ϵiy_i = \beta_0 + \sum_{j=1}^{K + 1} \beta_j b_j(X_i) + \epsilon_i

其中 bkb_k 为基函数:

b1(xi)=xibk+1(xi)=(xiξk)+,k=1,,K\begin{array}{rcl}{b_{1}(x_{i})}&{=}&{x_{i}}\\ {b_{k+1}(x_{i})}&{=}&{(x_{i}-\xi_{k})_{+},\quad k=1,\dots, K}\end{array}

此处 ()+()_+ 表示当括号内的值大于 00 时取值,否则取 00

本质上,依然是分段线性函数。

方式上,采用基函数累加的方式,即每一段都是在前段数值的基础上累加,保证连续(样条定义中的要求);而不是每段都设计全新线性函数(并要求连续)。

三次样条#

先以三次多项式的基为基础,即 xx x2x^2 x3x^3,然后在每个节点添加一个截断幂基:

yi=β0+j=1K+3βjbj(Xi)+ϵiy_i = \beta_0 + \sum_{j=1}^{K + 3} \beta_j b_j(X_i) + \epsilon_i

其中 bkb_k 为基函数:

b1(xi)=xib2(xi)=xi2b3(xi)=xi3bk+3(xi)=(xiξk)+3,k=1,,K\begin{array}{rcl}{b_{1}(x_{i})}&{=}&{x_{i}}\\ {b_{2}(x_{i})}&{=}&{x_{i}^{2}}\\ {b_{3}(x_{i})}&{=}&{x_{i}^{3}}\\ {b_{k+3}(x_{i})}&{=}&{(x_{i}-\xi_{k})_{+}^{3},\quad k=1,\dots, K}\end{array}

截断幂基:

(xiξk)+3={(xiξk)3if xi>ξk0otherwise(x_{i}-\xi_{k})_{+}^{3}=\left\{\begin{array}{rl}{(x_{i}-\xi_{k})^{3}}&{\mathrm{if~}x_{i}>\xi_{k}}\\ {0}&{\mathrm{otherwise}}\end{array}\right.

本质上,依然是分段三次多项式函数。

方式上,采用基函数累加的方式,即每一段都是在前段数值的基础上累加,保证连续(样条定义中的要求);而不是每段都设计全新的三次多项式函数(并要求连续)。

需估计 K+4(1+3+K)K + 4 (1+3+K) 个系数,因此拟合三次样条总共需要 K+4K+4 个自由度。

自然样条#

自然样条(natural spline):在边界处强制要求二阶导数为零的三次样条。附加了边界约束的回归样条,函数在边界区域应该是线性的,这里的边界区域指的是 XX 的值比最小的结点处的值小或比最大的结点处的值大。

节点选择方式#

节点分布:让结点在数据上呈现均匀分布;首先确定自由度,然后靠软件自动在数据的均匀分位数点上设置相应个数的结点。

具有 KK 个结点的三次样条有 K+4K + 4 个参数或自由度;具有 KK 个节点的自然样条有 KK 个自由度。

如何确定节点个数(自由度):

  • 尝试多个不同结点个数(或自由度),选择最优曲线。

  • 交叉验证方法:首先移除部分数据,用剩余的数据拟合样条函数,接着用拟合的样条函数来对移除的那部分数据做预测,不断重复,最后计算整体交叉验证 RSS。

与多项式回归作对比#

回归样条通常得到的结果比多项式回归更好(增加了截断幂基)。

  • 多项式回归需设定较高幂次(自由度随之增高)。

  • 而样条函数通过增加结点个数提升结果,但保持自由度固定。

  • 此外,样条方法还允许我们在函数变化快的地方设置更多节点,在变化慢的地方设置少些节点,从而提升整体的效果。

光滑样条#

5.1 光滑样条#

光滑样条#

最小化一个带光滑惩罚项的残差平方和的式子,得到光滑样条的结果。

具体的,拟合式子除了残差平方和外,还有一个光滑惩罚项,如下,其中 λ\lambda 是一个非负的调节参数。

minimizegSi=1n(yig(xi))2+λ(g(t))2dt\operatorname*{minimize}_{g\in\mathcal{S}} \sum_{i=1}^{n}\left(y_{i}-g\left(x_{i}\right)\right)^{2}+\lambda \int\left(g^{\prime \prime}(t)\right)^{2} d t

式中,i=1n(yig(xi))2\sum_{i=1}^{n}\left(y_{i}-g\left(x_{i}\right)\right)^{2} 为损失函数,即 RSS,(g(t))2dt\int\left(g^{\prime \prime}(t)\right)^{2} d t 为惩罚项,表示函数 gg 的曲率。

上述损失函数部分使得函数 g(x)g(x) 能很好地拟合数据。而波动性惩罚部分 (g(t))2dt\int\left(g^{\prime \prime}(t)\right)^{2} d t 则控制其整体波动性。

(g(t))2dt\int\left(g^{\prime \prime}(t)\right)^{2} d t 是函数的二阶导数,衡量的是函数的粗糙程度。

如果 g(t)g(t)tt 处波动剧烈(粗糙),则 g(t)g^{\prime \prime}(t) 绝对值较大,反之接近于 00 。积分表示是在 tt 的取值区域内对粗糙程度求和。较大,反之接近于 00。积分表示是在 tt 的取值区域内对粗糙程度求和。

  • λ=0\lambda = 0 时,惩罚项不起作用,得到的 g(t)g(t) 相当于在每个训练数据点上做插值(注意:这里并没有限制 g(t)g(t) 的形式;所以,不是线性/三次等设定的函数形式)。

  • λ\lambda \to \infty 时, g(t)g(t) 非常平稳并趋近于直线(使得二阶导平方的积分趋为 00),相应的,此时得到的 g(t)g(t) 即为最小二乘线;对于比较适中的 λ\lambdag(t)g(t) 会尽量接近训练点,同时也比较光滑。

  • λ\lambda 在这里控制的是偏差-方差的均衡。

最小化该式,本质上是在不同 xx 取值处 (x1,x2,,xn)(x_1, x_2, \ldots, x_n) 作为节点的三次多项式,且每个节点处的一阶、二阶导数都连续。

此外,在节点之外的区域是线性的。

总结来说:该式子的优化结果是节点为 x1,x2,,xnx_1, x_2, \ldots, x_n 的自然三次样条。

但是与给定节点为 x1,x2,,xnx_1, x_2, \ldots, x_n 然后确定基函数的传统步骤得到的自然三次样条是不同的。上式的结果,可以认为是自然三次样条的收缩版本, λ\lambda 控制了收缩的程度。

光滑样条本质上就是“在所有数据点放 knot 的自然三次样条”,不过通过 λ\lambda 自动控制了它的自由度。

有效自由度#

调节参数 λ\lambda 控制光滑样条的粗糙度,同时也控制着有效自由度。

dfλ=i=1nSλii\text{df}_{\lambda} = \sum_{i=1}^n {S_\lambda}_{ii}

其中 SλS_\lambda 是光滑样条的平滑矩阵。g^λ=Sλy\hat{g}_\lambda = S_\lambda yg^λ\hat{g}_\lambda 是优化方程对于给定 λ\lambda 的解。g^λ\hat{g}_\lambda 是一个 nn 维向量,是训练集 x1,x2,,xnx_1, x_2, \ldots, x_n 对应的光滑样条拟合值。表明光滑样条的拟合值可以写成一个 n×nn \times n 矩阵 SλS_\lambda 乘以响应变量向量 yy 的形式。

光滑样条的自由度理论上是 nn (训练样本中 xxnn 种取值对应 yynn 种取值),但被大量限制或者压缩。

有效自由度 dfλ\text{df}_{\lambda} 是矩阵 SλS_\lambda 的迹 (trace),即矩阵对角线元素之和。λ\lambda00\infty 变化时,有效自由度页随之从 nn 变化到 2。

参数 λ\lambda 的选择:使用交叉验证方法确定 λ\lambda 的值,选择能够使得交叉验证的 RSS 尽量小的 λ\lambda 作为解。如果使用留一交叉验证,有如下快速公式(即:代价与拟合一个模型是一致的)

RSSCV(λ)=i=1n(yig^λ(i)(xi))=i=1n(yig^λ(xi)1Sλii)2\text{RSS}_{\mathrm{CV}}(\lambda)=\sum_{i = 1}^{n}{(y_i - \hat{g}_{\lambda}^{(-i)}\left(x_{i}\right))}=\sum_{i=1}^{n}\left(\frac{y_{i}-\hat{g}_{\lambda}\left(x_{i}\right)}{1-{S_\lambda}_{i i}}\right)^{2}

其中 g^λ(i)(xi)\hat{g}_{\lambda}^{(-i)}\left(x_{i}\right) 是在不包含第 ii 个数据点的训练集上拟合得到的光滑样条在 xix_i 处的预测值。

局部回归#

6.1 局部回归#

局部回归#

  • 局部回归仅使用附近的训练观测值,并使用(加权)最小二乘来拟合目标点 x0x_0 处的数值。

  • 可以通过各种方式执行局部回归,某些变量可以全局拟合,而某些局部拟合。

局部回归(local regression)与样条结果比较相近,最大的差别在于局部回归中的区域之间是可以重叠的(样条拟合使用结点分段 xx,各段不重叠),这个条件保证了局部回归整体光滑的拟合结果。

过程#

  1. 选取占所有数据 s=k/ns = k / n 比例的最靠近 x0x_0 的数据 xix_i

  2. 对这些数据点赋予权重 Ki0=K(xi,x0)K_{i0} = K(x_i, x_0),距离 x0x_0 越近的点权重越大,距离越远的点权重越小。常用的权重函数是三次权重函数:

    Ki0(x0,xi)={(1xix0λ3)3if xix0<λ0otherwiseK_{i0}\left(x_{0}, x_i\right)=\left\{\begin{array}{ll}{\left(1-\left|\frac{x_i-x_{0}}{\lambda}\right|^{3}\right)^{3}}&{\mathrm{if~}\left|x_i-x_{0}\right|<\lambda}\\ {0}&{\mathrm{otherwise}}\end{array}\right.

    其中 λ\lambda 是一个正数,称为带宽 (bandwidth),决定了在 x0x_0 附近有多少数据点被赋予非零权重。

    1. 用定义好的权重在 xix_i 处拟合加权最小二乘回归,也就是对下式最小化
    i=1nKi0(yiβ0β1xi)2\sum_{i=1}^{n} K_{i0}\left(y_{i}-\beta_{0}-\beta_{1} x_{i}\right)^{2}
  3. 根据 f^(x0)=β^0+β^1x0\hat{f}(x_0) = \hat{\beta}_0 + \hat{\beta}_1 x_0 得到 x0x_0 处的预测值。

广义可加模型#

7.1 广义可加模型#

广义可加模型#

提供一种对标准多元线性模型进行推广的框架。框架中,每个变量用一个非线性函数替换,同时保持着模型的整体可加性。

可用于响应变量定性(分类)与定量(回归)的情形:

用于回归问题:

yi=β0+j=1pfj(Xij)+ϵiy_i = \beta_0 + \sum_{j=1}^p f_j(X_{ij}) + \epsilon_i

用于分类问题:

log(p(X)1p(X))=β0+j=1pfj(Xj)\log\left(\frac{p(X)}{1 - p(X)}\right) = \beta_0 + \sum_{j=1}^p f_j(X_{j})

用于回归问题#

对多元线性回归模型用一个光滑的非线性函数 fj(Xij)f_j(X_{ij}) 替代每个预测变量 XjX_j 的线性项 βjXij\beta_j X_{ij},从而得到广义可加模型:

yi=β0+j=1pfj(Xij)+ϵiy_i = \beta_0 + \sum_{j=1}^p f_j(X_{ij}) + \epsilon_i

这个模型称为可加模型,对每一个 XjX_j 对应一个独立的计算单元 fjf_j,然后将分项结果加在一起。

GAM 的优点与不足#

  • GAM 模型可允许对每一个 XjX_j XjX_j 都拟合一个非线性函数 fjf_j,可自动地对“被标准的线性回归模型所忽略”的非线性关系进行建模,不需手动为每一个变量设置不同的变形方式。

  • 非线性拟合模型能将响应变量预测得更精准。

  • 模型是可加的,能在保持其他变量不变的情况下看每个变量 XjX_jYY 单独的影响效果。

  • 针对变量 XjX_j 的函数 fjf_j 的光滑性也能通过对自由度的分析得到。

  • GAM 模型的形式被限定为可加形式。在多变量的情况下,会忽略有意义的交互项。但可以通过增加形式为 Xj×XkX_j \times X_k ,使得 GAM 也能够表达交互效应。另外可以增加形式为 fjk(Xj,Xk)f_{jk} (X_j ,X_k ) 的低维交互项,可应用一些二维光滑方法如局部回归或者二维样条来拟合。

用于分类问题#

GAM 也可以用于当 YY 为定性变量的时候,假设 YY 只取 0 或者 1。令 p(x)=Pr(Y=1X)p(x) = \Pr(Y=1|X) 是给定预测变量值时响应变量为 11 的条件概率。下式为逻辑斯谛回归模型:

log(p(X)1p(X))=β0+j=1pβjXj\log\left(\frac{p(X)}{1 - p(X)}\right) = \beta_0 + \sum_{j=1}^p \beta_j X_{j}

左侧为对分数,由上式推广可得:

log(p(X)1p(X))=β0+j=1pfj(Xj)\log\left(\frac{p(X)}{1 - p(X)}\right) = \beta_0 + \sum_{j=1}^p f_j(X_{j})
高级统计方法 第一轮学习 Chapter 7
https://blog.farewe1ll.top/posts/高级统计方法第一轮学习-chapter_7/
作者
Farewe1ll 山竹
发布于
2025-11-24
许可协议
CC BY-NC-SA 4.0