引入

回归分析是数据分析中最基础也是最重要的分析工具,绝大多数的 数据分析问题,都可以使用回归的思想来解决。回归分析的任务就是, 通过研究自变量X和因变量Y的相关关系,尝试去解释Y的形成机制,进 而达到通过X去预测Y的目的。
回归分析要完成的三个使命:
第一、识别重要变量; 第二、判断相关性的方向; 第三、要估计权重(回归系数)。
数据类型

横截面数据:在某一时点收集的不同对象的数据。
例如: (1)我们自己发放问卷得到的数据 (2)全国各省份2018年GDP的数据 (3)大一新生今年体测的得到的数据

时间序列数据:对同一对象在不同时间连续观察所取得的数据。
例如: (1)从出生到现在,你的体重的数据(每年生日称一次)。 (2)中国历年来GDP的数据。 (3)在某地方每隔一小时测得的温度数据。

面板数据:横截面数据与时间序列数据综合起来的一种数据资源。

例如: 2008-2018年,我国各省份GDP的数据。

python 截面回归 因子 截面数据回归分析_数学建模


python 截面回归 因子 截面数据回归分析_方差_02


有点类似于一元线性函数拟合

关于回归系数的解释

python 截面回归 因子 截面数据回归分析_数学建模_03


python 截面回归 因子 截面数据回归分析_数据_04


python 截面回归 因子 截面数据回归分析_回归分析_05


有时候回归模型中变量会取对数,对于什么时候取对数还没有固定的规则,但是有一些经验法则:

(1)与市场价值相关的,例如,价格、销售额、工资等都可以取对数; (2)以年度量的变量,如受教育年限、工作经历等通常不取对数;

(3)比例变量,如失业率、参与率等,两者均可;

(4)变量取值必须是非负数,如果包含0,则可以对y取对数ln(1+y);

取对数的好处:(1)减弱数据的异方差性(2)如果变量本身不符合正态分布,取 了对数后可能渐近服从正态分布(3)模型形式的需要,让模型具有经济学意义。

四类模型回归系数的解释

python 截面回归 因子 截面数据回归分析_python 截面回归 因子_06


python 截面回归 因子 截面数据回归分析_数学建模_07


如果自变量中有定性变量,例如性别、地域等,在 回归中要设置为虚拟变量

python 截面回归 因子 截面数据回归分析_数学建模_08


python 截面回归 因子 截面数据回归分析_回归分析_09


为了避免完全多重共线性的影响,引入虚拟变量的个数一般是分类数减1。

实例

python 截面回归 因子 截面数据回归分析_python 截面回归 因子_10

利用stata回归分析

数据的描述性统计

定量数据

python 截面回归 因子 截面数据回归分析_python 截面回归 因子_11


定性数据

tab 变量名,gen(A) 返回对应的这个变量的频率分布表,并生成对应的虚拟变量(以A开头)。

例如

python 截面回归 因子 截面数据回归分析_回归分析_12


python 截面回归 因子 截面数据回归分析_数学建模_13

介绍11个指标的总体情况

python 截面回归 因子 截面数据回归分析_方差_14


stata回归语句

(默认使用的OLS:普通最小二乘估计法)

regress 评价量 团购价元 商品毛重kg A1 A2 A3 B1 B2 B3 B4 B5 B6 B7 B8 B9 C1 C2 D1 D2 D3 D4 D5 E1 E2 E3 E4 F1 F2 G1 G2 G3 G4

python 截面回归 因子 截面数据回归分析_python 截面回归 因子_15


python 截面回归 因子 截面数据回归分析_数据_16


Stata会自动检测数据的完全多重共线性问题(某个变量和其它变量相关性很强)。
也可以单独检验是否存在严重的多重共线性问题

python 截面回归 因子 截面数据回归分析_回归分析_17


Stata计算各自变量VIF的命令(在回归结束后使用):

estat vif

普通回归结果

python 截面回归 因子 截面数据回归分析_数学建模_18


其中Model为方差分析中的SSR,Residual为SSE,Total为SST

python 截面回归 因子 截面数据回归分析_python 截面回归 因子_19


为了更为精准的研究影响评价量的重要因素(去除量纲的影响), 我们可考虑使用标准化回归系数。 对数据进行标准化,就是将原始数据减去它的均数后,再除以该变 量的标准差,计算得到新的变量值,新变量构成的回归方程称为标准化 回归方程,回归后相应可得到标准化回归系数。 标准化系数的绝对值越大,说明对因变量的影响就越大(只关注显著的回归系数)。

