摘要:本文基于MATLAB7.4,給出了在MATLAB實現一元線性回歸的多種方式。
關鍵詞: MATLAB;regress;polyfit;cftool
1. 引言
回歸分析,是對現有數據進行處理、從中發現有用信息的一種重要手段。而線性回歸,特別是一元線性回歸分析更是人們優先考慮采用的方式。基于此,本文就一元線性回歸的MATLAB實現作了一番探討,給出了多種實現方式,并通過一個實例加以具體展示,在數據處理時可根據自己的需要靈活地加以選用。
2. regress命令
regress命令,是MATLAB中用來進行多元線性回歸的基本命令,此命令當然也可以用來處理一元線性回歸。
例1為研究某一化學反應過程中,溫度x(oC)對產品得率y(%)的影響,測得數據如下。
表-1 溫度對得率表
解>>x=[100 110 120 130 140 150 160 170 180 190];
>>y=[45 51 54 61 66 70 74 78 85 89];
>>plot(x,y,'*') %畫散點圖以選擇回歸類型
>>X=[ones(10,1),x']
>> [b,bint,r,rint] = regress(y',X);
>> b
b =
-2.7394
0.4830
>> plot(x,y,'*');lsline%在散點圖上追加最小二乘擬合直線圖
圖-1 散點圖 回歸直線圖
3. polyfit
polyfit(x,y,n)是MATLAB中用n次多項式擬合數據的通用命令,當取n=1時即可得到線性擬合的系數。仍以例1為例:
>> x=[100 110 120 130 140 150 160 170 180 190];
>> y=[45 51 54 61 66 70 74 78 85 89];
>> b2=polyfit(x,y,1)
b2 =
0.4830 -2.7394
4. lsqcurvefit
lsqcurvefit是MATLAB中利用最小二乘法——用自己選定的曲線去擬合所給數據的命令,如果我們人為指定曲線為直線,則可利用該命令實現事實上的線性擬合。以例1為例,其實現方式為:
>> x=[100 110 120 130 140 150 160 170 180 190];
y=[45 51 54 61 66 70 74 78 85 89];
>> p0 = [100,-1]; % Starting guess
>> [p,resnorm] = lsqcurvefit(@yyxxhg,p0,x,y)
Optimization terminated: first-order optimality less than OPTIONS.TolFun,
and no negative/zero curvature detected in trust region model.
p =
-2.73940.4830
resnorm =
7.2242
注:要用該命令實現線性回歸,需事先將如下內容保存為yyxxhg.m:
【function F = yyxxhg(p,x)
F = p(1)+x.*(p(2));】
5. 左除命令“\\”
如果數據計算量較大,為提高運算速度,可直接利用MATLAB的左除命令“\\”來處理,以例1為例,其使用方式為:
>> x=[100 110 120 130 140 150 160 170 180 190]';
>> y=[45 51 54 61 66 70 74 78 85 89]';
>>A=[ones(size(x),1),x];
>>coef=A\\y
Warning: Input arguments must be scalar.
coef =
-2.7394
0.4830
6. cftool
cftool是MATLAB中一個曲線擬合(curve fitting)工具箱圖形界面,可根據界面提示一步步操作,直至得到自己想要的結果。對例1,其實現的方式為:
>> x=[100 110 120 130 140 150 160 170 180 190];
>> y=[45 51 54 61 66 70 74 78 85 89];
>> cftool %調出曲線擬合工具箱,然后在出現的對話框中點擊其中的“Data”按鈕,又出現如圖-2所示的對話框,然后,在“X Data”處點擊下拉箭頭,選擇前面在命令窗口中輸入的身高變量x,在“Y Data”處點擊下拉箭頭,選擇前面在命令窗口中輸入的腿長變量y,在“Data set name”處鍵入“腿長-身高”,此時,下面的“Creat data set”按鈕由灰變黑,點擊該按鈕,即得到如下數據的散點圖。再在散點圖對話框中點擊上方的“Fitting”按鈕,會出現如圖-3所示的Fitting對話框,點擊左上方的“New fit”按鈕,在接下來出現的“Polynomial”小對話框中選擇“linear polynomial”(默認選項),然后點擊該小對話框下方的按鈕“Apply”,即可得到回歸直線的方程圖形及相關參數(圖-4)。
在“Fitting”對話框中的“Results”小對話框中顯示所得的回歸直線的方程為y=0.483x-2.739。
本文對MATLAB中能夠實現一元線性回歸的常用命令簡單地做了一下小結,限于筆者目前對MATLAB的認識水平,有些命令的運行機理還不是十分清楚,這一問題將留待另文探討。
參考文獻:
[1] 盛驟,謝式千,潘承毅. 概率論與數理統計[M]. 北京: 高等教育出版社, 2001.
[2] 陳桂明,戚紅雨,潘偉. MATLAB數理統計(6.x)[M]. 北京: 科學出版社, 2002.
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。