量化投資學習筆記15——回歸分析:一元線性回歸


變量之間的非確定性相關關系。
一般形式:y = f(x0,x1,x2,…xp)+ε
若為線性回歸,y = β0+β1x1+β2x2+…+βnxn+ε
β0,β1等為回歸系數,ε為隨機誤差。
模型假設
①零均值,ε均值為0
②同方差,ε項方差為常數
③無自相關性,ε項值之間無自相關性
④正態分布,ε項呈正態分布。
⑤x1,x2等解釋變量之間是非隨機變量,其觀測值是常數。
⑥解釋變量之間不存在精確線性關系。
⑦樣本個數多於解釋變量個數。
建立回歸分析模型的一般步驟
①需求分析明確變量
②數據收集加工,檢查是否滿足回歸分析斷的假設。
③確定回歸模型:一元,二元,多元;線性,非線性。畫散點圖。
④確定模型參數:常用最小二乘法,若不符合假設條件,可用其它方法。
最小二乘法也叫最小化平方法,通過使誤差的平方和最小來尋找最佳函數匹配。
⑤模型檢驗優化
⑥模型部署應用。
優點:模型簡單,應用方便;有堅實的理論支撐;定量分析各變量間關系;模型預測結果可通過誤差分析精確了解。
缺點:假設條件比較多且嚴格;變量選擇對模型影響較大。
回歸模型的參數估計
一元線性回歸模型:研究與現象關系最大的主要因素,兩者有密切關系,但並非確定性關系,可用該模型。
y = β0+β1x+ε
y為被解釋變量或因變量,x為解釋變量或自變量。β0回歸常數,β1回歸系數,二者統稱為回歸參數。ε為隨機誤差。其中E(ε) = 0,var(ε) = 常數。
一元線性回歸方程:y = β0+β1x 忽略隨機誤差。
回歸方程從平均意義上表達了變量y與x的統計規律性。
回歸分析的主要任務是通過n組樣本的觀察值,對β0,β1進行估計,得到最終方程。
參數估計:最小二乘估計(OLE)
通過最小二乘法求出對β0,β1的估計值。
離差平方和Q(β0,β1)=Σ(yi - E(yi))²=Σ(yi -β0+β1xi)²
估計值滿足使上式離差平方和最小。
其最小值的求法為求其偏導數,並令其為0。求解方程組即可。
實操一下。
先創建數據,畫散點圖。

 x = [3.4, 1.8, 4.6, 2.3, 3.1, 5.5, 0.7, 3, 2.6, 4.3, 2.1, 1.1, 6.1, 4.8, 3.8]
 y = [26.2, 17.8, 31.3, 23.1, 27.5, 36, 14.1, 22.3, 19.6, 31.3, 24, 17.3, 43.2, 36.4, 26.1]
 x = np.array(x)
 y = np.array(y)
 print(len(x), len(y))
 plt.scatter(x, y)
 plt.savefig("scatter.png")

建立線性回歸模型

 df pd.DataFrame()
 df["X"] = x
 df["Y"] = y
 print(df)
 regr = linear_model.LinearRegression()
 # 擬合
 regr.fit(x.reshape(-1,1), y)
 # 得到回歸參數的二乘法估計
 a, b = regr.coef_, regr.intercept_
 print(a, b)
 # 畫出擬合的直線
 yp = a*x + b
 plt.scatter(x, y)
 plt.plot(x, yp)
 plt.savefig("fit.png")

擬合結果
a = 4.91933073 b = 10.277928549524688

