伍德里奇的《计量经济学导论》,是目前国内外最经典的计量经济学教材,非常适合新手入门学习。本文将围绕伍德里奇《计量经济学导论》的案例,探讨如何用python实现。

一、获取伍德里奇《计量经济学导论》中的数据集

我们只安装woodridge包,即可直接调用相关数据。

(一)安装

pip install wooldridge

(二)导入库

import wooldridge

(三)导入数据

以伍德里奇《计量经济学导论》例6.3为例,获取该案例的数据集attend,代码如下:

attend = woo.dataWoo('attend')

在Spyder中查看数据:

image-20220415180125530

二、回归分析

statsmodels的线性模型有两种不同的接口:

1、基于数组:import statsmodels.api as sm,需要配合 add_constant()来生成自变量矩阵。 2、基于公式:import statsmodels.formula.api as smf,写公式直接拟合方程,公式中自变量可以变为平方项、交叉项等。 基于公式的方法较为方法,下面介绍该方法。

(一)导入相关库

import statsmodels.formula.api as smf

在statsmodels.formula.api下调用ols方法。ols用法如下:

sml.ols(formula,data)
-formula是回归的公式
-data为使用的数据,必须是pandas.DataFrame格式

formula公式的形式为parm1~parm2+parm3+parm4

formula的常见符号和用途如下表所示:

符号 用途
~ 分隔符号,左边为因变量,右边为自变量
+ 分隔自变量,自变量之间用+连接
表示变量的交互项。
* 表示所有可能交互项的间接形式。例如,x*z表示x+z+x:z
0 当公式中加入0,意味着模型中没有常数项;如:y~x+w+v代表模型中有截距项,y~x+w+v+0代表模型中没有常数项
I( ) 变量保护函数, I 内的表达式按照算术意义进行解释;如w+z 表示变量w和变量z都包含在公式中,I(w+z)表示 w+z 之和包含在公式中
function 可以在表达式中用的数学函数。例如,np.log(y)~x+w+z表示log(y)对x、w、z和常数项做回归。

示例:

formula 代表含义
y~x+w+z
y~x+I(w+z)
y~x+I(w**2)
y~x+w:z
y~x+w*z
y~x+I(w*z)
y~(x+w)*z

以上文获取的attend数据集为例,用出勤率百分数、读大学之前的GPA和ACT分数来解释期末考试标准化成绩的一个模型是

(二)调用ols方法进行回归

import statsmodels.formula.api as smf
reg = smf.ols(formula='stndfnl ~ atndrte*priGPA + ACT + I(priGPA**2) + I(ACT**2)',data=attend)
results = reg.fit()

(三)获取回归结果

得到的results为 statsmodels.regression.linear_model.RegressionResultsWrapper类,我们通过summary()方法获取模型回归结果。

print(results.summary())
#Out:OLS Regression Results
==============================================================================
Dep. Variable:                stndfnl   R-squared:                       0.229
Model:                            OLS   Adj. R-squared:                  0.222
Method:                 Least Squares   F-statistic:                     33.25
Date:                Sun, 03 Apr 2022   Prob (F-statistic):           3.49e-35
Time:                        13:36:16   Log-Likelihood:                -868.90
No. Observations:                 680   AIC:                             1752.
Df Residuals:                     673   BIC:                             1783.
Df Model:                           6
Covariance Type:            nonrobust
==================================================================================coef    std err          t      P>|t|      [0.025      0.975]
----------------------------------------------------------------------------------
Intercept          2.0503      1.360      1.507      0.132      -0.621       4.721
atndrte           -0.0067      0.010     -0.656      0.512      -0.027       0.013
priGPA            -1.6285      0.481     -3.386      0.001      -2.573      -0.684
atndrte:priGPA     0.0056      0.004      1.294      0.196      -0.003       0.014
ACT               -0.1280      0.098     -1.300      0.194      -0.321       0.065
I(priGPA ** 2)     0.2959      0.101      2.928      0.004       0.097       0.494
I(ACT ** 2)        0.0045      0.002      2.083      0.038       0.000       0.009
==============================================================================
Omnibus:                        2.581   Durbin-Watson:                   2.279
Prob(Omnibus):                  0.275   Jarque-Bera (JB):                2.474
Skew:                          -0.095   Prob(JB):                        0.290
Kurtosis:                       3.226   Cond. No.                     2.43e+04
==============================================================================Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 2.43e+04. This might indicate that there are
strong multicollinearity or other numerical problems.

回归结果表示估计出来的方程是:

接下来我们来解释一下上述表格的几个参数:

