Matlab实现多元回归实例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Matlab 实现多元回归实例

(一)一般多元回归

一般在生产实践和科学研究中,人们得到了参数(),,n x x x =⋅⋅⋅1和因变量y 的数据,需要求出关系式()y f x =,这时就可以用到回归分析的方法。如果只考虑

f 是线性函数的情形,当自变量只有一个时,即,(),,n x x x =⋅⋅⋅1中n =1时,称

为一元线性回归,当自变量有多个时,即,(),,n x x x =⋅⋅⋅1中n ≥2时,称为多元线性回归。

进行线性回归时,有4个基本假定: ① 因变量与自变量之间存在线性关系; ② 残差是独立的; ③ 残差满足方差奇性; ④ 残差满足正态分布。

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

[b, bint, r, rint, stats] = regress(y,X,alpha) 或者

[b, bint, r, rint, stats] = regress(y,X) 此时,默认alpha = 0.05. 这里,y 是一个1n ⨯的列向量,X 是一个()1n m ⨯+的矩阵,其中第一列是全1向量(这一点对于回归来说很重要,这一个全1列向量对应回归方程的常数项),一般情况下,需要人工造一个全1列向量。回归方程具有如下形式:

011m m y x x λλλε=++⋅⋅⋅++

其中,ε是残差。

在返回项[b,bint,r,rint,stats]中, ①01m b λλλ=⋅⋅⋅是回归方程的系数;

②int b 是一个2m ⨯矩阵,它的第i 行表示i λ的(1-alpha)置信区间; ③r 是1n ⨯的残差列向量;

④int r 是2n ⨯矩阵,它的第i 行表示第i 个残差i r 的(1-alpha)置信区间; 注释:残差与残差区间杠杆图,最好在0点线附近比较均匀的分布,而不呈现一定的规律性,如果是这样,就说明回归分析做得比较理想。

⑤ 一般的,stast 返回4个值:2R 值、F_检验值、阈值f ,与显著性概率相关的p 值(如果这个p 值不存在,则,只输出前3项)。注释:

(1)一般说来,2R值越大越好。

(2)人们一般用以下统计量对回归方程做显著性检验:F_检验、t_检验、以及相关系数检验法。Matlab软件包输出F_检验值和阈值f。一般说来,F_检验值越大越好,特别的,应该有F_检验值f

>。

(3)与显著性概率相关的p值应该满足p alpha

>,则说明回归

<。如果p alpha

方程中有多余的自变量,可以将这些多余的自变量从回归方程中剔除(见下面逐步回归的内容)。

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

在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 =

1.0000 0.0025

0.0025 1.0000 ans =

1.0000 0.4341 0.4341 1.0000

即,corrcoef(x1,y)=0.0025,corrcoef(x2,y)=0.4341,说明没有非常明显的单变量线性关系。图形如下:

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

这说明,,1,2y x x 在一个平面上,满足线性关系:

1122a x a x b y a ε⋅+⋅+⋅=+

或者,换成一个常见的形式 01122y a a x a x ε=+⋅+⋅+

其中,ε是残差。于是,在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 )表示画出残差与残差区间的杠杆图。执

行后得到:

b =

-4.5154

3.0970

1.0319

bint =

-4.6486 -4.3822

3.0703 3.1238

1.0238 1.0399

r =

0.0113

-0.0087

-0.0102

-0.0069

0.0101

-0.0106

-0.0037

-0.0105

0.0049

-0.0136

0.0057

0.0163

-0.0023

0.0110

0.0071

rint =

-0.0087 0.0314

-0.0303 0.0128

-0.0301 0.0098

-0.0299 0.0162

-0.0106 0.0308

-0.0313 0.0102

-0.0252 0.0178

-0.0299 0.0089

-0.0174 0.0272

-0.0331 0.0058

-0.0161 0.0275

-0.0027 0.0354

-0.0236 0.0190

-0.0079 0.0299

-0.0156 0.0298

stats =

1.0e+004 *

0.0001 3.9222 0 0.0000

相关文档
最新文档