作者
:李胜胜 (安徽大学)
邮箱
:[email protected]
编者按
:本文摘译自下文,特此致谢!
Source
:Correia S, Guimarães P, Zylkin T. Fast Poisson estimation with high-dimensional fixed effects[J]. The Stata Journal, 2020, 20(1): 95-115.
-PDF-
温馨提示:
文中链接在微信中无法生效。请点击底部
「阅读原文」
。
目录
1. 引言
2. 估计方法
3. ppmlhdfe 命令
4. Stata Stata 范例
4.1 范例 1:模拟数据
4.2 范例 2:Stata 手册例子
4.3 范例 3:贸易引力模型
4.4 范例 4:结果输出及展示
5. 参考文献
6. 相关推文
1. 引言
泊松回归现已成为「计数数据模型」的标准方法。与普通最小二乘法一样,泊松回归的一致性估计也需要正确说明因变量的条件均值假设 (Gourieroux 等,1984)。在该条件下,泊松回归就能转化为泊松伪最大似然 (PPML) 回归。Gourieroux 等 (1984) 通过放松因变量分布的假设,使泊松回归不再局限于计数数据。也因此,泊松伪最大似然 (PPML) 回归可以应用于任何非负的因变量。
实际上,当非负数据中存在较多 0 的时候,PPML 似乎是最好的选择。并且,这种情况常发生于以下几个领域,例如公司研发支出、专利引用计数、日常产品销售、医生就诊次数、公司信贷量、拍卖竞拍者数量和跨地区通勤者数量。
但是,学者更多使用线性对数回归,即使 PPML 更合理。一种可能的解释是,学者可以轻松估计控制多个固定效应的线性回归。尤其是伴随着大型面板数据集的可用性不断提高,以及具有高维固定效应 (HDFE) 的线性回归模型估计技术的进步,使得学者能够控制更多异质性来源。
需要指出的是,PPML 也可以轻松的实现 HDFE。为此,本文将介绍新命令
ppmlhdfe
。相对于用于现有 HDFE 非线性估计算法,
ppmlhdfe
消除了一些不必要的步骤,提高了参数的计算速度。
2. 估计方法
2.1 IRLS 算法
GLM 是基于 Nelder 和 Wedderburn (1972) 引入的指数分布族的一类回归模型,主要包括流行的非线性回归模型,例如 Logit、Probit、Cloglog 和 Poisson。Hardin 和 Hilbe (2018) 将指数族定义如下:
其中,
、
和
是特定函数,
和
是参数。对于这些模型而言:
给定一组具有
个独立的观察值,每个观察值均由
索引,可以通过链接函数
将期望值与一组协变量 (
) 关联。更具体地说,假设下式:
则 GLM 的似然函数可以写为:
通过求解 (伪) 似然最大化的一阶条件,得到
β
的估计。应用高斯-牛顿算法和期望 Hessian 函数导出修正方程为:
其中
是解释变量矩阵,
是权重矩阵,
是因变量的变换,
是迭代索引。式 (1) 表明
β
的估计值是通过加权最小二乘法递归而获得,这种方法称之为 IRLS。
2.2 泊松回归
泊松回归定义如下:
实现 IRLS 的回归权重可以简化为:
而中间回归的因变量则为:
因此,在 (1) 中实现 IRLS 更新回归仅需要计算在先前迭代中获得拟合值
的向量即可。
处理 HDFE
在 HDFE 下,IRLS 的困难是
可能包含很多固定效应,导致无法直接计算
。解决方案是使用一个替代的公式,即只估计非固定效应协变量的系数 (例如,
),从而降低维数。由于式 (1) 是加权线性回归,因此可以依靠 FWL 定理来探讨固定效应。这意味着代替式 (1),可以使用下式:
其中,
和
分别是主协变量矩阵
和因变量
的变换后的加权。此外,FWL 定理还暗示从式 (4)计算的残差与从式 (1) 计算的残差相同。这意味着可以使用以下方法对
和
执行所需的更新:
其中,
是一个向量,该向量收集使用式 (4) 计算的残差。然后,与原始 IRLS 循环一样,
和
的新值直接从式 (2) 和 (3) 开始。其次,这也意味着,一旦
收敛到正确的估计值
,式 (4) 中加权最小二乘回归的估计方差-协方差矩阵将成为
正确的方差-协方差矩阵。
加速 HDFE–GIRLS
命令
poi2hdfe
可以实现式 (4),同时使用
reghdfe
作为运行 HDFE 加权最小二乘回归。这是一个密集型计算过程,需要在每次 IRLS 迭代中估算 HDFE 回归模型。但是,
ppmlhdfe
中有多种变通办法,可以使其效率更高。例如,
ppmlhdfe
直接嵌入
reghdfe
的 Mata 中。因此利用了这样一个事实,它们在每个 IRLS 迭代中保持不变,某些计算只需要执行一次。但最显著的速度改进来自于对标准 HDFE–IRLS 算法的改进,该算法旨在减少对
reghdfe
的调用次数。
最大似然估计的存在性
Santos Silva 和 Tenreyro (2010,2011) 指出,对于某些数据配置,可能不存在泊松回归的最大似然估计 (MLE),进而导致估计可能无法收敛或收敛到错误的值。在泊松回归的情况下,如果对数似然随着一个或多个系数趋于无穷大而单调增加,则会发生这种情况。Santos Silva 和 Tenreyro (2010) 认为发生这种情况的主要原因是变量间的多重共线性。为此,他们建议排除有问题的变量。但是,排除哪个回归变量是一个模棱两可的决定,可能会影响其余参数的识别。此外,在具有多个 HDFE 的泊松模型中,该策略甚至不可行。
Correia 等 2019 讨论了各种 GLM 模型估计中的必要条件和充分条件,并表明在泊松回归情况下,如果从样本中删除一些观察值,可能得到总 MLE 估计。这些单独的观测值不传递估计过程的相关信息,可以安全地丢弃。同时,删除这些观察值后,某些回归变量将产生共线性,因此也必须删除。此外,Correia 等 2019 提出了一种识别分离观察结果的方法,并且即使在 HDFE 存在情况下,也可以成功运行。
3. ppmlhdfe 命令
3.1 命令安装:
ssc install ppmlhdfe, replace
3.2 语法结构:
ppmlhdfe depvar [indepvars] [if] [in] [weight] , /// [absorb(absvars)] [options]
absorb(absvars)
:要吸收的分类变量 (固定效应),也允许单独的斜率;
absorb(..., savefe)
:使用
hdfe #
保存所有固定效应估计值。
exposure(varname)
:在系数约束为 1 的模型中包含 ln(varname);
offset(varname)
:在系数约束为 1 的模型中包含 varname;
d(newvar)
:将固定效应之和另存为newvar;
d
:如上,但变量将另存为 _ppmlhdfe_d;
vce(vcetype)
:vcetype 可以是 robust 或聚类;
tolerance(#)
:收敛标准,默认为
tolerance(1e-8)
;
guess(string)
:设置用于设置初始值的规则;
separation(string)
:用于删除分离的观测值及其相关回归变量的算法;
maxiteration(#)
:指定最大迭代次数;
version
:报告
ppmlhdfe
的版本号和日期;
display_options
:控制回归表的选项,如置信水平、数字格式等。
4. Stata Stata 范例
4.1 范例 1:模拟数据
从一个简单的例子开始,我们来说明
ppmlhdfe
方法处理 MLE 估计不存在时的优势。如前所述,
ppmlhdfe
注意识别分离的观测值,然后以保证存在有意义的 MLE 方式限制样本。
以下数据包括六个观察值和三个解释变量:
input y x1 x2 x3 0 1 2 1 0 0 0 2 0 2 3 3 1 1 2 4 2 2 4 5 3 1 2 6 end
如果试图用
glm
命令估计泊松回归,Stata 就无法收敛。
poisson
命令可以得到三个解释变量系数的估计值,但是会发现估计结果并不可靠。
. poisson y x1 x2 x3, nolog Poisson regression Number of obs = 6 LR chi2(3) = 8.89 Prob > chi2 = 0.0308 Log likelihood = -4.0415302 Pseudo R2 = 0.5237 ----------------------------------------------------------------------- y | Coef. Std. Err. z P>|z| [95% Conf. Interval] ------+---------------------------------------------------------------- x1 | -31.29521 8467.059 -0.00 0.997 -16626.43 16563.83 x2 | 15.84339 4233.529 0.00 0.997 -8281.722 8313.408 x3 | .7970409 .4608654 1.73 0.084 -.1062388 1.70032 _cons | -4.032453 2.868066 -1.41 0.160 -9.653759 1.588853 -----------------------------------------------------------------------
使用命令
ppml
识别存在问题的数据,并删除变量
。但是,拟合回归仍然有问题。
. ppml y x1 x2 x3 note: checking the existence of the estimates note: starting ppml estimation Iteration 1: deviance = 5.984675 Iteration 2: deviance = 5.625005 Iteration 3: deviance = 5.538839 Iteration 4: deviance = 5.507367 Iteration 5: deviance = 5.49579 Iteration 6: deviance = 5.49153 Iteration 7: deviance = 5.489963 Iteration 8: deviance = 5.489387 Iteration 9: deviance = 5.489175 Iteration 10: deviance = 5.489097 Iteration 11: deviance = 5.489068 Iteration 12: deviance = 5.489058 Iteration 13: deviance = 5.489054 Iteration 14: deviance = 5.489052 Iteration 15: deviance = 5.489052 Warning: variance matrix is nonsymmetric or highly singular