当前位置:首页 » 编程语言 » 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 浏览:271
python多元线性回归 发布:2025-10-05 07:46:07 浏览:447