當前位置:首頁 » 編程語言 » python多元線性回歸

python多元線性回歸

發布時間: 2025-10-05 07:46:07

python量化入門:Fama-French三因子模型

Python量化入門,Fama-French三因子模型是一種改進的金融模型,用於分析投資組合收益的多元影響因素。以下是模型的關鍵步驟和Python實戰應用:

技術討論,不構成投資建議!

Fama-French三因子模型彌補了CAPM模型的局限,它關注市值、市盈率(PE)、杠桿比例和賬面市值比(BM)四個因素。Fama和French的研究發現,單個因子的解釋力有限,組合使用時,市值和BM因子對其他因素的影響減弱。模型的核心是市場風險溢酬、市值效應(SMB,小市值優於大市值)和賬面市值比效應(HML,高BM優於低BM)三個因子,形成多元線性回歸模型。

在Python實戰中,首先通過計算SMB和HML來構造投資組合,這可能需要一定時間的數據處理。接著,選擇不同市值和PB水平的股票作為樣本,對相關數據進行整合和探索。通過收益率時序圖和多元線性方程求解,可以估計超額收益率(α)和因子的系數。通常,當p值小於0.05,說明因子對收益率有顯著影響。

雖然理論與計算過程看似復雜,但實際應用中,數據處理可以自動化,以便更有效地進行投資策略分析。

㈡ python怎麼用線性回歸擬合

from sklearn import linear_model#線性回歸clf = linear_model.LinearRegression()#訓握漏練clf.fit ([[0, 0], [1, 1], [2, 2]], [0, 1, 2])#表達式參豎皮睜數clf.coef_#測試余歲improt numpy as npx = np.array([1,1])y = x.dot(clf.coef_)

㈢ 如何用Python進行線性回歸以及誤差分析

數據挖掘中的預測問題通常分為2類:回歸與分類。

簡單的說回歸就是預測數值,而分類是給數據打上標簽歸類。

本文講述如何用Python進行基本的數據擬合,以及如何對擬合結果的誤差進行分析。

本例中使用一個2次函數加上隨機的擾動來生成500個點,然後嘗試用1、2、100次方的多項式對該數據進行擬合。

擬合的目的是使得根據訓練數據能夠擬合出一個多項式函數,這個函數能夠很好的擬合現有數據,並且能對未知的數據進行預測。

代碼如下:

  • importmatplotlib.pyplot as plt

  • importnumpy as np

  • importscipy as sp

  • fromscipy.statsimportnorm

  • fromsklearn.pipelineimportPipeline

  • fromsklearn.linear_modelimportLinearRegression

  • fromsklearn.

  • fromsklearnimportlinear_model

  • ''''' 數據生成 '''

  • x = np.arange(0,1,0.002)

  • y = norm.rvs(0, size=500, scale=0.1)

  • y = y + x**2

  • ''''' 均方誤差根 '''

  • defrmse(y_test, y):

  • returnsp.sqrt(sp.mean((y_test - y) **2))

  • ''''' 與均值相比的優秀程度,介於[0~1]。0表示不如均值。1表示完美預測.這個版本的實現是參考scikit-learn官網文檔 '''

  • defR2(y_test, y_true):

  • return1- ((y_test - y_true)**2).sum() / ((y_true - y_true.mean())**2).sum()

  • ''''' 這是Conway&White《機器學習使用案例解析》里的版本 '''

  • defR22(y_test, y_true):

  • y_mean = np.array(y_true)

  • y_mean[:] = y_mean.mean()

  • return1- rmse(y_test, y_true) / rmse(y_mean, y_true)

  • plt.scatter(x, y, s=5)

  • degree = [1,2,100]

  • y_test = []

  • y_test = np.array(y_test)

  • fordindegree:

  • clf = Pipeline([('poly', PolynomialFeatures(degree=d)),

  • ('linear', LinearRegression(fit_intercept=False))])

  • clf.fit(x[:, np.newaxis], y)

  • y_test = clf.predict(x[:, np.newaxis])

  • print(clf.named_steps['linear'].coef_)

  • print('rmse=%.2f, R2=%.2f, R22=%.2f, clf.score=%.2f'%

  • (rmse(y_test, y),

  • R2(y_test, y),

  • R22(y_test, y),

  • clf.score(x[:, np.newaxis], y)))

  • plt.plot(x, y_test, linewidth=2)

  • plt.grid()

  • plt.legend(['1','2','100'], loc='upper left')

  • plt.show()

  • 該程序運行的顯示結果如下:

    [ 0. 0.75873781]

    rmse=0.15, R2=0.78, R22=0.53, clf.score=0.78

    [ 0. 0.35936882 0.52392172]

    rmse=0.11, R2=0.87, R22=0.64, clf.score=0.87

    [ 0.00000000e+00 2.63903249e-01 3.14973328e-01 2.43389461e-01

    1.67075328e-01 1.10674280e-01 7.30672237e-02 4.88605804e-02

    ......

    3.70018540e-11 2.93631291e-11 2.32992690e-11 1.84860002e-11

    1.46657377e-11]

    rmse=0.10, R2=0.90, R22=0.68, clf.score=0.90

熱點內容
php淘寶商品抓取 發布:2025-10-05 09:33:53 瀏覽:682
原生androidtv 發布:2025-10-05 09:33:18 瀏覽:993
已連接的WIFI密碼怎麼看 發布:2025-10-05 09:33:10 瀏覽:144
androidzxing 發布:2025-10-05 09:17:00 瀏覽:283
酒店小程序源碼 發布:2025-10-05 08:47:53 瀏覽:121
伺服器固定ip流程 發布:2025-10-05 08:38:05 瀏覽:764
原始傳奇h5腳本 發布:2025-10-05 07:58:57 瀏覽:964
c語音編譯手機 發布:2025-10-05 07:53:36 瀏覽:947
sqlifin 發布:2025-10-05 07:49:13 瀏覽:270
python多元線性回歸 發布:2025-10-05 07:46:07 瀏覽:446