赞
踩
Matlab 统计工具箱用命令 regress
实现多元线性回归,用的方法是最小二乘法,用
法是:
b
=
r
e
g
r
e
s
s
(
Y
,
X
)
b=regress(Y,X)
b=regress(Y,X)
其中 Y,X 为按(22)式排列的数据,b 为回归系数估计值
β
^
0
,
β
^
1
,
⋯
 
,
β
^
m
\widehat{\beta}_{0},\widehat{\beta}_{1},\cdots,\widehat{\beta}_{m}
β
0,β
1,⋯,β
m
Matlab命令:
[
b
,
b
i
n
t
,
r
,
r
i
n
t
,
s
t
a
t
s
]
=
r
e
g
r
e
s
s
(
Y
,
X
,
a
l
p
h
a
)
[b,bint,r,rint,stats]=regress(Y,X,alpha)
[b,bint,r,rint,stats]=regress(Y,X,alpha)
这里 Y,X 同上;
alpha 为显著性水平(缺省时设定为 0.05);
b,bint 为回归系数估计值和它们的置信区间;
r,rint 为残差(向量)及其置信区间;
stats 是用于检验回归模型的统计量,有四个数值,第一个是
R
2
R^2
R2,第二个是
F
F
F,第三个是与
F
F
F 对应的概率
p
p
p ,
p
<
α
p< α
p<α 拒绝
H
0
H_0
H0 ,回归模型成立,第四个是残差的方差
S
2
S^2
S2.
残差及其置信区间可以用 r c o p l o t ( r , r i n t ) rcoplot(r,rint) rcoplot(r,rint)命令画图。
x=[0.1:0.01:0.18]'; y=[42.0 41.5 45.0 45.5 45.0 47.5 49.0 55.0 50.0]'; plot(x,y,'+') %画出散点图,查看其大致符合的回归方程 x=[ones(9,1),x]; [b,bint,r,rint,stats]=regress(y,x) %多元线性回归命令 rcoplot(r,rint) %画出残差图及其置信区间 %由残差图可知除第 8 个数据外其余残差的置信区间均包含零点,第 8 个点应视为异常点; %所以应删去第8个点 x(8,:)=[]; %删去x矩阵第8行所有的数据 y(8)=[]; %删去y矩阵第9个数据 [b,bint,r,rint,stats]=regress(y,x) rcoplot(r,rint) %画出残差图及其置信区间
(1)一元多项式回归可用命令
polyfit
实现
MATLAB命令
[ p , s ] = p o l y f i t ( x 1 , y 1 , n ) [p,s]=polyfit(x1,y1,n) [p,s]=polyfit(x1,y1,n)
p p p:拟合多项式的系数
s s s:误差估计结构体,主要用作 p o l y v a l polyval polyval 函数的输入,以获取误差估计值
包含:
R R R V a n d e r m o n d e Vandermonde Vandermonde 矩阵 x x x 的 Q R QR QR 分解的三角因子
d f df df 自由度
n o r m r normr normr 残差的范数
n n n:多项式的阶数
(2)拟合交互式画面
MATLAB命令:
p o l y t o o l ( x 0 , y 0 , n ) polytool(x0,y0,n) polytool(x0,y0,n)
x 0 , y 0 x0,y0 x0,y0:均为数据
n n n:多项式的阶数
功能:在画面中绿色曲线为拟合曲线,它两侧的红线是 y 的置信区间。你可以用鼠标移动图中的十字线来改变图下方的 x 值,也可以在窗口内输入,左边就给出 y 的预测值及其置信区间。通过左下方的Export下拉式菜单,可以输出回归系数等。
(3)对ployfit拟合的函数进行评价与估计
MATLAB命令:
[ Y , D E L T A ] = p o l y c o n f ( p , x , S , a l p h a ) [Y,DELTA]=polyconf(p,x,S,alpha) [Y,DELTA]=polyconf(p,x,S,alpha)
alpha缺省时为0.05。
p p p: p o l y f i t polyfit polyfit 函数的返回值;
x x x : p o l y f i t polyfit polyfit 函数的x值相同;
S S S: p o l y f i t polyfit polyfit函数的返回值中的 S S S相同
功能:求 p o l y f i t polyfit polyfit 所得的回归多项式在 x x x 处的预测值 Y Y Y 及预测值的显著性为 1 − a l p h a 1-alpha 1−alpha 的置信区间 D E L T A DELTA DELTA;用于多项式评价和置信区间估计,对 p l o y f i t ployfit ployfit 拟合的函数进行评价与估计
解:代码如下:
x1=[17:2:29];
x1=[x1,x1];
y1=[20.48 25.13 26.15 30.0 26.1 20.3 19.35 24.35 28.11 26.3 31.4 26.92 25.7 21.3];
[p,s]=polyfit(x1,y1,2);
%一元多项式回归
[y,delta]=polyconf(p,x1,s);
%[Y,DELTA]=polyconf(p,x,S,alpha)求polyfit所得的回归多项式在x处的预测值Y及预测值的显著性为1-alpha的置信区间DELTA;
%alpha缺省时为0.05。它假设polyfit函数数据输入的误差是独立正态的,并且方差为常数。
%p是polyfit函数的返回值;x和polyfit函数的x值相同;S和polyfit函数的S值相同
polytool(x1,y1,2)
%画出拟合交互式画面
Ⅱ、多项式回归
交互式画面的左下方有两个下拉式菜单,一个菜单Export用以向Matlab工作区传送数据,包括beta(回归系数),rmse(剩余标准差),residuals(残差)。
解:代码如下:
x1=[120 140 190 130 155 175 125 145 180 150]; x2=[100 110 90 150 210 150 250 270 300 250]; y=[102 100 120 77 46 93 26 69 65 85]; %多元线性回归法 x=[ones(10,1),x1',x2']; y=y'; [b,bint,r,rint,stats]=regress(y,x); %多元线性回归 rcoplot(r,rint); %画出残差图及其置信区间 %由regress命令运算结果可知:R的平方较小,bint的一个区间内包含零点,故多元线性回归法不适用 %多元二项式回归 x1=x1'; x2=x2'; x=[x1 x2]; y=y'; rstool(x,y,'purequadratic') %纯二次二项式回归
(下面例题中表4未截取完全,数据在代码中)
解
data=[398 138 56.205 12.112 49.895 76.862 228.90 98.205 5540.39 369 118 59.044 9.330 16.595 88.805 177.45 224.953 5439.04 268 129 56.723 28.748 89.182 51.297 166.40 263.032 4290.00 484 111 57.862 12.891 106.738 39.747 285.05 320.928 5502.34 394 146 59.117 13.381 142.552 51.651 209.30 406.989 4871.77 332 140 60.111 11.085 61.287 20.547 180.05 246.996 4708.08 336 136 59.839 24.957 -30.385 40.153 213.20 328.436 4627.81 383 104 60.052 20.809 -44.586 31.645 200.85 298.456 4110.24 285 105 63.141 8.485 -28.373 12.457 176.15 218.110 4122.69 277 135 62.302 10.730 75.723 68.307 174.85 410.467 4842.25 456 128 64.922 21.874 144.030 52.453 252.85 93.006 5740.65 355 131 64.857 23.506 112.904 76.677 208.00 307.226 5094.10 364 120 63.591 13.894 128.347 96.067 195.00 106.792 5383.20 320 147 65.614 14.865 10.097 47.979 154.05 304.921 4888.17 311 143 67.022 22.494 -24.760 27.231 180.70 59.612 4003.13 362 145 66.904 23.269 116.748 72.668 219.70 238.986 4941.96 408 131 66.184 13.035 120.406 62.312 234.65 141.074 5312.80 433 124 67.865 8.033 121.823 24.712 258.05 290.832 5139.87 359 106 68.889 27.048 71.055 73.912 196.30 413.636 5397.36 476 138 71.417 18.220 4.186 63.273 278.85 206.454 5149.47 415 148 69.277 7.742 46.935 28.676 207.35 79.566 5150.83 420 136 69.733 10.136 7.621 91.363 213.20 428.982 4989.02 536 111 73.162 27.370 127.509 74.016 296.40 273.072 5926.86 432 152 73.365 15.528 -49.574 16.162 245.05 309.422 4703.88 436 123 73.050 32.491 100.098 42.998 275.60 280.139 5365.59 415 119 74.910 19.712 -40.183 41.134 211.25 314.548 4630.09 462 112 73.200 14.835 68.153 92.518 282.75 212.058 5711.86 429 125 74.161 11.369 87.963 83.287 217.75 118.065 5095.48 517 142 74.283 26.751 27.098 74.892 306.90 344.553 6124.37 328 123 77.140 19.603 59.343 87.510 210.60 140.872 4787.34 418 135 78.591 34.688 141.969 74.471 269.75 82.855 5035.62 515 120 77.093 23.202 126.420 21.271 328.25 398.425 5288.01 412 149 78.231 35.739 29.558 26.494 258.05 124.027 4647.01 455 126 77.929 21.589 18.007 94.631 232.70 117.911 5315.63 554 138 81.039 19.569 42.352 92.544 323.70 161.250 6180.06 441 120 79.848 15.503 -21.558 50.048 267.15 405.088 4800.97 417 120 80.639 34.923 148.450 83.180 257.40 110.740 5512.13 461 132 82.284 26.549 -17.584 91.221 266.50 170.392 5272.21]; %全模型:以x1~x8为全部自变量,采用最小二乘法拟合一个多元回归模型: %$ [n,m]=size(data); % n为行数,m为列数 m=m-1; x=[ones(38,1),data(:,1:8)]; y=data(:,9); [b,bint,r,rint,stats]=regress(y,x); %stats(4)返回的是残差的样本方差 r2=stats(1); %提出复判定系数n-1 ad_r2=1-(1-r2)*(n-1)/(n-m-1); %调整复判断系数 f=stats(2) %提出 F 统计量 tm=inv(x'*x); %计算 X'*X的逆矩阵 tm=diag(tm); %提出逆矩阵的对角线元素、 rmse=sqrt(stats(4)) %计算剩余标准差(残差的样本标准差) t=b./sqrt(tm)/rmse %求8个自变量模型的t检验结果 %对自变量集合进行调整:向前选择变量法: %$ [n,m]=size(data); TT=[]; for i=2:8 x=[ones(38,1),data(:,[1,i])]; [b,bint,r,rint,stats]=regress(y,x); %stats(4)返回的是残差的样本方差 tm=inv(x'*x); %计算 X'*X的逆矩阵 tm=diag(tm); %提出逆矩阵的对角线元素、 rmse=sqrt(stats(4)) %计算剩余标准差(残差的样本标准差) t=b./sqrt(tm)/rmse %求t统计量的值 TT=[TT,t]; end ts=TT(3,:) %求各个新加入变量的t检验值 pr=ts./sqrt(ts.^2+n-3) %计算偏相关系数 %由计算结果可知,x6的偏相关系数最大,选择偏相关系数最大的自变量x6进入模型,并且在以x1,x6为自变量的模型中,x6的t 检验通过。前面已经指出,tj的平方 即等于对 xi的偏 F 检验值。 %完全同于第1步,可以进行后续变量的选择。模型在第3步终止计算
x0=[1 7 26 6 60 78.5 2 1 29 15 52 74.3 3 11 56 8 20 104.3 4 11 31 8 47 87.6 5 7 52 6 33 95.9 6 11 55 9 22 109.2 7 3 71 17 6 102.7 8 1 31 22 44 72.5 9 2 54 18 22 93.1 10 21 47 4 26 115.9 11 1 40 23 34 83.8 12 11 66 9 12 113.3 13 10 68 8 12 109.4]; x=x0(:,2:5); y=x0(:,6); stepwise(x,y,[1:4]);
得到Stepwise窗口后,点击下图圈出的部分
然后得到下图:
图中:蓝色表示有关,红色表示无关。同时表示已移去与
y
y
y 相关性不显著的自变量的结果.
来自司守奎《数学建模算法与应用》,仅做个人练习所用
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。