回归分析是数据分析中最基础也是最重要的分析工具,绝大多数的数据分析问题,都可以使用回归的思想来解决。回归分析的任务就是,通过研究自变量X和因变量Y的相关关系,尝试去解释Y的形成机制,进而达到通过X去预测Y的目的。
常见的回归分析有五类:线性回归、0‐1回归、定序回归、计数回归和生存回归,其划分的依据是因变量Y的类型。本讲主要学习线性回归。
数据类型 | 解释 | 举例 | 建模方法 |
---|---|---|---|
横截面数据 | 在某一时点收集的不同对象的数据 | 我们自己发放问卷得到的数据、全国各省份2018年GDP的数据、大一新生今年体测的得到的数据 | 多元线性回归 |
时间序列数据 | 对同一对象在不同时间连续观察所取得的数据 | 从出生到现在,你的体重的数据(每年生日称一次)、中国历年来GDP的数据、在某地方每隔一小时测得的温度数据 | 移动平均、指数平滑、ARIMA、GARCH、VAR、协积 |
面板数据 | 横截面数据与时间序列数据综合起来的一种数据资源 | 2008‐2018年,我国各省份GDP的数据 | 固定效应和随机效应、静态面板和动态面板 |
类型 | 模型 | Y的特点 | 例子 |
---|---|---|---|
线性回归 | OLS、GLS(最小二乘) | 连续数值型变量 | GDP、产量、收入 |
0-1回归 | logistic回归 | 二值变量 | 是否违约、是否得病 |
定序回归 | probit定序回归 | 定序变量 | 等级评定(优良差) |
计数回归 | 泊松回归(泊松分布) | 计数变量 | 每分钟车流量 |
生存回归 | Cox等比例风险回归 | 生存变量(截断数据) | 企业、产品的寿命 |
其中 μ \mu μ是被称为误差项的随机变量,反映了变量线性关系外的随机因素对y的影响。
上式称为理论回归模型,对它有以下假定:
扰动项需要满足的条件
y i = β 0 + β 1 x i + μ i y_i=\beta_0+\beta_1x_i+\mu_i yi=β0+β1xi+μi
满足球型扰动项,即满足“同方差”和“无自相关”两个条件。
这里注意,横截面数据容易出现异方差的问题,时间序列数据容易出现自相关的问题。
y ^ = β ^ 0 + β ^ 1 x \hat y=\hat\beta_0+\hat\beta_1x y^=β^0+β^1x
误差 μ \mu μ包含了所有与 y y y相关,但未添加到回归模型中的变量。如果这些变量和我们已经添加的自变量相关,则存在内生性。
%% 蒙特卡洛模拟:内生性会造成回归系数的巨大误差
times = 300; % 蒙特卡洛的次数
R = zeros(times,1); % 用来储存扰动项u和x1的相关系数
K = zeros(times,1); % 用来储存遗漏了x2之后,只用y对x1回归得到的回归系数
for i = 1: times
n = 30; % 样本数据量为n
x1 = -10+rand(n,1)*20; % x1在-10和10上均匀分布,大小为30*1
u1 = normrnd(0,5,n,1) - rand(n,1); % 随机生成一组随机数
x2 = 0.3*x1 + u1; % x2与x1的相关性不确定, 因为我们设定了x2要加上u1这个随机数
% 这里的系数0.3我随便给的,没特殊的意义,你也可以改成其他的测试。
u = normrnd(0,1,n,1); % 扰动项u服从标准正态分布
y = 0.5 + 2 * x1 + 5 * x2 + u ; % 构造y
k = (n*sum(x1.*y)-sum(x1)*sum(y))/(n*sum(x1.*x1)-sum(x1)*sum(x1)); % y = k*x1+b 回归估计出来的k
K(i) = k;
u = 5 * x2 + u; % 因为我们回归中忽略了5*x2,所以扰动项要加上5*x2
r = corrcoef(x1,u); % 2*2的相关系数矩阵
R(i) = r(2,1);
end
plot(R,K,'*')
xlabel("x_1和u'的相关系数")
ylabel("k的估计值")
无内生性(no endogeneity)要求所有解释变量均与扰动项不相关,这个条件一般很难达到,因此我们对于变量作以下两种分类
核心解释变量:我们最感兴趣的变量,因此我们特别希望得到对其系数的一致估计(当样本容量无限增大时,收敛于待估计参数的真值 )。
控制变量:我们可能对于这些变量本身并无太大兴趣。而之所以把它们也放入回归方程,主要是为了 “控制住” 那些对被解释变量有影响的遗漏因素。
在实际应用中,我们只要保证核心解释变量与不相关即可。
y = a + b x + μ y=a+bx+\mu y=a+bx+μ
β 0 ^ \hat{\beta_0} β0^ : 一般不考虑(所有变量都是0才有意义)
β m ^ ( m = 1 , 2... k ) \hat{\beta_m}(m=1,2...k) βm^(m=1,2...k) :在控制了其他变量的情况下, x m i x_{mi} xmi每增加一个单位,对 y i y_i yi造成的变化。
y = a + b l n x + μ y=a+blnx+\mu y=a+blnx+μ
什么时候取对数
- 与市场价值相关的,例如,价格、销售额、工资等都可以取对数;
- 以年度量的变量,如受教育年限、工作经历等通常不取对数;
- 比例变量,如失业率、参与率等,两者均可;
- 变量取值必须是非负数,如果包含0,则可以对y取对数ln(1+y);
取对数的好处
- 减弱数据的异方差性
- 如果变量本身不符合正态分布,取了对数后可能渐近服从正态分布
- 模型形式的需要,让模型具有经济学意义。
x每增加1%,y平均变化b/100个单位。
l n y = a + b x + μ lny=a+bx+\mu lny=a+bx+μ
x每增加1个单位,y平均变化(100b)%。
l n y = a + b l r n x + μ lny=a+blrnx+\mu lny=a+blrnx+μ
x每增加1%,y平均变化b%
summarize 变量1 变量2 ... 变量n
tabulate 变量名,gen(A)
STATA语句 : regress y x1 x2 … xk
拟合优度 R 2 R^2 R2较低怎么办
- 回归分为解释型回归和预测型回归。
预测型回归一般才会更看重 R 2 R^2 R2。解释型回归更多的关注模型整体显著性以及自变量的统计显著性和经济意义显著性即可。- 可以对模型进行调整,例如对数据取对数或者平方后再进行回归。
- 数据中可能有存在异常值或者数据的分布极度不均匀。
- 我们引入的自变量越多,拟合优度会变大。但我们倾向于使用调整后的拟合优度,如果新引入的自变量对SSE的减少程度特别少,那么调整后的拟合优度反而会减小。
为了去除量纲的影响,我们可使用标准化回归系数。
对数据进行标准化,就是将原始数据减去它的均数后,再除以该变量的标准差,计算得到新的变量值,新变量构成的回归方程称为标准化回归方程,回归后相应可得到标准化回归系数。标准化系数的绝对值越大,说明对因变量的影响就越大(只关注显著的回归系数)
regress y x1 x2 … xk,beta
bata可简写为b
- 常数项没有标准化回归系数
常数的均值是其本身,经过标准化后变成了0。
-除了多了标准化回归系数 ,和之前的回归结果完全相同。
对数据进行标准化处理不会影响回归系数的标准误,也不会影响显著性。
\\在回归结束后运行命令:
rvfplot \\(画残差与拟合值的散点图)
rvpplot x \\(画残差与自变量x的散点图)
estat hettest ,rhs iid\\异方差bp检验
regress y x1 x2 … xk,robust
Stock and Watson (2011)推荐,在大多数情况下应该使用“OLS + 稳健标准误”。
2. 广义最小二乘估计法GLS(有缺陷)
原理:方差较小的数据包含的信息较多,我们可以给予信息量大的数据更大的权重(即方差较小的数据给予更大的权重)
多重线性回归,也即通过 X 1 X_1 X1, X 2 X_2 X2等多个自变量(解释变量)来构建线性回归模型预测因变量 Y Y Y。在多重线性回归中,当多个自变量之间存在 精确/高度 相关关系时,会导致回归系数难以估计/估计不准,这时就出现了共线性问题。
\\Stata计算各自变量VIF的命令(在回归结束后使用):
estat vif
- 如果不关心具体的回归系数,而只关心整个方程预测被解释变量的能力,则通常可以 不必理会多重共线性(假设你的整个方程是显著的)。这是因为,多重共线性的主要后果是使得对单个变量的贡献估计不准,但所有变量的整体效应仍可以较准确地估计。
- 如果关心具体的回归系数,但多重共线性并不影响所关心变量的显著性,那么也可以不必理会。即使在有方差膨胀的情况下,这些系数依然显著;如果没有多重共线性,则只会更加显著。
- 如果多重共线性影响到所关心变量的显著性,则需要增大样本容量,剔除导致严重共线性的变量(不要轻易删除,因为可能会有内生性的影响),或对模型设定进行修改。
\\向前逐步回归Forward selection:
stepwise regress y x1 x2 … xk, pe(#1)
\\向后逐步回归Backward elimination:
stepwise regress y x1 x2 … xk, pr(#2)
- 如果你筛选后的变量仍很多,可以减小#1或者#2;如果筛选后的变量太少了,可以增加#1或者#2。
- x 1 x 2 … x k x_1 x_2 … x_k x1x2…xk之间不能有完全多重共线性(和regress不同哦)
- 可以在后面再加参数b和r,即标准化回归系数或稳健标准误
-向前逐步回归和向后逐步回归的结果可能不同。- 不要轻易使用逐步回归分析,因为剔除了自变量后很有可能会产生新的问题,例如内生性问题。