第一个表格 披露模型基本信息
名称 说明
Dep. Variable 因变量
Model 采用的模型
Method 模型系数计算方法
No. Observations 样本数量
DF Residuals 残差的自由度
DF Model 模型的自由度
R-squared 可决系数,表示所有自变量对因变量的联合的影响程度,用于度量回归方程拟合度的好坏,越接近于 1说明拟合程度越好。
Adj. R-squared 调整的可决系数
F-statistic F统计量,用于对整体回归方程进行显著性检验,检验所有自变量在整体上对因变量的影响是否显著。
Prob (F-statistic) F统计量的p值
Log-likelihood 对数似然
AIC AIC信息准则
BIC BIC信息准则
第二个表格 披露系数相关信息
名称 说明
coef 回归系数
std err 标准差,也称标准偏差,是方差的算术平方根,反映样本数据值与回归模型估计值之间的平均差异程度。
t t统计量,等于回归系数除以标准差,用于对每个回归系数分别进行检验,检验每个自变量对因变量的影响是否显著。如果某个自变量的影响不显著,意味着可以从模型中剔除这个自变量。
P > |t| t检验的p值,反映每个自变量与因变量的相关性假设的显著性。
[0.025,0.975] 估计参数的 95%置信区间的下限和上限
第三个表格
名称 说明
Skewness 偏度,反映数据分布的非对称程度
Kurtosis 峰度,反映数据分布陡峭或平滑程度
Omnibus Omnibus检验统计量,基于峰度和偏度进行数据正态性的检验
Prob(Omnibus) Omnibus检验统计量的p值
Jarque-Bera JB统计量,基于峰度和偏度对数据正态性的检验
Prob (JB) JB统计量的p值
Durbin-Watson DW统计量,检验残差中是否存在自相关
Cond. No 多重共线性检验

statsmodels.regression.linear_model.RegressionResultsWrapper类的常见方法和属性如下表所示:

方法/属性 说明
.summary() 获取回归结果
.t_test() 进行t检验
.F_test() 进行F检验
.params 获取回归系数
.bse 获取回归系数标准差
.pvalues 获取回归系数p值
.tvalues 获取回归系数t值
.conf_int() 获取回归系数置信区,括号中可填具体数字,比如0.05,0.1,代表显著性水平,默认5%
.fittedvalues 获取模型预测值
.resid 获取残差
.df_model 模型自由度(系数自由度)
.df_resid 获取残差自由度(样本自由度)
.nobs 获取模型样本数量
.rsquared 获取R方
.rsquared_adj 获取调整R方
.aic 获取AIC
.bic 获取BIC
.fvalue 获取F-statistic
.f_pvalue 获取F-statistic的pvalue
.mse_ 获取模型mse
.mse_resid 获取残差mse
.mse_total 获取总体mse

示例:

(1)获取回归系数:

