您的当前位置:首页正文

Matlab实现多元回归实例

2022-08-07 来源:九壹网
Matlab实现多元回归实例

合用标准文案

Matlab 实现多元回归实例

〔一〕一般多元回归

一般在生产实践和科学研究中, 人们获取了参数 x

数据,需要求出关系式

y

f

x1 , , xn 和因变量 y 的

若是只考虑

x ,这时就可以用到回归解析的方法。

x x1 , , xn

f 是线性函数的状况,当自变量只有一个时,即, x1 , , xn 中 n 1 时,称

中 n 2 时,称为多元

为一元线性回归,当自变量有多个时,即, 线性回归。

进行线性回归时,有 4 个根本假设:

① 因变量与自变量之间存在线性关系; ② 残差是独立的; ③ 残差满足方差奇性; ④ 残差满足正态分布。

x

在 Matlab 软件包中有一个做一般多元回归解析的命令 regeress ,调用格式 以下:

也许 [b, bint, r, rint, stats] = regress(y,X,alpha)

此时,默认 alpha = 0.05. [b, bint, r, rint, stats] = regress(y,X) 这里, y 是一个 n 1 的列向量, X 是一个 n

m

1 的矩阵,其中第一列是全 1 向

1 列向量对应回归方程的常数项〕 , 量〔这一点关于回回来说很重要,这一个全

一般状况下,需要人工造一个全 1 列向量。 回归方程拥有以下形式:

y

01 x1 m

x

m

其中, 是残差。

在返回项 [b,bint,r,rint,stats] ① b

0 1

中,

m 是回归方程的系数;

② b int 是一个 m 2 矩阵,它的第 i 行表示 i ③ r 是 n 1 的残差列向量; ④ r int 是 n

的 (1-alpha) 置信区间;

2 矩阵,它的第 i 行表示第 i 个残差 r i 的(1-alpha) 置信区间;

说明:残差与残差区间杠杆图, 最幸好 0 点线周边比较均匀的分布, 而不表现必然的规律性,若是是这样,就说明回归解析做得比较理想。

⑤ 一般的, stast返回 4 个值: R2 值、F_检验值、阈值 f ,与明显性概率相关的

p 值〔若是这个 p 值不存在,那么,只输出前

优秀文档

3 项〕。说明:

Matlab实现多元回归实例

合用标准文案

