【学习笔记】多元线性回归模型 —— Matlab


前言

通过模型算法,熟练对Matlab的应用。
学习视频链接:
https://www.bilibili.com/video/BV1EK41187QF?p=44&vd_source=67471d3a1b4f517b7a7964093e62f7e6

一、多元线性回归

多元线性回归模型

一般称由 y = β 0 + β 1 x 1 + ⋯ + β k x k y=\beta_0+\beta_1x_1+\cdots+\beta_kx_k y=β0+β1x1++βkxk 确定的模型:
{ Y = X β + ϵ E ( ϵ ) = 0   , C O V ( ϵ   , ϵ ) = σ 2 I n \left\{\begin{matrix}Y=X\beta+\epsilon\\E(\epsilon)=0\:,COV(\epsilon\:,\epsilon)=\sigma^2I_n\end{matrix}\right. {Y=+ϵE(ϵ)=0,COV(ϵ,ϵ)=σ2In
k k k 元线性回归模型,并简记为 ( Y , X β , σ 2 I n ) (Y,X\beta,\sigma^2I_n) (Y,,σ2In)
Y = [ y 1 y 2 . . . y n ]   , X = [ 1 x 11 x 12 . . . x 1 k 1 x 21 x 22 . . . x 2 k . . . . . . . . . . . . . . . 1 x n 1 x n 2 . . . x n k ]   , β = [ β 0 β 1 . . . β k ]   ,   ϵ = [ ϵ 1 ϵ 2 . . . ϵ n ] \begin{aligned}Y=\begin{bmatrix}y_1\\y_2\\...\\y_n\end{bmatrix}\:,X=\begin{bmatrix}1&x_{11}&x_{12}&...&x_{1k}\\1&x_{21}&x_{22}&...&x_{2k}\\...&...&...&...&...\\1&x_{n1}&x_{n2}&...&x_{nk}\end{bmatrix}\:,\beta=\begin{bmatrix}\beta_0\\\beta_1\\...\\\beta_k\end{bmatrix}\:,\:\epsilon=\begin{bmatrix}\epsilon_1\\\epsilon_2\\...\\\epsilon_n\end{bmatrix}\end{aligned} Y= y1y2...yn ,X= 11...1x11x21...xn1x12x22...xn2............x1kx2k...xnk ,β= β0β1...βk ,ϵ= ϵ1ϵ2...ϵn
y = β 0 + β 1 x 1 + ⋯ + β k x k y= \beta _{0}+ \beta _{1}x_{1}+ \cdots + \beta _{k}x_{k} y=β0+β1x1++βkxk称为回归平面方程。

线性模型 ( Y , X β , σ 2 I n ) (Y,X\beta,\sigma^2I_n) (Y,,σ2In) 考虑的主要问题

  • 对参数 β \beta β σ 2 \sigma^2 σ2 作点估计,建立 y y y x 1 , x 2 , ⋯   , x k x_1,x_2,\cdots,x_k x1,x2,,xk 之间的数量关系
  • 对模型参数、模型结果等做检验
  • γ \gamma γ 的值作预测,即对 γ \gamma γ 作点(区间)估计

多元线性回归模型的参数估计

  • 用最小二乘法求 β 0 , ⋯   , β k \beta_0,\cdots,\beta_k β0,,βk 的估计量:作离差平方和
    Q = ∑ i = 1 n ( y i − β 0 − β 1 x i 1 − ⋯ − β k x i k ) 2 Q=\sum_{i=1}^n(y_i-\beta_0-\beta_1x_{i1}-\cdots-\beta_kx_{ik})^2 Q=i=1n(yiβ0β1xi1βkxik)2
  • 选择 β 0 , ⋯   , β k \beta_0,\cdots,\beta_k β0,,βk 使 Q Q Q 达到最小
  • 解得估计值 β ^ = ( X T X ) − 1 ( X T Y ) \hat{\beta}=(X^TX)^-1(X^TY) β^=(XTX)1(XTY)
  • 得到的 β ^ i \hat{\beta}_i β^i代入回归平面方程得:
    y = β ^ 0 + β ^ 1 x 1 + ⋯ + β ^ k x k y=\hat{\beta}_0+\hat{\beta}_1x_1+\cdots+\hat{\beta}_kx_k y=β^0+β^1x1++β^kxk
  • 称为经验回归平面方程, β ^ i \hat{\beta}_i β^i 称为经验回归系数

多元线性回归模型和回归系数的检验

1 ) F 1) F 1)F 检验法

  • H 0 H_{0} H0 成立时, F = U / k Q e / ( n − k − 1 ) ∼ F ( k , n − k − 1 ) F=\frac{U/k}{Q_{e}/(n-k-1)}\sim F(k,n-k-1) F=Qe/(nk1)U/kF(k,nk1)
  • 如果 F > F 1 − α ( k , n − k − 1 ) F>F_{1-\alpha}(k,n-k-1) F>F1α(k,nk1),则拒绝 H 0 H_0 H0 ,认为 y y y x 1 , ⋅ ⋅ ⋅ , x k x_1,\cdotp\cdotp\cdotp,x_k x1,⋅⋅⋅,xk 之间显著地有线性关系;否则就接受 H 0 H_0 H0,认为 y y y x 1 , ⋯   , x k x_1,\cdots,x_k x1,,xk 之间线性关系不显著。
  • 其中 U = ∑ i = 1 n ( y ^ i − y ˉ ) 2   ( 回归平方和 ) Q e = ∑ i = 1 n ( y i − y ^ i ) 2   ( 残差平方和 ) U=\sum_{i=1}^{n}(\hat{y}_{i}-\bar{y})^{2}\:(\text{回归平方和})\\Q_{e}=\sum_{i=1}^{n}(y_{i}-\hat{y}_{i})^{2}\:(\text{残差平方和}) U=i=1n(y^iyˉ)2(回归平方和)Qe=i=1n(yiy^i)2(残差平方和)

