網頁

2019年6月26日 星期三

[MATLAB] 簡單直線迴歸:求斜率與截距

直線迴歸是很基本的一項統計功能,
MATLAB一定是有這項功能的,
只是要找到合用的,倒是花費了一番功夫。

此處介紹兩種迴歸的計算方式:

一、使用regstats指令

目標是用X,Y,求X對Y的預測迴歸公式,藉以得知斜率與截距。

result=regstats(y,x,'linear','beta');

x              是輸入一個陣列 (一行或一列,皆可)
y             也是輸入一個陣列
'linear'    這個輸入值有幾個選項,包括'linear''、'interaction'、'quadratic'、'purequadratic'
'beta'      這個輸入的選項非常多,請依照網頁 Statistics toolbox [前往連結]指示,填入。

如果不填'beta',譬如:regstats(y,x,'linear'),

那麼它會彈跳出一個視窗,問你要算哪些值,如下圖:


勾選後,按下OK,就可以。

如果填'beta',則不會有彈跳視窗,而是依照'beta'指令,而計算出數值,即:截距和斜率。
不只是'beta',也可以填入 {'leverage' 'standres' 'studres'},
讓它丟出跟迴歸有關的其他數值。

result=regstats(y,x,'linear','beta');
這個指令,會用result變數去接住丟出來的結果,
顯然它是個struct,點擊進去會看到beta
其中result.beta(1)=0.5142; 這個是截距。
至於result.beta(2)=0.0010; 這個是斜率。
依照從旁用Excel同步驗算,這個數值是正確無誤的。




二、fitlm指令

使用fitlm,也可以算出斜率和截距



顯然,結果顯示
截距是0.51417
斜率是0.0010207

那麼,我們要去哪裡取用呢?
原來它丟出來的是一個LinearModel的變數型態



點擊進去後,到變數區找找



它放在Coefficients裡面,繼續點擊進去



原來它在這兒阿,
截距是0.51417
斜率是0.0010207

想辦法取用到資料,就可以加速後續的統計運算囉!

再次提醒:
使用過程中,一定要記得先用已知資料,丟到Excel做驗算喔!

參考文獻
1. Statistics toolbox [前往連結]
2. regstatts函數如何正確使用?[前往連結]

沒有留言:

張貼留言