另一種參數估計方法:最大似然估計(MLE)
利用總體的分布密度或概率分布的表達式及其樣本所提供的信息求未知參數估計量的一種方法。
基本思路:已知樣本符合某種分布,但分布參數未知,通過實驗來估計分布參數。估算思路:如果某組參數能使當前樣本出現的概率最大,就認為該參數為最終的估計值。解決的是模型已定,參數未知的問題,用已知樣本去估算未知參數。
出現當前情形的概率為f(x1x2x3…xn|θ)=f(x1|θ)f(x2|θ)f(x3|θ)…f(xn|θ),其中θ未知。
似然函數L(θ|x1x2x3…xn) = f(x1x2x3…xn|θ)=f(x1|θ)f(x2|θ)f(x3|θ)…f(xn|θ)=Πf(xi|θ)
前提是事件x之間是獨立的。
取對數lnL(θ|x1x2x3…xn) = lnf(x1|θ)+lnf(x2|θ)+lnf(x3|θ)+…+lnf(xn|θ) = Σf(xi|θ)
平均對數似然l = lnL(θ|x1x2x3…xn)/n
最大似然估計就是找到一個θ使得l最大。求導求出最大值。
一元線性回歸,OLE和MLE是等價的,MLE還可以估計方差σ²的值。
無偏估計,估計不同樣本,偏差平均值為0。反之則為有偏估計。
一元線性回歸方差的性質:
①線性:估計回歸參數為隨機變量yi的線性函數。
②無偏,估計值y為真實值的無偏估計,即E(y) = E(y)
③參數的方差,與樣本方差,隨機誤差的方差等有關系。
模型的檢驗
①回歸系數是否顯著:t檢驗
檢驗因變量y與自變量x之間是否真的存在線性關系?即β1=0?用t檢驗進行判斷。
確定假設:目的是找到不達標的證據。原假設H0:β0=0,備擇假設H1:β0≠0
檢驗水平:α=0.05或0.01
構造統計量:H0成立時,β1滿足正態分布。
計算p值。
得出結論。
②回歸方程是否顯著:F檢驗。
根據平方和分解式,直接從回歸效果檢驗回歸方程的顯著性。
③相關系數顯著性檢驗:t檢驗。
樣本相關系數可以作為總體相關系數的估計值,樣本相關系數不等於零時需要進行假設檢驗確定是來自抽樣誤差還是來自整體。
④決定系數
SST = SSR + SSE, SSR占的比重越大,線性回歸效果越好。
r² = SSR/SST
用模型的score函數來給模型評分,結果為0.9234781689805285。
還可以用statsmodels庫來做,回歸結果類似,與sklearn庫不同的是它可以輸出檢驗結果。
用statsmodels來做

 import statsmodels.api as sm
 X = sm.add_constant(x)
 model = sm.OLS(y, X)
 result = model.fit()
 print("statsmodels做線性回歸")
 print(result.params)
 print(result.summary())

結果及解釋(以下參考:https://blog.csdn.net/CoderPai/article/details/83899268)
OLS Regression Results

Dep. Variable: y
R-squared: 0.923
Model: OLS
Adj. R-squared: 0.918
Method: Least Squares
F-statistic: 156.9
Date: Fri, 14 Feb 2020
Prob (F-statistic): 1.25e-08
Time: 15:48:01
Log-Likelihood: -32.811
No. Observations: 15
AIC: 69.62
Df Residuals: 13
BIC: 71.04
Df Model: 1
Covariance Type: nonrobust

coef std err t P>|t| [0.025 0.975]

const 10.2779 1.420 7.237 0.000 7.210 13.346
x1 4.9193 0.393 12.525 0.000 4.071 5.768

Omnibus: 2.551
Durbin-Watson: 1.318 Prob(Omnibus): 0.279
Jarque-Bera (JB): 1.047 Skew: -0.003 Prob(JB): 0.592 Kurtosis: 1.706 Cond. No. 9.13

Adj. R-squared: 0.918 R平方,反映模型的擬合度,取值0-1,越高越好。
const coef:10.2779 y截距,即b值。
x1:4.9193 a值,即一元線性方程的一次項。
std err,反映系數的准確度,越低,准確度越高。
P>|t|:p值,判斷回歸參數是否有統計學意義。本處均為0。
Confidence Interval:這是置信區間,表示我們的系數可能下降的范圍(可能性為 95%)
另外回歸方程的F值F-statistic:156.9,概率Prob (F-statistic):1.25e-08,小於0.05,回歸分析效果是顯著的。
殘差(residual):回歸值與真實值的差額。
ei = yi^-yi
殘差是誤差的估計值。
殘差圖,以x為橫軸,殘差為縱軸做的圖。殘差應在0附近隨機變動,且變動不大。
殘差圖的幾種情況。

算出上面回歸的殘差並繪出殘差圖。

 residual = []
 for i in range(len(x)):
  cha = res[0] + res[1]*x[i] - y[i]
  residual.append(cha)
 print(residual)
 plt.scatter(x, residual)
 plt.savefig("residual.png")

可以看到殘差圖還是比較正常的。
模型的應用,有預測和控制。
預測分為單值預測和區間預測。
單值預測直接求值。
區間預測:以α顯著水平,找到區間(T1,T2),使得某特定X0的實際值Y0以1-α的概率在該區間內。即p(T1<Y0<T2) = 1-α。
控制:要把因變量控制在一定范圍內,求自變量的取值范圍。
下次學習多元回歸。
本文代碼:https://github.com/zwdnet/MyQuant/tree/master/15

我發文章的四個地方,歡迎大家在朋友圈等地方分享,歡迎點“在看”。
我的個人博客地址:https://zwdnet.github.io
我的知乎文章地址: https://www.zhihu.com/people/zhao-you-min/posts
我的博客園博客地址: https://www.cnblogs.com/zwdnet/
我的微信個人訂閱號:趙瑜敏的口腔醫學學習園地


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM