zoukankan      html  css  js  c++  java
  • 量化投资学习笔记16——回归分析:多元线性回归

    理论模型 y = β0 + β1x1 + β2x2 + … + βpxp + ε
    意义与一元线性回归相同。
    E(y) = E(β0 + β1x1 + β2x2 + … + βpxp + ε) =>
    y = β0 + β1x1 + β2x2 + … + βpxp
    列线性方程组
    y1 = β0 + β1x11 + β2x12 + … + βpx1p + ε1
    y2 = β0 + β1x21 + β2x22 + … + βpx2p + ε2
    ……
    yn = β0 + β1xn1 + β2xn2 + … + βpxnp + εn
    写成矩阵形式
    y = [y1, y2, …, yn]'
    β = [β1, β2, …, βn]'
    ε = [ε1, ε2, …, εn]'
    以此类推。
    矩阵形式为y = βx + ε
    参数估计:最小二乘法
    与一元线性回归类似。
    参数估计:最大似然估计
    模型检验等也与一元线性回归类似。
    由于有多个自变量,其单位和取值相差可能很大,要进行标准化。方法是进行中心化,将原点放到样本中心。
    相关矩:相当于一元线性回归的相关系数。
    下面实操,用mtcars数据集,研究油耗与哪些因素有关?
    建模思路:
    确定对因变量可能有影响的自变量。
    假设自变量与因变量呈线性关系,建立线性回归模型。
    对模型进行评估和检验
    调整优化模型
    判断模型中是否存在多重共线性,有则处理
    利用回归方程进行预测,并利用预测的残差分析模型的假设。
    下面实操

     data = pd.read_csv("mtcars.csv")
     print(data.head(), data.describe(), data.columns)
     col = data.columns
     print(col[1], col[2:].values)
     Y = data[col[1]]
     X = data[col[2:].values]
     print(X, Y)
     
     X = sm.add_constant(X)
     print(X.head())
     model = sm.OLS(Y, X).fit()
     print(model.summary())
    

    耗油量为因变量,其余变量为自变量,做多元线性回归。结果为:
    OLS Regression Results =====================================Dep. Variable: mpg
    R-squared: 0.869 Model: OLS
    Adj. R-squared: 0.807 Method: Least Squares
    F-statistic: 13.93 Date: Sat, 15 Feb 2020
    Prob (F-statistic): 3.79e-07 Time: 23:19:36
    Log-Likelihood: -69.855
    No. Observations: 32 AIC: 161.7
    Df Residuals: 21 BIC: 177.8
    Df Model: 10 Covariance Type: nonrobust ===================================== coef std err t P>|t| [0.025 0.975]

    const 12.3034 18.718 0.657 0.518 -26.623 51.229
    cyl -0.1114 1.045 -0.107 0.916 -2.285 2.062 disp 0.0133 0.018 0.747 0.463 -0.024 0.050 hp -0.0215 0.022 -0.987 0.335 -0.067 0.024 drat 0.7871 1.635 0.481 0.635 -2.614 4.188
    wt -3.7153 1.894 -1.961 0.063 -7.655 0.224 qsec 0.8210 0.731 1.123 0.274 -0.699 2.341 vs 0.3178 2.105 0.151 0.881 -4.059 4.694
    am 2.5202 2.057 1.225 0.234 -1.757 6.797 gear 0.6554 1.493 0.439 0.665 -2.450 3.761 carb -0.1994 0.829 -0.241 0.812 -1.923 1.524
    =====================================Omnibus: 1.907
    Durbin-Watson: 1.861
    Prob(Omnibus): 0.385
    Jarque-Bera (JB): 1.747
    Skew: 0.521
    Prob(JB): 0.418
    Kurtosis: 2.526
    Cond. No. 1.22e+04 =====================================
    模型的R²值为0.869,回归方程有效性F检验概率值为3.79e-07,还不错。但是看具体每个自变量的回归系数的有效性t检验,p值都大于0.05,有问题。
    本文代码: https://github.com/zwdnet/MyQuant/tree/master/16

    我发文章的四个地方,欢迎大家在朋友圈等地方分享,欢迎点“在看”。
    我的个人博客地址:https://zwdnet.github.io
    我的知乎文章地址: https://www.zhihu.com/people/zhao-you-min/posts
    我的博客园博客地址: https://www.cnblogs.com/zwdnet/
    我的微信个人订阅号:赵瑜敏的口腔医学学习园地

  • 相关阅读:
    LeetCode:35. 搜索插入位置
    LeetCode:34. 在排序数组中查找元素的第一个和最后一个位置
    LeetCode:33. 搜索旋转排序数组
    LeetCode:31. 下一个排列
    LeetCode:23. 合并K个排序链表
    LeetCode:21. 合并两个有序链表
    JDE910笔记1--基础介绍及配置[转]
    JDE910笔记2--OMW项目建立及简单使用[转]
    活动目录—远程安装额外域控制器[转]
    java入门第五步之数据库项目实战【转】
  • 原文地址:https://www.cnblogs.com/zwdnet/p/12315973.html
Copyright © 2011-2022 走看看