第一节 利用python进行最小二乘法回归分析



写在前面的话

FBI WARNING

  • 本人是个计量小白,不会用stata,只会python,这学期学了计量经济学。关于如何用python做计量的文档相比起stata来说太少,且一些更深层次的检验尚没有太多教程,本菜狗在完成课程作业的时候只能硬着头皮读官方文档,也深刻认识到用python做计量的不易(x)。
  • 好在statsmodels的功能也强大,官方文档也很细,其实该有的功能差不多都有,遗憾之处就是用的人太少了,所以留下来的可以供人参考的内容比较少。于是乎,本菜狗本着学习的目的,在完成作业的时候将遇到的计量方法和对应如何用python实现的步骤都写在这里,供自己平时参考用,也教教我那只会用stata的对象,让他早日放弃点点点,和我一起在VSC面向对象编程0.0
  • 本文供自己和小对象学习用,本人也是个正在摸索用python做计量的菜狗,所以内容有错误之处还望各位大佬指证。
  • 所以,我的可爱准备好和我一起学了吗?那么,开始吧~

一、关于statsmodels

  • statsmodels是一个Python的包,它提供了用于估计许多不同统计模型、进行统计测试和统计数据探索的类和函数。我们常用的计量的模型和检验都可以通过statsmodels包里自带的方法完成,例如OLS,GLS,时间序列分析等,并且输出回归的结果。下图是官方文档里的user guide界面:
    在这里插入图片描述
    本次学习的内容也是基于statsmodels模块进行的。

  • 官方文档链接:https://www.statsmodels.org/stable/index.html

  • 在python里获取statsmodels的方法:

      pip install statsmodels
    

工具准备好啦~我们就继续冲吧~!

二、利用statsmodels进行OLS分析

1.使用statsmodels.api.OLS计算

准备工具包和数据:

import pandas as pd
import numpy as np
import statsmodels.api as sm
###准备数据,这里随机生成
X=pd.DataFrame(np.random.randint(1,10,(20,3)),columns=["X1","X2","X3"])
Y=np.random.randint(1,10,20)

下面要做的就是让Y对X进行回归,注意的是,这里需要我们给X增加偏置列(对应常数项),然后再进行回归,最后输出回归的结果。

回归的过程:

###给因变量数据集增加常数项的列
X = sm.add_constant(X)

###回归
regression=sm.OLS(Y,X)
model=regression.fit()
###输出回归结果
model.summary()

输出如下图,由于我这里是随机生成的数据,所以P值不显著,只是为了展示这个过程而已~关于回归结果的解读就不用我说啦~除了回归的整体结果以外,还可以输出单个参数,例如系数,R方等等,具体内容在文档里都有~之后我也会给你总结哒ヽ(✿゚▽゚)ノ
在这里插入图片描述
关于如何用python做基本的回归就是这样啦,是不是很简单,所以你每次看我写的时候都说好厉害,我内心就emmmm(ーー゛)
下面还有一个用OLS回归的方法~继续往下看吧!

2.使用statsmodels.formula.api.ols计算

刚刚说的是怎么用sm进行回归,总结一下就是把X增加一列常数列,然后OLS(Y,X)直接扔进去就行。但是如果遇到X和Y都在一张表里,不想把他们先拆分的情况,就可以使用formula下的OLS计算方法,也很简单。
我们还是先准备包和数据

数据准备:

import pandas as pd
import numpy as np 
import statsmodels.formula.api as smf

#准备数据,我这里也随机生成啦
df=pd.DataFrame(np.random.randint(1,10,(20,4)),columns=['Y',"X1","X2","X3"])

这里我们的Y是因变量,X1-3是自变量,我们想要Y对X1,X2,X3回归,用formula的方法如下:

用formula下的OLS进行回归:

#回归
regression2=smf.ols(formula="Y~X1+X2+X3",data=df)
model2=regression2.fit()
#这里的参数,formula="因变量~自变量1+自变量2+...",data=你要回归的数据集。当然,还有其他参数,自己去官方文档琢磨吧~最重要的就是formula和data啦,我做这几次作业其实也就只用了这两个参数。
#输出结果
model2.summary()

在这里插入图片描述


总结

这一节就是给你简单介绍了一下statsmodels做OLS回归,有两个方法:

  • 一个是sm.OLS(Y,X),记得要给自变量加常数项列;
  • 一个是直接使用formula的方法,smf.ols(“Y~X1+X2”,df)。
  • 然后通过fit()的方法进行回归,然后summary()输出回归的结果。

其实我觉得学这个最好的方式就去读他的官方文档。

之后我也会给你总结哒~当然还可以用纯python实现回归,你需要的话我也发给你呀。
好啦今天的内容就是这样~么么我的可爱(づ ̄3 ̄)づ╭❤~

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