MATLAB 技术论坛
电子期刊
编辑:xiezhh
制作:MATLAB 技术论坛
版权:MatlabSky©版权所有
网址:http://www.matlabsky.com
第 3 期 2010.11 No.3
中国权威 MATLAB 论坛核心期刊
MATLAB 技术论坛简介
Matlab 技术论坛 | Simulink 仿真论坛 | ——打造优秀、专业和权威的 Matlab 技术交流平台!
¾ http://www.matlabsky.com /cn/net/org
论坛拥有 40 多个专业版块,内容涉及资料下载、视频教学、数学建模、科学计算、程序设计、GUI
开发、simulink 仿真、统计概率、拟合优化、扩展编程、算法研究、控制系统、信号通信、图像处理、经
济金融、生物化学、航空航天、人工智能、汽车设计、机械自动化、毕业设计等几十个方面!
论坛特色:
1.拥有强大的技术人员、热情严谨的管理团队
2.丰富多彩的Matlab电子资源免费共享
3.免费提供技术交流和在线解答
4.首个推出MATLAB函数百科中文帮助系统
5.国内唯一提供Matlab汉化包的团队
联系方式:
客服 QQ:1341692017
服务邮箱:matlabsky@gmail.com
支付宝账号:yuthreestone@163.com 郁磊
互动QQ群:http://www.matlabsky.com/thread-3-1-1.html
开通业务:
技术论坛:http://www.matlabsky.com
函数百科:http://wiki.matlabsky.com
官方博客:http://blog.matlabsky.com
读书频道:http://book.matlabsky.com
视频教程:http://video.matlabsky.com
有偿编程:http://paid.matlabsky.com
目 录
1 一元线性回归分析 ........................................................................................................................1
1.1 数据的散点图........................................................................................................................................ 2
1.2 调用 REGRESS函数作一元线性回归分析 ............................................................................................ 3
1.2.1.regress 函数的用法................................................................................................................................................. 3
1.2.2.调用 regress 函数作一元线性回归分析 ................................................................................................................ 4
1.2.3.残差分析 ................................................................................................................................................................ 6
1.3 调用 REGSTATS函数作一元线性回归分析........................................................................................... 7
1.3.1.regstats 函数的用法................................................................................................................................................ 7
1.3.2.调用 regstats 函数作一元线性回归分析 ............................................................................................................... 8
1.4 调用 ROBUSTFIT函数作稳健回归....................................................................................................... 11
1.4.1.robustfit 函数的用法 ............................................................................................................................................ 11
1.4.2.调用 robustfit 函数作稳健回归............................................................................................................................ 13
2 一元非线性回归分析 ...................................................................................................................14
2.1 数据的散点图...................................................................................................................................... 15
2.2 调用 NLINFIT函数作一元非线性回归分析........................................................................................ 16
2.2.1.nlinfit 函数的用法 ................................................................................................................................................ 16
2.2.2.选择合适的理论回归方程 ................................................................................................................................... 17
2.2.3.调用 nlinfit 函数作一元非线性回归分析............................................................................................................ 18
2.2.4.绘制一元非线性回归曲线 ................................................................................................................................... 18
2.2.5.参数估计值的置信区间....................................................................................................................................... 19
2.2.6.头围平均值的置信区间和观测值的预测区间 ................................................................................................... 19
2.3 利用曲线拟合工具 CFTOOL作一元非线性拟合 ................................................................................ 21
2.3.1.cftool 函数的调用方式......................................................................................................................................... 22
2.3.2.导入数据 .............................................................................................................................................................. 22
2.3.3.数据的平滑处理................................................................................................................................................... 23
2.3.4.数据筛选 .............................................................................................................................................................. 23
2.3.5.数据拟合 .............................................................................................................................................................. 24
2.3.6.绘图控制 .............................................................................................................................................................. 26
2.3.7.后处理 .................................................................................................................................................................. 27
3 多重回归分析..............................................................................................................................27
3.1 调用自编 REGLM函数作多重回归分析 ............................................................................................. 28
3.1.1.调用 reglm 函数作多重线性回归分析 ................................................................................................................ 28
3.1.2.调用 reglm 函数作二次回归分析 ........................................................................................................................ 30
3.1.3.拟合效果图........................................................................................................................................................... 31
3.2 调用 STEPWISE函数作逐步回归......................................................................................................... 31
3.2.1.stepwise 函数的用法 ............................................................................................................................................ 31
3.2.2.调用 stepwise 函数作逐步回归 ........................................................................................................................... 32
MATLAB 技术论坛电子期刊 第 3 期 ·1·
MATLAB 统计概率版块
资料来源:《MATLAB 统计分析与应用:40 个
案例
全员育人导师制案例信息技术应用案例心得信息技术教学案例综合实践活动案例我余额宝案例
分析》,谢中华编著,北
京航空航天大学出版社,2010 年 6 月。
数据拟合——回归分析
在很多实际问题中,通常会涉及很多变量,需要研究变量之间的关系,很多时候变量之间的关系是
不确定的,需要用一个函数来近似
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示这种关系。数据拟合就是根据变量的观测数据研究某些变量之间
的近似函数关系,用来帮助我们认识事物的内在规律和本质属性。本章将结合具体案例介绍用回归分析
方法进行数据拟合。
1 一元线性回归分析
现有全国 31 个主要城市 2007 年的气候情况观测数据,如表 1-1 所示。数据来源:中华人民共和国国
家统计局网站 2007 年环境统计数据。
表 1-1 全国 31个主要城市 2007年的气候情况观测数据
城 市 年平均气温
单位:℃
年极端最高气温
单位:℃
年极端最低气温
单位:℃
年均相对湿度
单位:%
全年日照时数
单位:小时
全年降水量
单位:毫米
序
号
北 京 14.0 37.3 -11.7 54 2351.1 483.9 1
天 津 13.6 38.5 -10.6 61 2165.4 389.7 2
石 家 庄 14.9 39.7 -7.4 59 2167.7 430.4 3
太 原 11.4 35.8 -13.2 55 2174.6 535.4 4
呼和浩特 9.0 35.6 -17.6 47 2647.8 261.2 5
沈 阳 9.0 33.9 -23.1 68 2360.9 672.3 6
长 春 7.7 35.8 -21.7 58 2533.6 534.2 7
哈 尔 滨 6.6 35.8 -22.6 58 2359.2 444.1 8
上 海 18.5 39.6 -1.1 73 1522.2 1254.5 9
南 京 17.4 38.2 -4.5 70 1680.3 1070.9 10
杭 州 18.4 39.5 -1.9 71 1472.9 1378.5 11
合 肥 17.4 37.2 -3.5 79 1814.6 929.7 12
福 州 21.0 39.8 3.6 68 1543.8 1109.6 13
南 昌 19.2 38.5 0.5 68 2102.0 1118.5 14
济 南 15.0 38.5 -7.9 61 1819.8 797.1 15
郑 州 16.0 39.7 -5.0 60 1747.2 596.4 16
武 汉 18.6 37.2 -1.5 67 1934.2 1023.2 17
长 沙 18.8 38.8 -0.5 70 1742.2 9364.0 18
广 州 23.2 37.4 5.7 71 1616.0 1370.3 19
南 宁 21.7 37.7 0.7 76 1614.0 1008.1 20
海 口 24.1 37.9 10.7 80 1669.1 1419.3 21
重 庆 19.0 37.9 3.0 81 856.2 1439.2 22
成 都 16.8 34.9 -1.6 77 935.6 624.5 23
贵 阳 14.9 31.0 -1.7 75 1014.8 884.9 24
2010 年 11 月 Matlab 数据拟合——回归分析 ·2·
昆 明 15.6 30.0 0.7 72 2038.6 932.7 25
拉 萨 9.8 29.0 -9.8 34 3181.0 477.3 26
西 安 15.6 39.8 -5.9 58 1893.6 698.5 27
兰 州 11.1 34.3 -11.9 53 2214.1 407.9 28
西 宁 6.1 30.7 -21.8 57 2364.7 523.1 29
银 川 10.4 35.0 -15.4 52 2529.8 214.7 30
乌鲁木齐 8.5 37.6 -24.0 56 2853.4 419.5 31
以上数据保存在文件 examp01_01.xls 中,下面根据以上 31 组观测数据研究年平均气温和全年日照时
数之间的关系。
1.1 数据的散点图
令 x表示年平均气温, 表示全年日照时数。由于y x和 均为一维变量,可以先从y x和 的散点图
上直观的观察它们之间的关系,然后再作进一步的分析。
y
通过以下命令从文件 examp01_01.xls 中读取变量 x和 的数据,然后作出y x和 的观测数据的散点
图(如图 1-1 所示),并求出
y
x和 的线性相关系数。 y
>> ClimateData = xlsread('examp01_01.xls'); % 从 Excel 文件读取数据
>> x = ClimateData(:, 1); % 提取 ClimateData 的第 1 列,即年平均气温数据
>> y = ClimateData(:, 5); % 提取 ClimateData 的第 5 列,即全年日照时数数据
>> plot(x, y, 'k.', 'Markersize', 15) % 绘制 x 和 y 的散点图
>> xlabel('年平均气温(x)') % 给 X 轴加标签
>> ylabel('全年日照时数(y)') % 给 Y 轴加标签
>> R = corrcoef(x, y) %计算 x 和 y 的线性相关系数矩阵 R
R =
1.0000 -0.7095
-0.7095 1.0000
6 8 10 12 14 16 18 20 22 24 26
500
1000
1500
2000
2500
3000
3500
年平均气温(x)
全
年
日
照
时
数
(y
)
图 1-1 年平均气温 x 与全年日照时数 y 的散点图
从散点图上看,有 4 组数据有些异常,它们分别是拉萨(9.8, 3181)、重庆(19, 856.2)、成都(16.8, 935.6)
MATLAB 技术论坛电子期刊 第 3 期 ·3·
和贵阳(14.9, 1014.8). 其中拉萨的全年日照时数最多,重庆、成都和贵阳的全年日照时数较少。除这 4 组
数据外,散点图表明 x和 的线性趋势比较明显,可以用直线y 0 1y xβ β= + 进行拟合。
从相关系数来看, x和 的线性相关系数为y 0.7095− ,表明 x和 负相关,这是一个非常有意思的
现象,全年日照时数越多的地方其年平均气温倒越低。
y
1.2 调用 regress 函数作一元线性回归分析
1.2.1.regress 函数的用法
MATLAB 统计工具箱中提供了 regress 函数,用来作多重线性或广义线性回归分析。对于可控变量
1 2, , , px x x" 和随机变量 的 次独立的观测y n 1 2( , , , ; ), 1, 2, ,i i ip ix x x y i n=" " y, 关于 1 2, , , px x x" 的
重广义线性回归模型如下:
p
N N N
1 11 2 12 1 11 1
1 21 2 22 2 22 2
1 1 2 2
( ) ( ) ( )
( ) ( ) ( )
.
( ) ( ) ( )
p p
p p
n n p np pn n
y
f x f x f xy
f x f x f xy
f x f x f xy
εβ
β ε
β ε
β ε
⎛ ⎞⎛ ⎞ ⎛ ⎞⎜ ⎟⎜ ⎟ ⎜ ⎟⎜⎜ ⎟ ⎜ ⎟= +⎜⎜ ⎟ ⎜ ⎟⎜ ⎟⎜ ⎟ ⎜ ⎟⎜ ⎟⎝ ⎠ ⎝ ⎠⎝ ⎠
X
"
"
# # # ## #
"������� ������
⎛ ⎞⎜ ⎟⎟⎜ ⎟⎟⎜ ⎟⎜ ⎟⎜ ⎟⎝ ⎠
(1.1)
通常假定 21 2, , , ~ (0, )
iid
n Nε ε ε σ" ,这里 iid 表示独立同分布。(1.1)式中的 为因变量观测值向量, 为
设计矩阵,
y X
1 2, , , pf f f" 为 个函数,对应模型中的 项,p p β 为需要估计的系数向量,ε 为随机误差向
量。
不同的函数 1 2, , , pf f " f i i对应不同类型的回归模型,特别地,当 1 1 1( ) ,f x x= i i2 2 2( ) ,f x x= ,"
( ) ,p ip ipf x x= 时,(1.1)式称为 重线性回归模型。一元线性回归是多重线性回归的特殊情
况。当模型中需要常数项时,设计矩阵 中应有 1 列 1 元素(通常是 的第一列)。
1, ,i = " n p
X X
regress 函数的调用方式如下:
b = regress(y,X)
[b,bint] = regress(y,X)
[b,bint,r] = regress(y,X)
[b,bint,r,rint] = regress(y,X)
[b,bint,r,rint,stats] = regress(y,X)
[…] = regress(y,X,alpha)
(1)b = regress(y,X)
返回多重线性回归方程中系数向量 β 的估计值 b,这里的 b 为一个 1p× 的向量。输入参数 y 为因变
量的观测值向量,是 的列向量。X 为1n× n p× 的设计矩阵。regress 函数把 y 或 X 中的不确定数据 NaN
作为缺失数据而忽略它们。
(2)[b,bint] = regress(y,X)
还返回系数估计值的 95%置信区间 bint,它是一个 2p× 的矩阵,第 1 列为置信下限,第 2 列为置信
上限。
(3)[b,bint,r] = regress(y,X)
还返回残差(因变量的真实值 减去估计值 )向量 r,它是一个iy ˆiy 1n× 的列向量。
(4)[b,bint,r,rint] = regress(y,X)
还返回残差的 95%置信区间 rint,它是一个 2n× 的矩阵,第 1 列为置信下限,第 2 列为置信上限。
rint 可用于异常值(或离群值)的诊断,若第 i组观测的残差的置信区间不包括 0,则可认为第 组观测值
为异常值。
i
(5)[b,bint,r,rint,stats] = regress(y,X)
还返回一个1 的向量 stats,其元素依次为判定系数4× 2R 、 F 统计量的观测值、检验的 值和误差p
2010 年 11 月 Matlab 数据拟合——回归分析 ·4·
方差 2σ 的估计值 2σˆ 。
(6)[…] = regress(y,X,alpha)
用 alpha 指定计算 bint 和 rint 时的置信水平为 100(1-alpha)% .
注意:当回归模型中需要常数项时,矩阵 X 中应有 1 列 1 元素。当需要计算判定系数 2R 、F 统
计量的观测值、 值时,模型中应包含常数项。若模型中不包含常数项,regress 函数输出的判定系数p
2R 、 F 统计量的观测值、 值是不正确的。在不考虑常数项的情况下,计算出的判定系数p 2R 的值可能
是负的,说明所用模型不适合用户的数据。
1.2.2.调用 regress 函数作一元线性回归分析
下面调用 regress 函数对 和y x作一元线性回归分析。
>> ClimateData = xlsread('examp01_01.xls'); % 从 Excel 文件读取数据
>> x = ClimateData(:, 1); % 提取 ClimateData 的第 1 列,即年平均气温数据
>> y = ClimateData(:, 5); % 提取 ClimateData 的第 5 列,即全年日照时数数据
>> xdata = [ones(size(x, 1), 1), x]; % 在原始数据 x 的左边加一列 1,即模型包含常数项
>> [b, bint, r, rint, s] = regress(y, xdata); % 调用 regress 函数作一元线性回归
>> yhat = xdata*b; % 计算 y 的估计值
% 定义元胞数组,以元胞数组形式显示系数的估计值和估计值的 95%置信区间
>> head1 = {'系数的估计值','估计值的 95%置信下限','估计值的 95%置信上限'};
>> [head1; num2cell([b, bint])]
ans =
'系数的估计值' '估计值的 95%置信下限' '估计值的 95%置信上限'
[ 3.1154e+003] [ 2.6592e+003] [ 3.5716e+003]
[ -76.9616] [ -105.9970] [ -47.9261]
% 定义元胞数组,以元胞数组形式显示 y 的真实值、y 的估计值、残差和残差的 95%置信区间
>> head2 = {'y 的真实值','y 的估计值','残差','残差的 95%置信下限','残差的 95%置信上限'};
% 同时显示 y 的真实值、y 的估计值、残差和残差的 95%置信区间
>> [head2; num2cell([y, yhat, r, rint])]
ans =
'y 的真实值' 'y 的估计值' '残差' '残差的 95%置信下限' '残差的 95%置信上限'
[2.3511e+003] [2.0379e+003] [ 313.1847] [ -461.6917] [1.0881e+003]
[2.1654e+003] [2.0687e+003] [ 96.7001] [ -686.1726] [ 879.5727]
[2.1677e+003] [1.9686e+003] [ 199.0501] [ -581.9400] [ 980.0403]
[2.1746e+003] [2.2380e+003] [ -63.4154] [ -840.7773] [ 713.9466]
[2.6478e+003] [2.4227e+003] [ 225.0768] [ -534.8155] [ 984.9692]
[2.3609e+003] [2.4227e+003] [ -61.8232] [ -826.3056] [ 702.6593]
[2.5336e+003] [2.5228e+003] [ 10.8268] [ -744.1662] [ 765.8198]
[2.3592e+003] [2.6074e+003] [-248.2309] [ -987.0492] [ 490.5873]
[1.5222e+003] [1.6916e+003] [-169.3882] [ -944.3372] [ 605.5608]
[1.6803e+003] [1.7762e+003] [ -95.9459] [ -876.4774] [ 684.5855]
[1.4729e+003] [1.6993e+003] [-226.3844] [ -999.5520] [ 546.7832]
[1.8146e+003] [1.7762e+003] [ 38.3541] [ -742.9172] [ 819.6253]
[1.5438e+003] [1.4992e+003] [ 44.6157] [ -719.2939] [ 808.5253]
[ 2102] [1.6377e+003] [ 464.2849] [ -289.2774] [1.2178e+003]
[1.8198e+003] [1.9610e+003] [-141.1537] [ -924.0249] [ 641.7175]
[1.7472e+003] [1.8840e+003] [-136.7921] [ -919.1600] [ 645.5757]
[1.9342e+003] [1.6839e+003] [ 250.3079] [ -520.9526] [1.0216e+003]
[1.7422e+003] [1.6685e+003] [ 73.7003] [ -702.2379] [ 849.6384]
MATLAB 技术论坛电子期刊 第 3 期 ·5·
[ 1616] [1.3299e+003] [ 286.1312] [ -451.5246] [1.0238e+003]
[ 1614] [1.4453e+003] [ 168.6888] [ -587.4691] [ 924.8467]
[1.6691e+003] [1.2606e+003] [ 408.4966] [ -311.0565] [1.1280e+003]
[ 856.2000] [1.6531e+003] [-796.9074] [-1.5087e+003] [ -85.1229]
[ 935.6000] [1.8224e+003] [-886.8229] [-1.5907e+003] [ -182.9957]
[1.0148e+003] [1.9686e+003] [-953.8499] [-1.6466e+003] [ -261.0701]
[2.0386e+003] [1.9148e+003] [ 123.8232] [ -659.2486] [ 906.8951]
[ 3181] [2.3612e+003] [ 819.8461] [ 118.1779] [1.5215e+003]
[1.8936e+003] [1.9148e+003] [ -21.1768] [ -805.6671] [ 763.3135]
[2.2141e+003] [2.2611e+003] [ -47.0039] [ -823.2940] [ 729.2863]
[2.3647e+003] [2.6459e+003] [-281.2117] [-1.0132e+003] [ 450.7301]
[2.5298e+003] [2.3150e+003] [ 214.8230] [ -553.8992] [ 983.5453]
[2.8534e+003] [2.4612e+003] [ 392.1961] [ -353.8710] [1.1383e+003]
% 定义元胞数组,以元胞数组形式显示判定系数、F 统计量的观测值、检验的 p 值和误差方差的估计值
>> head3 = {'判定系数','F 统计量的观测值','检验的 p 值','误差方差的估计值'};
>> [head3; num2cell(s)]
'判定系数' 'F 统计量的观测值' '检验的 p 值' '误差方差的估计值'
[ 0.5033] [ 29.3884] [7.8739e-006] [ 1.4689e+005]
从输出的结果看,常数项和回归系数的估计值分别为 3.1154e+003 和 -7.6962e+001,从而可以写出线
性回归方程为
ˆ 3115.4 76.962 .y x= −
回归系数估计值的 95%置信区间为[ . 105.997, 47.926]− −
对回归直线进行显著性检验,原假设和对立假设分别为
0 1 1 1: 0, : 0.H Hβ β= ≠
检验的 值为 7.8739e-006 < 0.01,可知在显著性水平p 0.01α = 下应拒绝原假设 ,可认为 (全年日
照时数)与
0H y
x(年平均气温)的线性关系是显著的。
也可以通过 F 统计量的观测值与临界值 (1, 2)F nα − 作比较得出结论,当 时,拒绝
原假设,认为 与
(1, 2)F F nα≥ −
y x的线性关系是显著的,否则接受原假设,认为 与y x的线性关系是不显著的。对于
本例, F 统计量的观测值为 29.388,临界值 0.01(1, 29) 7.5977F = ,显然在显著性水平 0.01α = 下应拒
绝原假设 . 0H
利用下面命令画出原始数据散点与回归直线图,如图 1-2 所示。
>> plot(x, y, 'k.', 'Markersize', 15) % 画原始数据散点
>> hold on
>> plot(x, yhat, 'linewidth', 3) % 画回归直线
>> xlabel('年平均气温(x)') % 给 X 轴加标签
>> ylabel('全年日照时数(y)') % 给 Y 轴加标签
>> legend('原始散点','回归直线'); % 加标注框
2010 年 11 月 Matlab 数据拟合——回归分析 ·6·
6 8 10 12 14 16 18 20 22 24 26
500
1000
1500
2000
2500
3000
3500
年平均气温(x)
全
年
日
照
时
数
(y
)
原始散点
回归直线
5 10 15 20 25 30
-1500
-1000
-500
0
500
1000
1500
Residual Case Order Plot
R
es
id
ua
ls
Case Number
图 1-2 原始数据散点与回归直线图 图 1-3 原始数据对应残差图
1.2.3.残差分析
通过对残差和残差的置信区间进行分析,可以看出原始数据中是否存在异常点,若残差的置信区间
不包括 0 点,可认为该组观测为异常点。为了直观,这里用 rcoplot 函数按顺序画出各组观测对应的残差
和残差的置信区间。作出的图如图 1-3 所示。
>> figure % 新建一个图形窗口
>> rcoplot(r,rint) %按顺序画出各组观测对应的残差和残差的置信区间
残差图的横坐标表示观测序号,纵坐标表示残差值的大小。图中的每条竖直线段对应一组观测的残
差和残差的置信区间,线段的中点处的圆圈所对应纵坐标为残差值的大小,线段的上端点的纵坐标为置
信上限,下端点的纵坐标为置信下限。从残差图可以看出有 4 条线段(红色虚线)与水平线 没有交
点,它们对应的观测序号分别为 22、23、24 和 26,也就是说这 4 组观测对应的残差的置信区间不包含 0
点,可认为这四组观测数据为异常数据。它们分别是拉萨(9.8, 3181)、重庆(19, 856.2)、成都(16.8, 935.6)
和贵阳(14.9, 1014.8),这和从散点图上直接观察的结果相吻合。
0y =
将以上四组异常数据剔除后重新作散点图(如图 1-4 所示),重新计算线性相关系数如下:
>> xt = x(y<3000 & y>1250); % 根据条件 y<3000 & y>1250 剔除异常数据
>> yt = y(y<3000 & y>1250);
>> figure % 新建一个空的图形窗口
>> plot(xt, yt, 'ko') % 画剔除异常数据后的散点图
>> xlabel('年平均气温(x)') % 为 X 轴加标签
>> ylabel('全年日照时数(y)') % 为 Y 轴加标签
>> Rt = corrcoef(xt, yt) % 重新计算相关系数矩阵
Rt =
1.0000 -0.8554
-0.8554 1.0000
剔除异常数据后, x和 的线性相关系数变为y 0.8554− ,线性相关性进一步增强。调用 regress 函数
重新计算,命令及结果如下:
>> xtdata = [ones(size(xt, 1), 1), xt]; % 在数据 xt 的左边加一列 1
% 调用 regress 函数对处理后数据作一元线性回归
>> [b, bint, r, rint, s] = regress(yt, xtdata);
>> b % 显示常数项和回归系数的估计值
b =
2.9838e+003
-6.3628e+001
MATLAB 技术论坛电子期刊 第 3 期 ·7·
>> s % 显示判定系数 、 F 统计量的观测值、 p 值和误差方差的估计值
s =
7.3178e-001 6.8206e+001 1.3088e-008 4.0508e+004
>> ythat = xtdata*b; % 重新计算 y 的估计值
此时的回归方程为 . 对回归直线进行显著性检验的 值为 1.3088e-008,可知
(全年日照时数)与
ˆ 2983.8 63.628y = − x p
y x(年平均气温)的线性关系更为显著。作出原始数据散点、原始数据对应的回
归直线和剔除异常数据后的回归直线图,如图 1-5 所示。
>> figure; % 新建一个图形窗口
>> plot(x, y, 'ko'); % 画原始数据散点
>> hold on; % 图形叠加
>> [xsort, id1] = sort(x); % 为了画图的需要将 x 从小到大排序
>> yhatsort = yhat(id1); % 将估计值 yhat 按 x 排序
>> plot(xsort, yhatsort, 'r--','linewidth',3); % 画原始数据对应的回归直线,红色虚线
>> plot(xt, ythat, 'linewidth', 3); % 画剔除异常数据后的回归直线,蓝色实线
>> legend('原始数据散点','原始数据回归直线','剔除异常数据后回归直线') % 为图形加标注框
>> xlabel('年平均气温(x)'); % 为 X 轴加标签
>> ylabel('全年日照时数(y)'); % 为 Y 轴加标签
6 8 10 12 14 16 18 20 22 24 26
1400
1600
1800
2000
2200
2400
2600
2800
3000
年平均气温(x)
全
年
日
照
时
数
(y
)
6 8 10 12 14 16 18 20 22 24 26
500
1000
1500
2000
2500
3000
3500
年平均气温(x)
全
年
日
照
时
数
(y
)
原始数据散点
原始数据回归直线
剔除异常数据后回归直线
图 1-4 剔除异常数据后的散点图 图 1-5 原始数据散点与两条回归直线图
图 1-5 中的圆圈为原始数据点,红色虚线为原始数据对应的回归直线,蓝色实线为剔除异常数据后的
回归直线。由于受异常数据的影响,两次回归结果并不相同。
1.3 调用 regstats 函数作一元线性回归分析
1.3.1.regstats 函数的用法
MATLAB 统计工具箱中提供了 regstats 函数,也可用来作多重线性或广义线性回归分析,它的调用方
式如下:
regstats(y,X,model)
stats = regstats(…)
stats = regstats(y,X,model,whichstats)
(1)regstats(y,X,model)
作多重线性回归分析。输入参数 X 为自变量观测值矩阵(或设计矩阵),它是 的矩阵。默认情
况下,regstats 函数自动在 X 第 1 列元素的左边加入一列 1,不需要用户自己添加。输入参数 y 为因变量
的观测值向量,是 的列向量。可选的输入参数 model 是一个字符串,用来控制回归模型的类型,其
n p×
1n×
2010 年 11 月 Matlab 数据拟合——回归分析 ·8·
可用的字符串如表 1-2 所示。
表 1-2 regstats函数支持的 model参数
model 参数的参数值 说 明
'linear' 带有常数项的线性模型(默认情况)
'interaction' 带有常数项、线性项和交叉项的模型
'quadratic' 带有常数项、线性项、交叉项和平方项的模型
'purequadratic' 带有常数项、线性项和平方项的模型
在这种调用方式下,regstats 函数会生成一个交互式图形用户界面(GUI),界面上带有回归诊断统
计量列表,包括系数的估计值、因变量的预测值、残差、判定系数、调整的判定系数、F 检验和 t检验的
相关结果等,共 23 个可选项。通过这个界面,用户可以很方便地将回归分析的各种结果导入 MATLAB
工作空间。
(2)stats = regstats(…)
返回一个结构体变量 stats,它有 24 个字段,