print(results.params)
#Out:
Intercept         2.050293
atndrte          -0.006713
priGPA           -1.628540
atndrte:priGPA    0.005586
ACT              -0.128039
I(priGPA ** 2)    0.295905
I(ACT ** 2)       0.004533
dtype: float64`

(2)对线性假设的t检验

例1:检验atndrte和priGPA的系数是否相等,即检验

可输入代码:

hypotheses = 'atndrte =priGPA'
t_test = results.t_test(hypotheses)
print(t_test)
#Out:Test for Constraints
==============================================================================coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
c0             1.6218      0.479      3.384      0.001       0.681       2.563
==============================================================================

由结果可知,t检验的p值为0.001,说明在1%的显著性水平下,可以拒绝原假设,即atndrte和priGPA的系数不相等。

例2:检验ACT的系数否等于1,即检验

可输入代码:

hypotheses = 'ACT=1'
t_test = results.t_test(hypotheses)
print(t_test)
#Out:Test for Constraints
==============================================================================coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
c0            -0.1280      0.098    -11.453      0.000      -0.321       0.065
==============================================================================

由结果可知,t检验的p值分别为0.000,说明在1%的显著性水平下,可以拒绝原假设,即ACT的系数不等于1。

例3:分别检验atndrte和priGPA的系数是否相等,和检验ACT的系数否等于1,即分别检验

可输入代码:

hypotheses = 'atndrte=priGPA, ACT=1'
t_test = results.t_test(hypotheses)
print(t_test)
#Out:Test for Constraints
==============================================================================coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
c0             1.6218      0.479      3.384      0.001       0.681       2.563
c1            -0.1280      0.098    -11.453      0.000      -0.321       0.065
==============================================================================

由结果可知,两个t检验的p值分别为0.001和0.000,说明在1%的显著性水平下,可以分别拒绝原假设,即tndrte和priGPA的系数不相等,ACT的系数不等于1。

(2)对线性假设的F检验

例1:考虑检验atndrte和priGPA的系数是否相等,同时ACT的系数是否等于1,即对2个约束条件进行联合检验。则原假设为

可输入代码:

hypotheses = 'atndrte =priGPA,ACT=1'
f_test = results.f_test(hypotheses)
print(f_test)
#Out:
<F test: F=73.54403151459535, p=1.29722128738922e-29, df_denom=673, df_num=2>

由结果可知,F检验的p值<1%,说明在1%的显著性水平下,可以拒绝原假设。

欢迎关注:

公众号Python for Finance

【python计量】statsmodels进行OLS回归——以伍德里奇数据为例相关推荐

  1. python最小二乘法拟合模型的loocc误差_线性回归模型库Statsmodels 中 OLS 回归(普通最小二乘法回归)...

    Statsmodels 是 Python 中一个强大的统计分析包,包含了回归分析.时间序列分析.假设检 验等等的功能.Statsmodels 在计量的简便性上是远远不及 Stata 等软件的,但它的优 ...

  2. python回归模型_缺少Python statsmodels中OLS回归模型的截取

    我正在进行滚动,例如在 this link( https://drive.google.com/drive/folders/0B2Iv8dfU4fTUMVFyYTEtWXlzYkk)中找到的数据集的1 ...

  3. 深度学习之TensorFlow 第三章基本开发步骤--以逻辑回归拟合二维数据为例(转)

    深度学习有四个步骤: 准备数据  搭建模型   迭代训练   使用模型 import tensorflow as tf import numpy as np #数组 import matplotlib ...

  4. Python精美地理可视化绘制——以中国历年GDP数据为例

    公众号后台回复"图书",了解更多号主新书内容 作者:zch 来源:菜J学Python 专栏作者:zch,经管专业研一在读,Python数据分析及可视化爱好者. 有的时候,我们需要对 ...

  5. Python数据处理(一)——以美国各州统计数据为例

    编写本篇文章的目的:了解Python数据处理的基本步骤,计算美国各州的人口密度,数据来源:https://github.com/jakevdp/data-USstates/ ,共3张数据表格:stat ...

  6. Tensorflow基本开发步骤——以逻辑回归拟合二维数据为例

    深度学习大概有如下四个步骤:准备数据,搭建模型,迭代训练和使用模型. 一.准备数据 使用y=2x作为主体,通过加入一些随机干扰噪声产生一组数据.代码如下: import tensorflow as t ...

  7. 【教男朋友用python做计量】02.输出OLS回归结果的参数

    第二节 输出OLS回归结果的参数 文章目录 第二节 输出OLS回归结果的参数 前言 回归结果提取 1.基础回归 2.输出回归结果参数 总结 前言 FBI WARNING: 上一节讲了怎样用statsm ...

  8. Python Statsmodels 统计包之 OLS 回归

    Statsmodels 是 Python 中一个强大的统计分析包,包含了回归分析.时间序列分析.假设检 验等等的功能.Statsmodels 在计量的简便性上是远远不及 Stata 等软件的,但它的优 ...

  9. python如何运用ols_使用OLS回归(Python,StatsModels,Pandas)预测未来值

    我目前正试图在Python中实现一个MLR,我不知道如何去应用我发现的未来值的系数.使用OLS回归(Python,StatsModels,Pandas)预测未来值 import pandas as p ...

最新文章

  1. DIV+CSS笔记(一)
  2. ASP.NET MVC easyUI-datagrid 分页
  3. Android Activity:四种启动模式,Intent Flags和任务栈(转自他人博客)
  4. vue3.0、cli4项目引入element plus
  5. vue process.env获取不到_从文档开始,重学vue(下)源码级别
  6. shell编程之if判断总结
  7. 7-8 字符串字母大小写转换 (15 分)
  8. 使用阿里云搭建微信公众号管理系统
  9. HDU-4292-Food(最大流匹配问题)
  10. springboot 解决 woff2、ttf 跨域无法解析问题
  11. linux-2.6.32在mini2440开发板上移植(15)之移植看门狗驱动
  12. 基于btest.so的策略测试方案
  13. Java大作业之餐厅管理系统
  14. 志愿者报名图片大小调整
  15. 侍魂胧月传说辅助【有八鸽】侍魂胧月传说全能免费辅助脚本功能和使用说明
  16. TM4C123G学习记录(2)--GPIO
  17. 弧度和度 180/PI PI/180换算关系
  18. 自考本科有用吗?对职业发展有多大用处
  19. OpenCV 绘制正多边形
  20. CATIA软件操作——自定义宏命令图标

热门文章

  1. 膜拜大佬!21条MySQL性能调优经验
  2. python定义变量的几种方式
  3. 小红书2020校招第7题
  4. 【前端工程化】windicss ,默认自带的字体颜色不好使,在背景色background-color中使用默认颜色的配置,windi.config.ts的配置注意事项
  5. Python 本身真的有用吗?
  6. 关于单精度浮点数的计算
  7. 博途PLC IEC定时器编程应用(SCL语言)
  8. Java敏感词过滤、java关键词过滤工具包原理
  9. 模拟电路:晶体管偏置
  10. Python定时自动给微信好友发送天气预报