當前熱點-6.數據分析(1) --描述性統計量和線性回歸(2)

2023-02-07 11:27:09 來源:51CTO博客

昨天分享了描述性統計量相關內容,今天把昨天剩下的部分寫完,

昨天文章鏈接:


(資料圖)

??6.數據分析(1) --描述性統計量和線性回歸(1)??

前言:在針對非物理信號分析的時候,例如用戶數、用戶經常出入的地點、疾病感染人數等,這部分涉及到數據分析知識,本文分享一下Matlab常用的描述性統計量函數和線性回歸的基本應用。


1、線性回歸簡介

數據模型明確描述預測變量與響應變量之間的關系。線性回歸擬合模型系數為線性的數據模型。最常見的線性回歸類型是最小二乘擬合,它可用于擬合線和多項式以及其他線性模型。

在對各對數量之間的關系進行建模之前,最好進行相關性分析,以確定這些數量之間是否存在線性關系。

如果需要使用非線性模型擬合數據,請轉換變量以使關系變成線性關系。或者嘗試使用nlinfit 函數、lsqcurvefit 函數直接擬合非線性函數。


2、簡單線性回歸

線性回歸對一個因變量(即響應變量)y 與一個或多個自變量(即預測變量)x1,...,xn之間的關系進行建模。簡單線性回歸使用以下關系方程:

y=β0+β1x+?

其中,β0是 y 軸截距,β1是斜率(即回歸系數),?是誤差項。

首先確定一組(n 個)x 和 y 的觀測值,以(x1,y1), (x2,y2), ..., (xn,yn)形式給出。對這些值應用簡單線性回歸關系方程,構成一個線性方程組。這些方程以矩陣形式表示如下:

假設

現在關系變為 Y=XB。

load x.matload y.matb1 = x\yb1 =1.372716735564871e-04

b1 是斜率或回歸系數。線性關系為 y=β1x=0.0001373x。

yCalc1 = b1*x;scatter(x,y)hold onplot(x,yCalc1)grid on

在模型中加入 y 軸截距β0以改進擬合,即y=β0+β1x。用一列 1 填補 x 并使用\運算符計算β0。

X = [ones(length(x),1) x];b = X\y

?此結果表示關系 y=β0+β1x=142.7120+0.0001256x。

yCalc2 = X*b;plot(x,yCalc2,"--")legend("原始數據","方法1","方法2","Location","best");

如圖所示,兩個擬合非常相似。判斷更佳擬合的一種方法是計算決定系數 R2。R2 用于度量模型能夠在多大程度上預測數據,其值介于0和 1 之間。R2 的值越高,模型預測數據的準確性越高。

其中,?y表示y的計算值, ̄y是y的均值,R2定義為

通過比較 R2 的值,找出兩個擬合中較好的一個。如 R2 值所示,包含 y 軸截距的第二個擬合更好。

Rsq1 = 1 - sum((y - yCalc1).^2)/sum((y - mean(y)).^2)Rsq2 = 1 - sum((y - yCalc2).^2)/sum((y - mean(y)).^2)Rsq1 =   0.822235650485566Rsq2 =   0.838210531103428

3、殘差與擬合優度

殘差是響應變量(因變量y)的觀測值與模型的預測值之間的差。當擬合的模型適合數據時,殘差接近獨立隨機誤差。即,殘差分布不應該呈現出可辨識的模式。

利用線性模型產生擬合需要盡量減小殘差平方和。該最小化的結果即為最小二乘擬合。

擬合優度的一個度量是決定系數或 R2。該統計量表明通過擬合模型得到的值與模型可預測的因變量的匹配程度。擬合模型的殘差方差定義 R2:

R2= 1 – SSresid/ SStotal

SSresid 是與回歸的殘差的平方和。SStotal 是與因變量均值的差的平方和(總平方和)。

3.1通過多項式擬合計算 R2

從多項式回歸的系數得出 R2,以確定線性模型對y的方差的解釋率,

利用 polyfit 計算從 x 預測 y 的線性回歸:

p = polyfit(x,y,1)p =1.5229 -2.1911

p(1)是斜率,p(2)是線性預測變量的截距。

調用 polyval 以使用 p 預測 y,調用結果 yfit:

yfit = polyval(p,x);

使用 polyval,在本例中擬合方程為:

yfit = p(1) * x + p(2);

將殘差值計算為有符號數的向量:

yresid = y - yfit;

計算殘差的平方并相加,以獲得殘差平方和:

SSresid = sum(yresid.^2);

通過將觀測次數減 1 再乘以 y 的方差,計算 y 的總平方和:

SStotal = (length(y)-1) * var(y);

計算 R2:

rsq = 1 - SSresid/SStotalrsq =0.8707

這表明,線性方程 1.5229 * x -2.1911 可預測變量 y 中方差的 87%。

3.2 計算多項式回歸的調整 R2

通常可通過擬合更高次多項式,減少模型中的殘差。當您添加更多項時,會增加決定系數 R2。您可獲得更接近數據的擬合,但代價是模型更為復雜,此時需要對該統計量R2進行改進,調整 R2 中包括了一項對模型中項數的罰值。因此,調整 R2 更適合比較不同的模型對同一數據的擬合程度。調整 R2 定義如下:

R2adjusted= 1 - (SSresid/ SStotal)*((n-1)/(n-d-1))

其中 n 是數據中的觀測值數量,d 是多項式的次數。(線性擬合的階數為 1,二次擬合為 2,三次擬合為 3,依此類推。)

調用 polyfit 生成三次擬合,以從 x 預測 y:

p = polyfit(x,y,3)p =-0.0003 0.0390 0.2233 6.2779

p(4)是三次預測變量的截距。

調用 polyval 以使用 p 中的系數預測 y,將結果命名為 yfit:

yfit = polyval(p,x);

polyval 計算顯式方程,手動輸入則如下所示:

yfit = p(1) * x.^3 + p(2) * x.^2 + p(3) * x + p(4);

計算殘差值:

yresid = y - yfit;

計算殘差的平方并相加,以獲得殘差平方和:

SSresid = sum(yresid.^2);

通過將觀測次數減 1 再乘以 y 的方差,計算 y 的總平方和:

SStotal = (length(y)-1) * var(y);

計算三次擬合的簡單 R2:

rsq = 1 - SSresid/SStotalrsq =0.9083

最后,計算調整 R2 :

rsq_adj = 1 - SSresid/SStotal * (length(y)-1)/(length(y)-length(p))rsq_adj =0.8945

調整 R2 (0.8945) 小于簡單 R2 (0.9083)。后者可以更可靠地估計多項式模型的預測能力。

在許多多項式回歸模型中,對方程添加次數會使 R2 和調整 R2 都增加。在上面的示例中,與線性擬合相比,使用三次擬合使這兩種統計量都有所增加。線性擬合并非始終差于更高階擬合:更復雜擬合的調整 R2 也有可能低于更簡單的擬合,此時表明增加復雜度并不適當。此外,雖然基本擬合工具生成的多項式回歸模型的 R2 值始終在 0 和 1 之間變動,但某些模型的調整 R2 可能為負值,這表明該模型的項太多。

標簽: 線性回歸 總平方和 決定系數

上一篇:
下一篇: