MATLAB多元回归

更新时间:2024-01-18 18:44:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

概述

根据图形(实际点),选配一条恰当的函数形式(类型)---需要数学理论与基础和经验。(并写出该函数表达式的一般形式,含待定系数)------选用某条回归命令求出所有的待定系数。所以可以说,回归就是求待定系数的过程(需确定函数的形式)

1、[b,bint,r,rint,s]=regress(y,X,alpha)或者regress(y, x)

输入 y :因变量(列向量) X:自变量组成的矩阵,并且x要在最前面额外添加全1列/对应于常数项 alpha:显著性水平(缺省时定位0.05,即置信水平95%,alpha不影响b,只影响bint(区间估计)。它越小,即置信度越高,则bint范围越大。显著水平越高,则区间就越小) 输出:b:多元线性回归方程的各个系数(含常数项,第一项为常数项)bint:b的置信区间(回归系数的区间估计) r:残差(列向量) rint:r的置信区间 stats: 用于检验回归模型的统计量,有四个数值:相关系数r2、F值、与F对应的概率p和残差的方差(前两个越大越好,后两个越小越好) 2、rcplot(r.rint)

残差分析,作残差图 如下图:

matlab多元线性回归

每条线长度表示的是置信区间,小圆圈代表残差点。 残差图中红色线条表示异常点,应剔除再次进行绘图

从残差图可以看出,除第二个和第十个数据外,其余数据的残差离零点均较近,且残差的置信区间均包含零点,这说明回归模型能较好的符合原始数据,而这两个数据可视为异常点(而剔除)

3、实例分析

如线性回归模型 y =b0+b1X1+b2X2+b3X3+e 回归系数 b0-b3,由数据估计,e是随机误差 y=b0+b1X1+b2X2+b3X3+b4X4+b5X5+b6X6+e1

y=[144 215 138 145 162 142 170 124 158 154 162 150 140 110 128 130 135 114 116 124 136 142 120 120 160 158 144 130 125 175];

x1=[39 47 45 47 65 46 67 42 67 56 64 56 59 34 42 48 45 18 20 19 36 50 39 21 44 53 63 29 25 69]; x2=[24.2 31.1 22.6 24.0 25.9 25.1 29.5 19.7 27.2 19.3 28.0 25.8 27.3 20.1 21.7 22.2 27.4 18.8 22.6 21.5 25.0 26.2 23.5 20.3 27.1 28.6 28.3 22.0 25.3 27.4];

x3=[0 1 0 1 1 0 1 0 1 0 1 0 0 0 0 1 0 0 0 ...

0 0 1 0 0 1 1 0 1 0 1]; X=[ones(16,1), x1',x2',x3'];%ones(16,1) 添加常数列 [b,bint,r,rint,stats]=regress(y',X); b,bint,stats rcoplot(r,rint) 4、检验

怎么对多元线性回归模型的回归系数β做t检验和F检验? 进行多元线性回归统计数F, t 测验的小程序: clear,clc

x=rand(50,10);y=rand(50,1); % example [n,k]=size(x);

X=[ones(n,1),x];%构建结构阵X, A=X'*X; %求算信息阵A,

C=inv(A); %求算信息阵的逆阵,

b=X\\y, % 求算回归统计数向量,其中第一行为回归截距a, RSS=y'*y-b'*X'*y, %求算离回归平方和, MSe=RSS/(n-k-1),%求算离回归方差,

Up=b.*b./diag(C);%求算偏回归平方和,其中第一行是a与0差异的偏平方和, F=Up/MSe,%F测验,其中第一行为a与0差异的F值, sb=sqrt(MSe*diag(C)); %求算回归统计数标准误,

t=b./sb, % 回归统计数的 t 测验,其中第一行为a与0差异的t测验值。 [t, t.^2, F],%验证t^2=F SSy=var(y)*(n-1) R2=(SSy-RSS)/SSy

注:r^2(决定系数)越大(接近于1),它们之间的关系越密切,拟合的效果越好。当然,对于复杂的多变数非线性关系的分析,统计上应以离回归方差(MSe)最小为佳。MSe=RSS/(n-k-1), RSS为离回归平方和,n为观察值组数,k为模型的效应项数(不包括常数项)。

部分摘自网络 1.多元线性回归

在Matlab统计工具箱中使用命令regress()实现多元线性回归,调用格式为 b=regress(y,x) 或