Stata标准化回归语句

regress 评价量 团购价元 商品毛重kg A1 A2 A3 B1 B2 B3 B4 B5 B6 B7 B8 B9 C1 C2 D1 D2 D3 D4 D5 E1 E2 E3 E4 F1 F2 G1 G2 G3 G4,b

python 截面回归 因子 截面数据回归分析_python 截面回归 因子_20


Beta为标准化回归系数,衡量哪一个变量对因变量影响最大,coef是未标准化的回归系数,着重分析显著的回归系数,还有个cons是常数

横截面数据容易出现异方差的问题
画残差与拟合值的散点图,可以发现数据波动明显,拟合值出现负数
stata命令

rvfplot

python 截面回归 因子 截面数据回归分析_python 截面回归 因子_21


python 截面回归 因子 截面数据回归分析_数学建模_22

异方差的假设检验

BP检验

python 截面回归 因子 截面数据回归分析_python 截面回归 因子_23


Stata命令(在回归结束后使用):

estat hettest,rhs iid

python 截面回归 因子 截面数据回归分析_回归分析_24


原假设:扰动项不存在异方差 P值小于0.05,说明在95%的置信水平下拒绝原假设,即我们认为扰动项存在异方差。怀特检验(推荐)

python 截面回归 因子 截面数据回归分析_回归分析_25


Stata命令(在回归结束后使用):

estat imtest,white

原假设:扰动项不存在异方差 P值小于0.05,说明在95%的置信水平下拒绝原假设,即我们认为扰动项存在异方差。

python 截面回归 因子 截面数据回归分析_python 截面回归 因子_26


怎么解决异方差: 使用OLS + 稳健的标准误

如果发现存在异方差,一种处理方法是,仍然进行OLS 回归,但使用稳健标 准误。这是最简单,也是目前通用的方法。只要样本容量较大,即使在异方差的 情况下,若使用稳健标准误,则所有参数估计、假设检验均可照常进行。换言之, 只要使用了稳健标准误,就可以与异方差“和平共处”了。

reg 评价量 团购价元 商品毛重kg A1 A2 A3 B1 B2 B3 B4 B5 B6 B7 B8 B9 C1 C2 D1 D2 D3 D4 D5 E1 E2 E3 E4 F1 F2 G1 G2 G3 G4,r

python 截面回归 因子 截面数据回归分析_数学建模_27


解决了异方差问题,找到更多显著的值

逐步回归(自变量筛选的一种方法)

(剔除多重共线性的影响,在每个分类变量中任意去除一个元素即可)
所谓多重共线性,是指自变量之间存在某种相关或者高度相关的关系,其中某个自变量可以被其他自变量组成的线性组合来解释。

向前逐步回归Forward selection:
将自变量逐个引入模型,每引入一个自变量 后都要进行检验,显著时才加入回归模型。 (缺点:随着以后其他自变量的引入,原来显著的自变量也可能又变为不显著了, 但是,并没有将其及时从回归方程中剔除掉。)
对上述实例例使用

stepwise reg 评价量 团购价元 商品毛重kg A1 A3 B1 B2 B3 B4 B5 B6 B7 B9 C1 D1 D2 D3 D4 E1 E2 E3 F1 G1 G2 G3,  r pe(0.05)

python 截面回归 因子 截面数据回归分析_回归分析_28


向后逐步回归Backward elimination:

与向前逐步回归相反,先将所有变量均 放入模型,之后尝试将其中一个自变量从模型中剔除,看整个模型解释因变量的 变异是否有显著变化,之后将最没有解释力的那个自变量剔除;此过程不断迭代, 直到没有自变量符合剔除的条件。(缺点:一开始把全部变量都引入回归方程, 这样计算量比较大。若对一些不重要的变量,一开始就不引入,这样就可以减少 一些计算。当然这个缺点随着现在计算机的能力的提升,已经变得不算问题了)

stepwise reg 评价量 团购价元 商品毛重kg A1 A3 B1 B2 B3 B4 B5 B6 B7 B9 C1 D1 D2 D3 D4 E1 E2 E3 F1 G1 G2 G3,  r pr(0.05)

python 截面回归 因子 截面数据回归分析_数学建模_29


注意:向前逐步回归和向后逐步回归的结果可能不同。

总结:

分析前进行数据的描述性统计
stata回归分析,要求找出重要影响因素选择标准化回归
异方差检验,存在异方差要考虑使用OLS + 稳健的标准误
想要自变量筛选,剔除多重共线性影响可以直接利用逐步回归分析