( 1〕一般说来, R2 值越大越好。

( 2〕人们一般用以下统计量对回归方程做明显性检验: F_检验、 t_ 检验、以及相关系数检验法。 Matlab 软件包输出 F_检验值和阈值 f 。一般说来, F_检验值

越大越好,特其余,应该有 F_检验值

f 。

alpha ,那么说明回归

〔 3〕与明显性概率相关的 p 值应该满足 p alpha 。若是 p

方程中有节余的自变量, 能够将这些节余的自变量从回归方程中剔除 〔见下面渐渐回归的内容〕。

这几个技术指标说明拟合程度的利害。 这几个指标都好, 就说明回归方程是有意义的。

例 1〔Hamilton ,1987〕数据以下:

序号

1 2 3 4

Y

X1

X2

5 6 7 8 9 10 11 12 13 14 15

第一步 解析数据

在 Matlab 软件 包中 解析 可否具 有线性关 系,并作图 观察, M— 文件 opt_hanmilton_1987 :

x1=[2.23,2.57,3.87,3.10,3.39,2.83,3.02,2.14,3.04,3.26,3.39,2.35,2.76,3.90,3.16]; x2=[9.66,8.94,4.40,6.64,4.91,8.52,8.04,9.05,7.71,5.11,5.05,8.51,6.59,4.90,6.96];

y=[12.37,12.66,12.00,11.93,11.06,13.03,13.13,11.44,12.86,10.84,11.20,11.56,10.83,12 .63,12.46]; corrcoef(x1,y); corrcoef(x2,y); plot3(x1,x2,y,

'*' );

获取结果: ans =

优秀文档

Matlab实现多元回归实例

合用标准文案

ans =

即,corrcoef(x1,y) =0.0025 ,corrcoef(x2,y) 单变量线性关系。图形以下:

= 0.4341 ,说明没有特别明显的

也看不出有线性关系,但是,旋转图形,能够看出所有点几乎在一个平面上。

这说明, y, x1, x2 在一个平面上,满足线性关系:

a1 x1 a2 x2 b y a

y a0 a1 x1 a2 x2

也许,换成一个常有的形式

其中, 是残差。于是,在 Matlab 软件包中做线性多元回归,写一个 M—文件 opt_regress_hamilton :

x1=[2.23,2.57,3.87,3.10,3.39,2.83,3.02,2.14,3.04,3.26,3.39,2.35,2.76,3.90,3.16]'; x2=[9.66,8.94,4.40,6.64,4.91,8.52,8.04,9.05,7.71,5.11,5.05,8.51,6.59,4.90,6.96]';

y=[12.37,12.66,12.00,11.93,11.06,13.03,13.13,11.44,12.86,10.84,11.20,11.56,10.83,12 .63,12.46]'; e=ones(15,1); x=[e,x1,x2];

[b,bint,r,rint,stats]=regress(y,x,0.05) rcoplot(r,rint)

其中, rcoplot 〔Residual case order plot

优秀文档

〕表示画出残差与残差区间的杠杆

Matlab实现多元回归实例

合用标准文案

图。执行后获取: b =

bint =

r =

rint =

stats =

1.0e+004 *

优秀文档

0

Matlab实现多元回归实例

合用标准文案

即, y 4.515 3.097x 1 1.0319x 2 。

置信度 95%,且 R2 1.0, F _ 检验值 39222

0 ,与明显性概率 0.05 相关的

p 0.0000 0.05 ,这说明,回归方程中的每个自变量的采用,都是有意义的。

残差杠杆图:

从杠杆图看出,所有的残差都在 0 点周边均匀分布,区间几乎都位于

之间,即,没有发现高杠杆点,也就是说,数据中没有强影响点、异常观察点。

综合起来看,以上回概括果〔回归函数、拟合曲线或曲面〕近乎圆满。

〔二〕渐渐回归

假设已有数据 X 和 Y,在 Matlab 软件包中,使用 stepwise 命令进行渐渐回

归,获取回归方程 Y

a1 X1 a2 X2 an X n,其中 是随机误差。 stepwise

命令的使用格式以下: stepwise(X,Y)

注意:应用 stepwise 命令做渐渐回归,数据矩阵 X 的第一列不需要人工加

一个全 1 向量,程序会自动求出回归方程的常数项〔 intercept 〕。

在应用 stepwise 命令进行运算时,程序不断提示将某个变量参加 〔 Movein 〕

Move out 〕。 回归方程,也许提示将某个变量从回归方程中剔除〔

说明:①使用 stepwise 命令进行渐渐回归,既有剔除变量的运算,也有引

入变量的运算,它 是目前应 用较为广 泛的一种多 元回归 方法。 ②在 运行 stepwise(X,Y) 命令时,默认明显性概率 0.05 。 例 2〔Hald,1960 〕Hald 数据是关于水泥生产的数据。某种水泥在凝固时放出的热量 Y 〔单位:卡/克〕与水泥中 4 种化学成分所占的百分比相关:

x1 : 3 Cao Al2 o3 x2 :3 Cao Sio2

x3 : 4 Cao Al 2 o3 Fe2 o3

x4 : 2 Cao Sio2

优秀文档

Matlab实现多元回归实例

合用标准文案

在生产中测得 13 组数据:

序号 X1 1 7 2 1 3 11 4 11 5 7 6 11 7 3 8 1

9 10 11 12 13

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

2 21 1 11 10 f X 。

求出关系式 Y

解:〔 1〕本问题涉及的数据是 5 维的,不能够画图观察。先做异常值解析。 X=[7,26,6,60;1,29,15,52;11,56,8,20;11,31,8,47;7,52,6,33;11,55,9,22;3, 71,17,6;1,31,22,44;2,54,18,22;21,47,4,26;1,40,23,34;11,66,9,12;10,68, 8,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,1 09.4]'; A=[X,Y];

mahal(A,A)

程序执行后获取结果: ans =

能够认为数据都是正常的。 〔 2〕一般多元回归。

在 Matlab 软件包中写一个 M—文件 opt_cement_1:

X=[7,26,6,60;1,29,15,52;11,56,8,20;11,31,8,47; 7,52,6,33;11,55,9,22;3,71,17,6;1,31,22,44;

优秀文档

Matlab实现多元回归实例

合用标准文案

2,54,18,22;21,47,4,26;1,40,23,34;11,66,9,12; 10,68,8,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]'; a1=ones(13,1); A=[a1,X];

[b,bint,r,rint,stat]=regress(Y,A) rcoplot(r,rint)

程序执行后获取: b =

bint =

r =

rint =

优秀文档

Matlab实现多元回归实例

合用标准文案

stat =

以及残差杠杆图:

于是,我们获取:

Y 62 .4054 1 .5511 x1

0 .5102 x2 0 .1019 x3 0.1441 x4

并且,残差杠杆图显示, 残差均匀分布在 0 点线周边,在 stat 返回的 4 个值中,

R2 = ,说明模型拟合的很好。 F_检验值= 111.4792>0.000 ,吻合要求。

但是,与明显性概率相关的 p 值= ,这说明,回归方程中有些变量能够剔除。

( 3〕渐渐回归

在 Matlab 软件包中写一个 M—文件 opt_cement_2: X=[7,26,6,60;1,29,15,52;11,56,8,20;11,31,8,47; 7,52,6,33;11,55,9,22;3,71,17,6;1,31,22,44; 2,54,18,22;21,47,4,26;1,40,23,34;11,66,9,12; 10,68,8,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]'; stepwise(X,Y)

程序执行后获取以下渐渐回归的画面:

优秀文档

Matlab实现多元回归实例

合用标准文案

X1

Coefficients with Error Bars

Coeff. t-stat p-val

X2

Move x4

X3

in

X4

-3

-2

-1

0

1

2

3

Model History

17 E 16 S M R

15

14

1

程序提示:将变量 x4 加进回归方程〔 Move x4 in 〕,点击 Next Step 按钮,即,进行下一步运算,将第 4 列数据对应的变量 x4 参加回归方程。点击 Next Step 按健后,又获取提示:将变量 x1 加进回归方程〔 Move x1 in 〕,点击 Next Step

按钮,即,进行下一步运算,将第

1 列数据对应的变量 x1 参加回归方程。点击

Next Step 按健后,又获取提示: Move No terms ,即,没有需要参加〔也没有需要剔除〕的变量了。

注意:在 Matlab7.0 软件包中,能够直接点击“ All Steps 〞按钮,直接求出结果〔省略中间过程〕 。

X1

Coefficients with Error Bars

2

Coeff. t-stat p-val

-1

0

1

X2

X3

intercept

X4

E S

M 10 R

0

Model History

20

1 2 3

最后获取回归方程〔蓝色行是被保存的有效行,红色行表示被剔除的变量〕

优秀文档

Matlab实现多元回归实例

合用标准文案

Y

103 097

. 1 43996

x1 . 0 613954

x4 .

回归方程中录取了原始变量 x1 和 x4 。模型评估参数分别为:

2

,修正的

2

值 R2

R 0 .972471

R

, 检验值=

0 964212 F_ .

,与明显性

概率相关的 p 值= 1 .58106

10 8

0 .05 ,残差均方 RMSE= 〔这个值越

小越好〕。以上指标值都很好,说明回归收效比较理想。

别的,截距 intercept=103.097 〔Intercept = the estimated value of the constant term 〕,这就是回归方程的常数项。

我们将 x1 , x4 , y 的数据放在一起画图观察:

X=[7,26,6,60;1,29,15,52;11,56,8,20;11,31,8,47;7,52,6,33;11,55,9,22;3,71,17,6;1,31,2 2,44;2,54,18,22;21,47,4,26;1,40,23,34;11,66,9,12;10,68,8,12];

10 0 -10 -20 -30 60 50 40 30 20 10

;

plot3(X(:,1),X(:,4),Y)

程序执行后获取图形:

20

15

10

5

0

不断旋转画面观察,图形大体是一个平面。

优秀文档

因篇幅问题不能全部显示,请点此查看更多更全内容