[b,bint,r,rint,statsl = regess(y,x,alpha)

其中因变量数据向量y和自变量数据矩阵x按以下排列方式输入

对一元线性回归,取k=1即可。alpha为显著性水平(缺省时设定为0.05),输出向量b,bint为回归系数估计值和它们的置信区间,r,rint为残差及其置信区间,stats是用于检验回归模型的统计量,有四个数值,第一个是R2,其中R是相关系数,第二个是F统计量值,第三个是与统计量F对应的概率P,第四个是 an estimate of the error variance(一个错误的方差估计)。

stats参数解释如下:

R2表示方差解释率,R2越接近1说明数据拟合程度越好。

F统计量用于检验模型是否通过检验。通过查F分布表,如果F>F分布表中对应的值,则通过检验。

P为F 统计量对应的概率,越接近0越好,当P<α时拒绝H0,回归模型成立!!!

第4个参数不知何用

画出残差及其置信区间,用命令rcoplot(r,rint)

2.非线性回归

非线性回归可由命令nlinfit来实现,调用格式为

[beta,r,j] = nlinfit(x,y,'model’,beta0)

其中,输人数据x,y分别为n×m矩阵和n维列向量,对一元非线性回归,x为n维列向量model是事先用 m-文件定义的非线性函数,beta0是回归系数的初值, beta是估计出的回归系数,r是残差,j是Jacobian矩阵,它们是估计预测误差需要的数据。

预测和预测误差估计用命令

[y,delta] = nlpredci(’model’,x,beta,r,j)

3.逐步回归

逐步回归的命令是stepwise,它提供了一个交互式画面,通过此工具可以自由地选择变量,进行统计分析。调用格式为:

stepwise(x,y,inmodel,alpha)

其中x是自变量数据,y是因变量数据,分别为n×m和n×l矩阵,inmodel是矩阵的列数指标(缺省时为全部自变量),alpha,为显著性水平(缺省时为0.5)

结果产生三个图形窗口,在stepwise plot窗口,虚线表示该变量的拟合系数与0无显著差异,实线表示有显著差异,红色线表示从模型中移去的变量;绿色线表明存在模型中的变量,点击一条会改变其状态。在stepwise Table窗口中列出一个统计表,包括回归系数及其置信区间,以及模型的统计量剩余标准差(RMSE),相关系数 (R-square),F值和P值。

多元回归分析中的问题

1.regress拟合的效果主要看哪些指标?

答:r平方是模型能解释变异的多少越大越好。 还要对多元线性回归方程的假设检验 包括:㈠模型检验和㈡偏回归系数检验:

至于如何剔除不显著项,这个有明确的指标:

多元线性回归方程中当涉及的自变量较多时,这些自变量可能并不是全部都对应变量有显著影响,同时有些自变量之间也可能相关的。通常情况下,我们希望将有统计学意义的自变量引入回归方程,以使方差更加简单,容易解释;更重要的是把不显著的自变量排除后可以使残差的均方减小,有理由揭示其他自变量的作用。为此可以使用三种变量筛选方法:

1.向后法(backward selection): 2.向前法(forward selection): 3.逐步法(stepwise selection):

现在大家主要做的就是3.逐步法(stepwise selection)。具体来说太多了建议你找本统计书看看。做很简单但是模型效果评价和其他参数的理解才是真正的关键。

这里简单介绍一下如何用Matlab做回归分析。 一、多元线性回归 regress函数:

比较复杂的输出用法:

[bbint r rint stats]=regress(y,X) 当然还可以设置信度(alpha).

Matlab对列资料矩阵处理,所以在开始准备数据的时候应该把预报量y和预报因子X矩阵放成列资料矩阵。在X矩阵的第一列应放置全是1的数,则求得的回归系数中包含常数项。 b是求得的回归系数(如果你在X矩阵左边加了一列1,则b中包含常数项b0),bint是回归系数95%的置信区间,r是残差,rint是残差95%的置信区间,stats包含4个参数:判定系数R方,F统计量的观测值,检验的p值,误差方差的估计值。 二、用Matlab实现逐步回归

用Matlab做逐步回归,非常的简单,如果你不设置特殊参数的话,只需要一步即可完成。

函数stepwise:

stepwise(X,y,inmodel,penter,premove) X和y也是竖资料阵,在用stepwise函数的时候不需要在X矩阵的第一列加入全是1的数。

该函数会自动加1。inmodel可以是一个与X列数相等的逻辑变量,也可以是一个下标变量。penter表示指定变量进入模型的最大显著性水平(默认值为0.05),小于这个值的变量不能被引入该模型。premove表示从模型中剔除变量的最小显著性水平(默认为penter和0.1的最大值),p值大于premove的变量被剔除。penter必须小于等于premove。

用这个函数做逐步回归非常的简单,可做交互式逐步回归分析。

首先准备X和y,把它们变成竖资料阵。然后调用stepwise函数。在界面中的具体各参数的意义就不多说了,有兴趣的可以help学习查看。

下面给出个例子。我用x1~x4 四个预报因子和预报量y做逐步回归分析。调用函数后如果你不关心中间过程,只需要点击右边的All steps,即可完成逐步回归。

图中可以看到,左侧有蓝线和红线,最左侧是预报因子x1~x4,蓝色表示引入的因子,而红色表示剔除的因子,所以x3因子被剔除。所得到的回归方程的系数为coeff.一列的数,常数项bo为下面的intercept。所以最后用逐步回归求得的回归方程为: y^=-31.8001-0.421296x1+1.12928x2+0.53148x4

本文来源:https://www.bwwdw.com/article/585o.html

Top