simple linear regression詳解
這裡主要是想詳細說明一下有關linear regression的知識,包括其中蘊含的數學知識和計算過程,為自己今後學習打下基礎,也希望分享給需要的人。部分圖片與公式來源於網上。
首先說明什麼是simple linear regression,
一個變數x,中文叫自變數吧,英文:predictor,explantory,independent variable
另一個變數y,中文為因變數,英文:response,outcome,dependent variable
當然這裡都是統計意義上的,所以說是自變數與因變數也不是很合適,我們還是用英文表示。形式上就是Y=B0+B1*X
一般在拿到資料的時候,先用matlab或者其他軟體畫出散點圖,如下圖,肉眼看一下是否具有線性關係。
下面我們首先看看如何利用這些樣本點,做出一個比較好的線性迴歸方程,也就是求出B0,B1的最優值。
這裡我們假設利用樣本點得到的最優方程為:
這裡採用小寫表示是樣本值,那麼為了衡量這個估計是否是好的,定義如下引數預測誤差(prediction error,residual error):
通常情況下我們採用均方誤差最小準則(least squares criterion)來確定迴歸方程(當然也有別的)。公式如下:
這個Q函式以b0和b1為自變數的函式,即將方程引數求解問題轉化為求該函式取最小值時,對應的自變數的值的問題。
第一種方法想到求偏導,然後另偏導數為0,得到解,為了顯示基礎性我還是手寫以下計算過程:
下面我們來進一步從預測誤差來討論,下面公式與之前多了一個期望值,其實很好理解,我們在迴歸分析的時候用的是樣本y,並且把它當做是總體的期望來做的,當然存在誤差了。
每一個樣本點都伴隨一個誤差項,在進行分析的時候,我們會有如下假設這些誤差項是具有相同方差的,並且之間相互獨立;另外對於每一個給定的xi,Y還要近似服從正態分佈。至於為什麼要這樣假設,這是因為要滿足線性關係以及簡化模型所需要的假設,譬如如果不同點之間的誤差項方差很大,這樣不同點就很難連線成一條直線,即使做出的直線也可能難以很好反應模型,當然實際資料中這些前提條件不可能完全滿足。我們可以通過做出residual plot 誤差項圖來看一下是否滿足這些條件:
如下兩個圖所示:第一個橫座標是x,縱座標是誤差項,可以看出基本上在一條線上下比較均勻分佈,可以認為資料還是比較符合用線性迴歸模型的,第二個則不均勻,則你要考慮用別的非線性模型了.
這個誤差項的方差記為,那麼這個方差就可以說明每一個樣本點xi,對應的yi與估計的y值偏差的範圍有多少。下面兩個圖就可以清楚說明不同大小的情況。
下面定義均方誤差(mean square error,MSE)計算如下:(分母是自由度)
將其開根號為標準誤差(regression standard error,residual standard error),
這些值得大小可以部分說明迴歸效果。
下面繼續定義引數:從上到下分別為
迴歸平方和(regression sum of squares,SSR)
誤差平方和(error sum of squares,SSE)
總離差平方和(total sum of squares,SSTO)
r-squared value 也叫做coefficient of determination
另外說明一點,x與y相關並不能表示是x的變化導致了y的線性關係,也就是不一定存在因果關係,而只是資料上相關而已。
這裡r值反應的就是這種線性相關程度。當r=0時,擬合曲線為水平直線,表明x與y不存線上性關係。
下面我們來說明為什麼SSR在總的平方和總佔的比例越大,則說明線性關係越好,SSE與上面的MSE是一個東西,表示的是樣本值與擬合值之間差異的大小,也就是之間的誤差了,當然誤差不僅僅存在於樣本值與擬合值之間,由於我們的樣本與總體之間也有誤差,而總體的估計我們是取了平均,可以類似用y平均來表示,所以SSR表示的是估計值與總體之間的誤差,當然估計值與總體之間誤差佔的比例越大,就說明了線性關係更好,這裡我自己說的都暈了其實,還是上圖吧。
上面兩個樣本,哪一個迴歸好呢?
第一個結果是綠色樣本的:
第二個是紅色樣本的:
首先可以看出來,兩個的均方誤差的差異,而其差異表現在圖中就是樣本點與擬合直線的距離,
看看實際中紅色擬合的曲線,感覺是不是不是很好反應樣本資料,表現在r-squared值上就是比較小。
繼續定義相關係數(correlation coefficient,r)同樣表示變數之間的線性相關程度,至於為什麼要用r-squared與r兩個引數,我認為r這個引數無量綱,並且其取值為-1到1,可以用正負反應是正線性相關還是負線性相關。其具體計算如下:
另外從網上搜集了一些注意事項,為了寫的全面點,還是說一下吧:
(1)r值接近於0只是代表無線性相關,但是可以有非線性相關
(2)用線性模型取擬合數據得到的r值比較大,並不能很好說明迴歸方程很好的擬合了資料,可能是你的資料本來比較少,而線性模型剛好符合這一小段的資料,並不能很好的起到預測資料的作用
(3)r值得大小很可能受到極端樣本點的影響,也就是可能是極端樣本點造成了r值很小,而實際去掉極端點後用線性模型擬合效果很好。
以上基本上對於簡單線性迴歸問題的引數求解,以及部分引數說明進行了解釋,但是上面的引數都是通過樣本點計算出來的,如果換一組樣本值將得到不同的結果,因此並不能全面說明該模型的擬合效果,下面從假設檢驗和區間估計的方向去考慮問題:
一般情況下我們會控制第一類風險,也就是若實際中原假設為真,但是我們判斷為原假設為假時的錯誤概率比較小,通常這個概率也叫做顯著水平(一般為0.05),也就是說如果我們通過樣本資料得到的結論是拒絕原假設,當然我們希望我們拒絕它是正確的,因此拒絕成功的概率就是1-顯著水平。
(1)t分佈假設檢驗:
第一步提出假設:
null hypothesis 原假設: 總體相關係數(population correlation coefficient)為0。
alternative hypothesis 備擇假設:不為0。
第二步計算假設檢驗量:
這裡統計量t服從n-2的t分佈,至於如何具體推導,我準備後面再寫出來,這裡直接給結論,畢竟也沒有那麼數學化。
第三步做出判決:
利用其得到的P-value,當P-value小於顯著水平時則拒絕原假設。
(2)F分佈假設檢驗:
其目的仍然是利用假設檢驗與區間估計的思想,構造統計量F
然後計算出概率值,因為這方面的數學知識我都忘記了,準備後面一起補上,所以這裡直接給一個連結,想具體瞭解的可以去看:linear regression
到了這裡我們可以解釋一下所有利用matlab fitlm函式得到的結論中出現的各個引數含義:
這裡我們從頭開始計算,並且附上簡單程式碼:這裡還是用前面綠色樣本所得到的資料結果分析(為了方便我在這裡同樣放一張圖):
首先:(intercept,z)分別表示截距與predictor,其後面的值是利用均方誤差準則估計出來的值,再後面的SE計算如下:
b1代表斜率,b0代表截距。至於為什麼這麼算屬於統計學知識了(我確實沒學好),只能總體上看一下SE,standard error是把x的方差考慮進去使得均方根誤差標準化。
接下來是兩個t統計量:(這裡一般原假設是假設貝塔為0,也就是一般分子都是b1或者b0)
知道了t值,查表就可以知道p-value,如果p-value小於0.05,那麼拒絕原假設,認為存線上性關係。
接下來的自由度,MSE,r-squared,F之前都說過了。
好了,綜合這裡引數告訴了我們一個什麼事情呢?就是分別從樣本資料引數與統計學假設檢驗與區間估計的角度構造出來的引數告訴我們兩者之間的線性程度如何
當然還有很多知識,這裡就先寫到這裡。估計有很多認識不到位的,還請大家指出來