2 ) r 2) r 2)r 检验法

  • 定义
    R = U L y y = U U + Q e R=\sqrt{\dfrac{U}{L_{yy}}}=\sqrt{\dfrac{U}{U+Q_e}} R=LyyU =U+QeU
    称为 y y y x 1 , ⋯   , x k x_1,\cdots,x_k x1,,xk 的多元相关系数或复相关系数。由于
    F = n − k − 1 k R 2 1 − R 2 F=\frac{n-k-1}{k}\frac{R^2}{1-R^2} F=knk11R2R2
    故用 F F F 和用 R R R 检验是等效的。

二、示例

  • 水泥凝固时放出的热量 y y y 与水泥中4种化学成分 x 1 , x 2 , x 3 , x 4 x_1,x_2,x_3,x_4 x1,x2,x3,x4 有关,今测得一组数据如下,试用逐步回归法确定一个线性模型,并找出影响水泥凝固时放出热量的必要因素
    在这里插入图片描述

多元线性回归的逐步回归

  • “最优” 的回归方程就是包含所有对 Y Y Y 有影响的变量,而不包含对 Y Y Y 影响不显著的变量回归方
  • 逐步回归分析法的思想:
    • 从一个自变量开始,根据自变量对 Y Y Y 作用的显著程度,从大到小地依次逐个引入回归方程
    • 当引入的自变量由于后引入变量而变得不显著时,要将其剔除掉。
    • 引入一个自变量或从回归方程中剔除一个自变量,为逐步回归的一步。
    • 对于每一步都要进行 Y Y Y 值检验,以确保每次引入新的显著性变量前回归方程中只包含对Y作用显著的变量。
    • 这个过程反复进行,直至既无不显著的变量从回归方程中剔除,又无显著变量可引入回归方程时为止。

三、代码实现----Matlab

1.多元回归的实现

Matlab的 regress 函数

regress 函数的基本语法如下:

[b,bint,r,rint,stats]=regress(Y,X,alpha)

b = [ β ^ 0 β ^ 1 . . . β ^ p ] , Y = [ y 1 y 2 . . . y n ]   , X = [ 1 x 11 x 12 ⋯ x 1 p 1 x 21 x 22 ⋯ x 2 p . . . . . . . . . . . . . . . 1 x n 1 x n 2 . . . x n p ] b=\begin{bmatrix}\hat{\beta}_0\\\hat{\beta}_1\\...\\\hat{\beta}_p\end{bmatrix},Y=\begin{bmatrix}y_1\\y_2\\...\\y_n\end{bmatrix}\:,X=\begin{bmatrix}1&x_{11}&x_{12}&\cdots&x_{1p}\\1&x_{21}&x_{22}&\cdots&x_{2p}\\...&...&...&...&...\\1&x_{n1}&x_{n2}&...&x_{np}\end{bmatrix} b= β^0β^1...β^p ,Y= y1y2...yn ,X= 11...1x11x21...xn1x12x22...xn2......x1px2p...xnp

