(十四)用StatsModels模块建立线性回归模型

2023-11-12

使用StatsModels中的api子模块,主要使用的函数有(注意大小写):

  • OLS:普通最小二乘法
  • GLS:广义最小二乘法
  • WLS:加权最小二乘法
  • GLM:广义线性模型
  • mixed:混合效应模型

以OLS为例,函数格式为OLS(endog,exdog),参数分别表示因变量和自变量,其中自变量可以有多个,格式为X=data[[‘a’, ‘b’, ‘c’,…]]。以螺纹钢的期货和现货价格数据为样本,用简单OLS回归计算最优套保比率(期货收益率为x,现货收益率为y):

import statsmodels.api as sm
import pandas as pd
LWG=pd.read_excel('C:/Users/lenovo/Desktop/螺纹钢期货+现货数据.xlsx')
LWG.head()
Out[1]:  
            日期  期货价格  现货价格   期货价格收益率   现货价格收益率
0   2016/01/04  1777  1920       NaN       NaN
1   2016/01/05  1789  1940  0.006730  0.010363
2   2016/01/06  1775  1940 -0.007856  0.000000
3   2016/01/07  1773  1930 -0.001127 -0.005168
4   2016/01/08  1759  1910 -0.007928 -0.010417
LWG=LWG.dropna()#删除缺失值
x=LWG.iloc[:,3]
y=LWG.iloc[:,4]
x_addc=sm.add_constant(x)#线性回归增加常数项y=kx+b
model=sm.OLS(y,x_addc).fit()
#OLS(y,x);fit函数从模型获得拟合数据
model.summary()#输出线性回归的结果
Out[2]: 
<class 'statsmodels.iolib.summary.Summary'>
"""
                            OLS Regression Results                            
==============================================================================
Dep. Variable:                现货价格收益率   R-squared:                       0.267
Model:                            OLS   Adj. R-squared:                  0.267
Method:                 Least Squares   F-statistic:                     343.5
Date:                Wed, 22 Jan 2020   Prob (F-statistic):           1.31e-65
Time:                        13:16:27   Log-Likelihood:                 2902.4
No. Observations:                 943   AIC:                            -5801.
Df Residuals:                     941   BIC:                            -5791.
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const          0.0006      0.000      1.531      0.126      -0.000       0.001
期货价格收益率        0.3384      0.018     18.533      0.000       0.303       0.374
==============================================================================
Omnibus:                      592.523   Durbin-Watson:                   1.704
Prob(Omnibus):                  0.000   Jarque-Bera (JB):            30065.285
Skew:                           2.180   Prob(JB):                         0.00
Kurtosis:                      30.316   Cond. No.                         50.3
==============================================================================
Warnings:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
"""

可以看到套保比率为0.3384。接下来对回归模型进行可视化:

from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus']=False
import matplotlib.pyplot as plt
plt.figure(figsize=(8,6))
plt.scatter(x,y,c='k',marker='o')
plt.plot(x,model.params[0]+model.params[1]*x,'r')#取出“model”中的两个参数
plt.xlabel('螺纹钢期货收益率')
plt.ylabel('螺纹钢现货收益率')
plt.title('螺纹钢期货与现货收益率的OLS回归')
plt.grid()

