多元线性模型最小一乘回归

一、算法目的

       多元线性模型的矩阵形式:
Y = X β + ε (1) Y=X\beta+\varepsilon\tag{1} Y=Xβ+ε(1)
       其中, Y = [ y 1 y 2 ⋮ y n ] , X = [ 1 x 11 ⋯ x 1 p 1 x 21 ⋯ x 2 p ⋮ ⋮ ⋱ ⋮ 1 x n 1 ⋯ x n p ] β = [ β 0 β 1 ⋮ β p ] , ε = [ ε 1 ε 2 ⋮ ε n ] Y=\left[ \begin{matrix} y_{1} \\ y_{2} \\ \vdots \\ y_{n} \end{matrix} \right] ,X=\left[ \begin{matrix} 1&x_{11}&\cdots&x_{1p} \\ 1&x_{21}&\cdots&x_{2p} \\ \vdots&\vdots&\ddots&\vdots \\ 1 &x_{n1}&\cdots&x_{np} \end{matrix} \right]\\ \beta=\left[ \begin{matrix} \beta_{0} \\ \beta_{1} \\ \vdots \\ \beta_{p} \end{matrix} \right],\varepsilon=\left[ \begin{matrix} \varepsilon_{1} \\ \varepsilon_{2} \\ \vdots \\ \varepsilon_{n} \end{matrix} \right] Y=y1y2yn,X=111x11x21xn1x1px2pxnpβ=β0β1βp,ε=ε1ε2εn
       对于以上多元线性模型我们要通过最小一乘法,也就是要求出使得残差的绝对值的和最小的参数 β \beta β的估计 β ^ \widehat{\beta} β

二、算法推导

2.1目标函数的表示形式

       我们的目标函数为:
min ⁡ Q ( β ) = ∑ i = 1 n ∣ y i − x i ′ β ∣ (2) \min Q(\beta)=\sum_{i=1}^{n}|y_{i}-x_{i}'\beta| \tag{2} minQ(β)=i=1nyixiβ(2)
       其中, x i ′ = [ 1 , x i 1 , ⋯   , x i p ] x_{i}'=[1,x_{i1},\cdots,x_{ip}] xi=[1,xi1,,xip]