2.逐步回归的实现

Matlab的 stepwise 函数

stepwise 函数的基本语法如下:

stepwise( x, y, inmodel, alpha)

x − − x-- x自变量数据, n × m n\times m n×m 阶矩阵 y − − y-- y 因变量数据, n × 1 n\times1 n×1阶矩阵
i n m o d e l − − inmodel-- inmodel矩阵的列数的指标,给出初始模型中包括的子集(缺省时设定为全部自变量)
a l p h a − − alpha-- alpha默认为0.05

3.Matlab代码

clc;clear
x1=[7 1 11 11 7 11 3 1 2 21 1 11 10]';
x2=[26 29 56 31 52 55 71 31 54 47 40 66 68]';
x3=[6 15 8 8 6 9 17 22 18 4 23 9 8]';
x4=[60 52 20 47 33 22 6 44 22 26 34 12 12]';
y=[78.5 74.3 104.3 87.6 95.9 109.2 102.7 72.5 93.1 115.9 83.8 113.3 109.4]';
x=[x1 x2 x3 x4];  % 自变量矩阵,包括四个自变量
stepwise(x,y)  % 使用逐步回归分析方法,选取最佳模型

在这里插入图片描述
X 1 、 X 2 、 X 3 、 X 4 X1、X2、X3、X4 X1X2X3X4 全部选中时, F F F = 111.479

在这里插入图片描述
只选中 X 1 、 X 2 X1、X2 X1X2 时, F F F = 229.504

在这里插入图片描述
只选中 X 3 、 X 4 X3、X4 X3X4 时, F F F = 72.2674

可见 X 1 、 X 2 X1、X2 X1X2 是影响 Y Y Y 的必要因素

只对 X 1 、 X 2 X1、X2 X1X2 进行线性回归:

% 水泥凝固时放热分析
% (1)数据输入
clc;clear
x1=[7 1 11 11 7 11 3 1 2 21 1 11 10]';
x2=[26 29 56 31 52 55 71 31 54 47 40 66 68]';
y=[78.5 74.3 104.3 87.6 95.9 109.2 102.7 72.5 93.1 115.9 83.8 113.3 109.4]';
x=[ones(size(x1)),x1, x2];  % 自变量矩阵,包括四个自变量
% (2)求结果
[b,bint,r,rint,stats]=regress(y,x)  % 进行多元线性回归分析
% (3)画残差图
rcoplot(r,rint)  % 绘制残差图,用于评估回归模型的拟合情况
% 3、作图
% 定义自变量的范围
x1 = -10:0.1:10;  % x1的取值范围
x2 = -10:0.1:10;  % x2的取值范围

% 计算对应的因变量值
[X1, X2] = meshgrid(x1, x2);  % 创建网格点坐标矩阵
Z = b(1) + b(2)*X1 + b(3)*X2;  % 计算对应的因变量值

% 绘制三维图形
figure;
surf(X1, X2, Z);
xlabel('x1');
ylabel('x2');
zlabel('z');
title('Z = 52.5773 + 1.4683*X1 + 0.6623*X2');

运行结果:

残差分析:
在这里插入图片描述
三维图:
在这里插入图片描述

根据引用和引用的内容,多元回归预测模型的matlab代码如下: ```matlab clc, clear n = 26; m = 4; q = load('/Users/fxalll/Desktop/test.txt'); q(1:4,7:12) q(6,7:12) q(8:14,7:12) q1=[q(1:4,7:12);q(6,7:12);q(8:14,7:12)] x=[q(:,1:6);q1;] y=[x(:,2)]; x1=[x(:,3)]; x2=[x(:,4)]; x3=[x(:,5)]; x4=[x(:,6)]; X=[ones(n,1),x1,x2,x3,x4] [b,bint,r,rint,s]=regress(y,X); s2=sum(r.^2)/(n-m-1); b, bint, s, s2 rcoplot(r,rint) ``` 该代码通过多元回归分析方法,计算出了改进后的回归模型的系数、系数置信区间与统计量,并且绘制了残差图。 请注意,这只是一个示例代码,实际使用时需要根据具体的数据和问题进行相应的修改。同时,要确保所使用的数据文件路径正确。 希望对你有所帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Matlab:数模13-多元回归分析模型](https://blog.csdn.net/weixin_51496152/article/details/116407124)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [基于matlab的自适应插值法(四种不同插值算法集成)](https://download.csdn.net/download/weixin_56184890/88240081)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值