在这里插入图片描述
个人认为python在计量经济学模型的建立和处理上,操作比较繁琐,功能不够强大,使用eviews、stata等软件会更好一些。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(十四)用StatsModels模块建立线性回归模型 的相关文章

  • DDT数据驱动+yaml/csv(自动化测试,接口测试)

    目录 1 ddt读取yaml文件 2 ddt读取csv文件 3 ddt式测试报告怎么填用例描述 背景 对于输入框来言 使用等价类边界值 场景法等进行数据输入 接口相同 输入的内容都非常相似 却有不同的响应结果 如果我们对于每次输入都编写一条
  • Linux中的$0、$1、$@、$?、$*等特殊变量介绍

    特殊变量 是传给脚本的参数个数 0 是脚本本身的名字 1 是传递给该shell脚本的第一个参数 2 是传递给该shell脚本的第二个参数 是传给脚本的所有参数的列表 是以一个单字符串显示所有向脚本传递的参数 与位置变量不同 参数可超过9个
  • Invalid prop: type check failed for prop “data“. Expected Array, got Object[已解决]

    Vue warn Invalid prop type check failed for prop data Expected Array got Object 要处理这个bug就必须先明白这个bug到底是什么类型是怎么一回事 那字面意思就是
  • Mirai环境搭建

    20200805 引言 关于Mirai的环境搭建 我记得能搜到很多结果 不过我当时并没有想要启动mirai的所有功能 毕竟其实他的代码也有缺陷 现在想扫出来结果也有点难了 后面可能还是需要这些功能来辅助扫描结果 其他功能还是要开启 这里先记
  • C语言基础_文件操作-1

    目录 写在前面 学习目标 学习总结 正文 1 文件打开 关闭 2 getc putc 3 fprintf fscanf gets不安全 用fgets 4 fgets gputs 5 文件光标操作 a fseek ftell long范围内操
  • C++语言分号的使用

    C 语言中 表达式的一部分能够组成独立的语句 所以必须加分号分割 c a b 成立 c a b 也成立 if 1 1 do something 成立 if 1 1 do something 也成立 class foo bar 成立 含义为独
  • c++能不能给类的成员变量在声明的时候初始化?

    能 可能早先的版本不能 但是c 11标准下能 有人说在声明的时候初始化相当于在构造函数中初始化 其实不是的 成员变量初始化的顺序为 先进行声明时初始化 然后进行初始化列表初始化 最后进行构造函数初始化 如下代码 另外初始化列表中初始化的顺序
  • STM32启动BOOT0 BOOT1设置方法

    转载自 https www jianshu com p 38c4a90bac19 不同的下载方式对应STM32启动方式也不同 如下图是STM32三种启动方式 第一种启动方式是最常用的用户FLASH启动 正常工作就在这种模式下 STM32的F
  • webpack4 sideEffects实战轻松搞懂

    sideEffects 译作副作用 函数副作用是指函数在正常工作任务之外对外部环境所施加的影响 具体地说 函数副作用是指函数被调用 完成了函数既定的计算任务 但同时因为访问了外部数据 尤其是因为对外部数据进行了写操作 从而一定程度地改变了系
  • Vue的过渡

    目录 单元素过渡 1 css过渡 2 过渡的类名介绍 3 CSS动画 4 自定义过渡的类名 5 元素过渡使用JavaScript钩子函数 多元素过渡 1 基础用法 2 key属性 3 过渡模式 多组件过渡 列表过渡 单元素过渡 1 css过
  • Android Zebra斑马打印机 打印面单不清楚 解决方法

    刚开始的效果 字体模糊 分析原因 1 打印机的打印浓度太低 2 文本字体不对 3 bitmap的问题 因为这个面单是通过view 获取到bitmap再喂给打印机打印的 下载打印机的驱动 设置打印机打印浓度 没有效果 调整字体类型没有效果 分
  • Java 加解密技术系列之 SHA

    序 上一篇文章中介绍了基本的单向加密算法 MD5 也大致的说了说它实现的原理 这篇文章继续之前提到的单向加密 主要讲的是 SHA 同 MD5 一样 SHA 同样也是一个系列 它包括 SHA 1 SHA 224 SHA 256 SHA 384
  • 服务器怎么开虚拟用户,Linux文件服务器实战详解(虚拟用户)

    vsftpd基于系统用户访问ftp服务器 系统用户越多越不利于管理 不利于系统安全 这样就以vsftp虚拟防护的方式来解决 虚拟用户没有实际的真实系统用户 而是通过映射到其中一个真实用户以及设置相应权限来访问验证 虚拟用户不能登陆系统 1

随机推荐