2.2构造一个线性规划

       我们知道,任何一个向量都可以表示为两个非负向量的差,为了符合线性规划中对未知变量保持非负的习惯与一般做法。我们令 β = d 1 − d 2 , d 1 ≥ 0 , d 2 ≥ 0 (3) \beta=d_{1}-d_{2},d_{1}\ge0,d_{2}\ge0\tag{3} β=d1d2,d10,d20(3)
       下面我们给出线性规划约束条件的系数矩阵和系数矩阵右端项: A = [ I n X − X I n − X X ] , B = [ Y − Y ] (4) A=\left[\begin{matrix} I_{n}&X&-X \\ I_{n}&-X&X \end{matrix} \right],B=\left[\begin{matrix} Y\\ -Y \end{matrix} \right]\tag{4} A=[InInXXXX],B=[YY](4)
       线性规划的变量为 ( r , d 1 , d 2 ) T (r,d_{1},d_{2})^{T} (r,d1,d2)T,线性规划目标函数的变量系数矩阵为 ( l ′ , 0 , 0 ) (l',0,0) (l,0,0)。其中, r = [ r 1 r 2 ⋮ r n ] , l = [ 1 1 ⋮ 1 ] n × 1 (5) r=\left[ \begin{matrix} r_{1} \\ r_{2} \\ \vdots \\ r_{n} \end{matrix} \right],l=\left[ \begin{matrix} 1 \\ 1 \\ \vdots \\ 1 \end{matrix} \right]_{n\times1 \tag{5}} r=r1r2rn,l=111n×1(5)
       综上,线性规划表示为:
{ min ⁡ ( l ′ , 0 , 0 ) ( r , d 1 , d 2 ) T = ∑ i = 1 n r i A [ r d 1 d 2 ] ≥ B , [ r d 1 d 2 ] ≥ 0 (6) \begin{cases}\min(l',0,0)(r,d_{1},d_{2})^{T}=\sum_{i=1}^{n}r_{i} \\ A\left[\begin{matrix} r\\ d_{1}\\ d_{2} \end{matrix}\right]\ge B,\left[\begin{matrix} r\\ d_{1}\\ d_{2} \end{matrix}\right]\ge 0\end{cases}\tag{6} min(l,0,0)(r,d1,d2)T=i=1nriArd1d2B,rd1d20(6)

2.3一个证明:揭示(2)和(6)之间的关系

       下面我们来证明,当线性规划 ( 6 ) (6) (6)求得最优解 ( r , d 1 , d 2 ) T (r,d_{1},d_{2})^{T} (r,d1,d2)T时, β = d 1 − d 2 \beta=d_{1}-d_{2} β=d1d2就是目标函数(2)的解。并且线性规划 ( 6 ) (6) (6)的最小值就是目标函数 ( 2 ) (2) (2)的最小值,也即 min ⁡ Q = ∑ i = 1 n r i (7) \min Q=\sum_{i=1}^{n}r_{i}\tag{7} minQ=i=1nri(7)
证明:
       线性规划(6)的第一个约束条件可以写成 r + X d 1 − X d 2 ≥ Y , r − X d 1 + X d 2 ≥ − Y r+Xd_{1}-Xd_{2}\ge Y,r-Xd_{1}+Xd_{2}\ge -Y r+Xd1Xd2Y,rXd1+Xd2Y。也即 r ≥ Y − X β , r ≥ − ( Y − X β ) r\ge Y-X\beta,r\ge -(Y-X\beta) rYXβ,r(YXβ)。也就是 r i ≥ ∣ y i − x i ′ β ∣ , i = 1 , 2 , ⋯   , n (8) r_{i}\ge|y_{i}-x_{i}'\beta|,i=1,2,\cdots,n\tag{8} riyixiβ,i=1,2,,n(8)

       假设当线性规划 ( 6 ) (6) (6)求得最优解 ( r , d 1 , d 2 ) T , β = d 1 − d 2 (r,d_{1},d_{2})^{T},\beta=d_{1}-d_{2} (r,d1,d2)T,β=d1d2时,存在 β ~ = d 1 ~ − d 2 ~ \widetilde{\beta}=\widetilde{d_{1}}-\widetilde{d_{2}} β =d1 d2 ,使得 Q ( β ~ ) < Q ( β ) Q(\widetilde{\beta})<Q(\beta) Q(β )<Q(β),其中 d 1 ~ ≥ 0 , d 2 ~ ≥ 0 \widetilde{d_{1}}\ge 0,\widetilde{d_{2}}\ge 0 d1 0,d2 0。令 r ~ = ( r 1 ~ , r 2 ~ , ⋯   , r n ~ ) \widetilde{r}=(\widetilde{r_{1}},\widetilde{r_{2}},\cdots,\widetilde{r_{n}}) r =(r1 ,r2 ,,rn ),不妨令其中 r i ~ = ∣ y i − x i ′ β ~ ∣ , i = 1 , 2 , ⋯   , n \widetilde{r_{i}}=|y_{i}-x_{i}'\widetilde{\beta}|,i=1,2,\cdots,n ri =yixiβ ,i=1,2,,n.那么
A [ r ~ d 1 ~ d 2 ~ ] ≥ B , [ r ~ d 1 ~ d 2 ~ ] ≥ 0 (9) A\left[\begin{matrix} \widetilde{r}\\ \widetilde{d_{1}}\\ \widetilde{d_{2}} \end{matrix}\right]\ge B,\left[\begin{matrix} \widetilde{r}\\ \widetilde{d_{1}}\\ \widetilde{d_{2}} \end{matrix}\right]\ge 0 \tag{9} Ar d1 d2 B,r d1 d2 0(9)
       所以 ( r ~ , d 1 ~ , d 2 ~ ) T (\widetilde{r},\widetilde{d_{1}},\widetilde{d_{2}})^{T} (r ,d1 ,d2 )T也满足线性规划 ( 6 ) (6) (6)的约束条件,并且 ( l ′ , 0 , 0 ) ( r ~ , d 1 ~ , d 2 ~ ) T = ∑ i = 1 n r i ~ = ∑ i = 1 n ∣ y i − x i ′ β ~ ∣ = Q ( β ~ ) < Q ( β ) (l',0,0)(\widetilde{r},\widetilde{d_{1}},\widetilde{d_{2}})^{T}=\sum_{i=1}^{n}\widetilde{r_{i}}=\sum_{i=1}^{n}|y_{i}-x_{i}'\widetilde{\beta}|=Q(\widetilde{\beta})<Q(\beta) (l,0,0)(r ,d1 ,d2 )T=i=1nri =i=1nyixiβ =Q(β )<Q(β),由 ( 8 ) (8) (8)知, Q ( β ) = ∑ i = 1 n ∣ y i − x i ′ β ∣ ≤ ∑ i = 1 n r i Q(\beta)=\sum_{i=1}^{n}|y_{i}-x_{i}'\beta|\leq\sum_{i=1}^{n}r_{i} Q(β)=i=1nyixiβi=1nri,所以 ∑ i = 1 n r i ~ < ∑ i = 1 n r i \sum_{i=1}^{n}\widetilde{r_{i}}<\sum_{i=1}^{n}r_{i} i=1nri <i=1nri,这与 ( r , d 1 , d 2 ) T (r,d_{1},d_{2})^{T} (r,d1,d2)T是线性规划的最优解矛盾,所以第一部分得证。
        从上述的推导我们可以得知,在 d 1 d_{1} d1 d 2 d_{2} d2已经确定的情况下, ∣ y i − x i ′ β ∣ , i = 1 , 2 , ⋯   , n |y_{i}-x_{i}'\beta|,i=1,2,\cdots,n yixiβ,i=1,2,,n均为定值,由 ( 8 ) (8) (8)可知,为了使得线性规划 ( 6 ) (6) (6)的目标函数最小,必须取 r i = ∣ y i − x i ′ β ∣ r_{i}=|y_{i}-x_{i}'\beta| ri=yixiβ。所以 ( 7 ) (7) (7)成立。

2.4回归算法

s t e p ( 1 ) step(1) step(1):输入回归数据 X X X Y Y Y
s t e p ( 2 ) step(2) step(2):根据 2.2 2.2 2.2中的 ( 4 ) , ( 5 ) , ( 6 ) (4),(5),(6) (4),(5),(6)计算出线性规划的相关矩阵 A , B , C A,B,C A,B,C其中 C = ( l ′ , 0 ( p + 1 ) × 1 , 0 ( p + 1 ) × 1 ) C=(l',0_{(p+1)\times1},0_{(p+1)\times1}) C=(l,0(p+1)×1,0(p+1)×1)
s t e p ( 3 ) step(3) step(3):将 A , B , C A,B,C A,B,C带入单纯形法模块,求得最优解 ( r , d 1 , d 2 ) T (r,d_{1},d_{2})^{T} (r,d1,d2)T
s t e p ( 4 ) step(4) step(4):得到 β ^ = d 1 − d 2 \widehat{\beta}=d_{1}-d_{2} β =d1d2

注:关于单纯形法原理本文不再赘述。

三、实际案例与python编程计算

3.1引入数据集

       我们以著名的 H a l d Hald Hald数据为例。
在这里插入图片描述

图3.1.1

3.2计算 β ^ \widehat{\beta} β

       下面给出计算最小一乘回归方程完整 p y t h o n python python源代码:

import pandas as pd
import numpy as np
from scipy import optimize
#多元线性模型的最小一乘回归(不等式约束条件)
#导入数据
dataset1=pd.read_excel('Hald.xlsx')
dataset2=pd.read_excel('Hald.xlsx')

#计算X,Y
Y=dataset1['Y'].values
dataset2['Y']=1
X=dataset2.values

#计算A,B,C
n=len(X)
B=np.hstack((Y,-Y))
In=np.eye(n)
A1=np.hstack((In,X,-X))
A2=np.hstack((In,-X,X))
A=np.vstack((A1,A2))
p=len(X[0])-1
l=np.ones(n,np.int)
o=np.zeros(p+1,np.int)
C=np.hstack((l,o,o))

#使用optimize包的linprog函数求解线性规划
r = optimize.linprog(C,A_ub=-A,b_ub=-B,bounds=(0,None))
#得到最优解x=(r,d1,d2)'
x=(r.x)
#计算β估计
beta=[]
for i in range(n,n+p+1):
    beta.append(x[i]-x[i+p+1])
    
#输出结果
print('多元线性模型的最小一乘法回归方程为:\ny=',end='')
print(beta[0],end='')
for i in range(1,p+1):
    if beta[i]>0:
        print('+{}x{}'.format(beta[i],i),end='')
    else:
        print('{}x{}'.format(beta[i], i),end='')

       下面给出程序运行结果:
在这里插入图片描述

图3.2.1

四、参考文献

[1]陈希孺.最小一乘线性回归(下)[J].数理统计与管理,1989(06):48-56.
[2]吕书龙. 最小一乘估计快速算法的研究[D].福州大学,2003.

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值