回覆列表
-
1 # 天氣熱等煙雨的檸檬
-
2 # WZYY4EVER
1、第一步我們開啟matlab,在命令列視窗中輸入“x=[143 144 145 147 148 150 153 154 155 156 157 158 159 160 161 162]";X=[ones(16,1),x];Y=[87 85 88 91 92 90 93 95 98 98 97 95 97 99 100 102]";[b,bint,r,rint,stats]=regress(Y,X)”,其中需要注意的是Y,X都是列向量,x後面加"是進行轉置,將行向量轉成列向量,如下圖所示:
2、第二步我們可以看一下b的值,其中方程常數B0=-20.7500,變數係數B1=0.7500,置信區間是[-42.1526,0.6526]和[0.6105,0.8895],R的平方為0.9047,F為132.8768,P為0.0000,其中R的平方越接近於1代表迴歸模型越準確,P<0.5也代表Y=-20.7500+0.7500X方程成立,如下圖所示:
3、第三步我們也可以繪製出圖形,來看一下效果,t為樣本數量,y_fitting為擬合的值,透過plot(t,y_fitting,"r-",t,Y(t,:),"b-",t,abs(y_fitting-Y(t,:)),"k-");繪製出Y實際值曲線和擬合值曲線,以及殘差曲線,如下圖所示:
4、第四步我們也可以將殘差的置信區間上限,下限繪製出來,如下圖所示:
5、第五步執行指令碼,我們可以看到多元線性迴歸的擬合效果,兩條曲線已經比較接近了,如下圖所示:
6、第六步我們可以看到殘差值都在置信區間上限,下限裡面,代表迴歸模型正常,如下圖所示:
應用中經常碰到多因子的問題,即多元線性迴歸。下面給大家介紹一下matlab怎麼求多元線性迴歸方程係數。
1、對於多元線性迴歸方程係數的求解,通常使用matlab中自帶的函式regress來求。首先需要建立一個函式:function dy_beta=dyxxgxs(X,y); X,y是輸入的兩個引數,自變數和因變數,如圖所示:
2、然後檢測輸入的因變數和自變數是否正確,如圖所示~=是不等於的意思,如果不等於則報錯。if nargin~=2 erro("需要輸入因變數和自變數")end
3、接下來,需要求X自變數和y因變數的行列數,使用[m n]=size();如圖所示[n q]=size(X);[n1 q1]=size(y);%求變數的行列數。
4、檢驗自變數和因變數的行是否相等,檢測自變數y是否為列向量,如圖所示if n~=n1, error("輸入引數y的行數,必須等於輸入引數X的行數.");endif collhs~=1, error("輸入引數y應該是一個列向量")。
5、需要對自變數X進行新增一列1的資料,將資料寫成矩陣形式,需要一列1的資料才能得到正確的結果。B=[ones(n,1),X];
6、最後就是求多元線性迴歸模型的係數,即公式dy_beta=B\y;即可得到係數引數,如圖所示