matlab多元線性回歸分析(MATLAB中regress函數用法(多元線性回歸))
2023-10-19
回歸分析是研究一個隨機變量與一個或多個普通變量之間的相關系的統計方法。如果做回歸分析,有很多軟件都已經封裝好了的,我們只需直接調用就可以了。例如Matlab中的regress()就是做線性回歸分析的函數之一。
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)說明b = regress(y,X) 返回向量 b,其中包含向量 y 中的響應對矩陣 X 中的預測變量的多元線性回歸的系數估計值。要計算具有常數項(截距)的模型的系數估計值,請在矩陣 X 中包含一個由 1 構成的列。[b,bint] = regress(y,X) 還返回系數估計值的 95% 置信區間的矩陣 bint。[b,bint,r] = regress(y,X) 還返回由殘差組成的向量 r。[b,bint,r,rint] = regress(y,X) 還返回矩陣 rint,其中包含可用于診斷離群值的區間。[b,bint,r,rint,stats] = regress(y,X) 還返回向量 stats,其中包含 R2 統計量、F 統計量及其 p 值,以及誤差方差的估計值。矩陣 X 必須包含一個由 1 組成的列,以便軟件正確計算模型統計量。[___] = regress(y,X,alpha) 使用 100*(1-alpha)% 置信水平來計算 bint 和 rint。您可以指定上述任一語法中的輸出參數組合。說明:b是線性方程的系數估計值,并且第一值表示常數,第二個值表示回歸系數。bint是系數估計值的置信度為95%的置信區間,r表示殘差,rint表示各殘差的置信區間,stats是用于檢驗回歸模型的統計量,有三個數值其中有表示回歸的R2統計量和F以及顯著性概率P值,alpha為置信度。相關系數r^2越大,說明回歸方程越顯著;與F對應的概率P<alpha時候拒絕H0,回歸模型成立。
實例1
例子:目標函數:y=Ax1^2+Bx2^2+Cx1+Dx2+Ex1*x2+F (這是一個二次函數,兩個變量,大寫的字母是常數)
程序
%導入數據 clc;clear all;close all;y=[7613.51 7850.91 8381.86 9142.81 10813.6 8631.43 8124.94 9429.79 10230.81 ... 10163.61 9737.56 8561.06 7781.82 7110.97]'; x1=[7666 7704 8148 8571 8679 7704 6471 5870 5289 3815 3335 2927 2758 2591]'; x2=[16.22 16.85 17.93 17.28 17.23 17 19 18.22 16.3 13.37 11.62 10.36 9.83 9.25]'; X=[ones(size(y)), x1.^2,x2.^2, x1, x2, x1.*x2]; %開始分析 [b,bint,r,rint,stats] = regress(y,X)%b儲存的是系數%bint儲存的是系數的區間值,我們叫做置信區間,就是說是系數可能存在的范圍,區間范圍越小越好%r是誤差,也叫殘差,rint是誤差的區間%stats分別對應4個檢驗,R?檢驗值、F檢驗值、p、絕對誤差的方差s?%R?越接近1說明擬合程度越好,F這個要查表,p這個一般小于0.05就可以了,s?越小越好%F小于標準值說明擬合結果和原數據相差不大,可接受plot3(x1,x2,y,'rp')%原始數據的散點圖title('原始數據的散點圖');rcoplot(r,rint);%作殘差分析圖title('殘差圖的繪制');xlabel('數據');ylabel('殘差');z = b(1)+b(2).*x1.^2+b(3).*x2.^2+b(4).*x1+b(5).*x2+b(6).*x1.*x2;%回歸模型figure;plot3(x1,x2,y,'rp');hold on;plot3(x1,x2,z,'b');%散點圖及回歸線title('散點圖及回歸線');
運行結果
b = 1.0e+04 * -1.3539 0.0000 -0.0058 -0.0006 0.4800 -0.0000bint = 1.0e+04 * -2.6219 -0.0859 0.0000 0.0000 -0.0276 0.0160 -0.0013 0.0001 0.1196 0.8404 -0.0001 0.0000r = -439.7667 -236.1417 -143.4644 -590.4204 751.1702 557.0807 -244.7861 49.4622 637.6996 -678.9521 274.4335 157.8124 -80.3534 -13.7737rint = 1.0e+03 * -1.2196 0.3401 -1.4263 0.9540 -0.9191 0.6322 -1.5688 0.3879 0.1114 1.3909 -0.5330 1.6472 -1.1689 0.6793 -0.9775 1.0765 -0.3985 1.6739 -1.4390 0.0811 -0.9192 1.4680 -1.0888 1.4044 -1.2712 1.1105 -1.0174 0.9898stats = 1.0e+05 * 0.0000 0.0001 0.0000 3.1622
實例2
加載 carsmall 數據集。確定權重和馬力作為預測變量,里程作為響應。
程序
clc;clear all;close all;% 加載 carsmall 數據集。確定權重和馬力作為預測變量,里程作為響應。load carsmallx1 = Weight;x2 = Horsepower; % Contains NaN datay = MPG;X = [ones(size(x1)) x1 x2 x1.*x2];b = regress(y,X) % Removes NaN datascatter3(x1,x2,y,'filled')hold onx1fit = min(x1):100:max(x1);x2fit = min(x2):10:max(x2);[X1FIT,X2FIT] = meshgrid(x1fit,x2fit);YFIT = b(1) + b(2)*X1FIT + b(3)*X2FIT + b(4)*X1FIT.*X2FIT;mesh(X1FIT,X2FIT,YFIT)xlabel('Weight')ylabel('Horsepower')zlabel('MPG')view(50,10)hold off
運行結果
b = 60.7104 -0.0102 -0.1882 0.0000
本文內容來源于網絡,僅供參考學習,如內容、圖片有任何版權問題,請聯系處理,24小時內刪除。