reg2logit:用OLS估计Logit模型参数

发布时间:2021-01-13 阅读 112

Stata连享会   主页 || 视频 || 推文 || 知乎

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

New! lianxh 命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh

课程详情 https://gitee.com/arlionn/Course   |   lianxh.cn

课程主页 https://gitee.com/arlionn/Course

作者: 彭莘昱 (中山大学)
E-Mail: <sonya_p$foxmail.com>


目录


编者按:
本文部分内容翻译自 PAUL ALLISON, Better Predicted Probabilities from Linear Probability Models,特此致谢!

1. 应用背景

reg2logit 是 2020 年由 Paul T. von Hippel 等人提出的由线性回归的 OLS 估计 logistic 模型参数的新命令,其估计的理论基础是 Haggstrom (1983) 提出的变换公式。该公式后来被 Allison (2020) 应用为「线性判别模型」(LDM) 方法。

LDM 模型来源于 LPM 和 logit 模型的转换。首先,LDM 可以转换为一个 logit 模型,其次,线性概率模型 (LPM) 的参数估计能够转换为「第一步转换后的 Logit 模型」参数的极大似然估计。故而只需将转换后的参数插入到 logit 模型中即可得到 LDM 模型,并且预测概率 P(Y|x)

LDM 模型的前提假设是解释变量 x 是基于离散的被解释变量 y 的值 (取 0 和 1) 的多元正态变量,即在 y 确定的 cluster 中,向量 x 的联合分布是多元正态分布。

1.1 LPM 与 logit 之辩

线性概率模型 (LPM) 即被解释变量 y 是二元或多元离散变量 (dichotomous) 的线性回归模型。以二元变量为例,当 y 是取值为 0 或 1 时,假设

在满足经典线性假定 (CLM) 的情境下,E(y|x)=P(Y=1|x)。即:

以上就是线性概率模型 (下简称 LPM),在估计参数时使用的是 OLS 线性回归。

LPM 和 logit 模型均可以作为预测事件概率值 P(y|x) 的方法,然而孰优孰劣,学者们展开了激烈的讨论。

论点 1: LPM 优于 Logit

reg2logit 命令的作者 Paul von Hippel 曾认为 LPM 优于 Logit。他在 2017 年发布的 一篇文章 阐述了他的理由。

  • 第一,OLS 回归速度要比 logistic 回归更快,这对于数据量大、模型复杂、模型频繁更新迭代的情况更为便捷。
  • 第二,概率的变化要比胜算比 (P(y|x)/(1P(y|x)) 的变化更加直观,在解释模型时参数的意义更加直观。
  • 第三,Paul von Hippel 证明了在预测概率区间 [0.20.8] 内,LPM 非常接近 Logit 模型,在小范围超过这个区间,LPM 的表现也较好。
  • 第四,由于 Logit 模型使用的极大似然估计 (下简称 MLE) 的准完全分离 (quansi-complete separation),Logit 模型可能会崩溃,但是 LPM 没有这方面的问题。

论点 2: Logit 优于 LPM

reg2logit命令的另一作者 Paul Allison 更加偏好使用 Logit 模型,他有以下几个观点

  • 第一,LPM 可能会产生无效的概率预测值,而 Logit 不会。由于 LPM 的被解释变量是 1 和 0,在进行线性回归时,最终得到的概率预测值可能大于 1 或小于 0,然而这是无效的概率预测值。
  • 第二,对于二分类的情况,Logit 的系数及估计值将比 LPM 更稳定。Allison 认为 LPM 不是真实的产生二分结果的机制。
  • 第三,Logit 模型受解释变量间相互作用影响小,参数更加稳定。在 一篇文章 里,Allison 具体地阐释了这一观点。

Logit 模型和 LPM 之间的优劣难以比较,是否有另一种方法能够结合两者的优势,估计二元变量的概率值呢?

答案是肯定的,就是开篇所介绍的 LDM 模型。下面将从判别分析说起,推导 LDM 的具体转换方式,模拟 reg2logit 命令的应用,并对本文内容做一个小结,总结 LDM 的优势和应用场景。

1.2 判别分析 (DA) 与线性判别模型 (LDM)

判别分析是根据个体的特征将个体分为若干类别中的一类。其基本原理如下:按照一定的判别准则,建立一个或多个判别函数,用研究对象的大量信息确定判别函数中的待定系数,并计算判别指标。例如,对于一个两类问题的判别,就是将模式 y 划分成 ω1ω2

判别分析和 Logistic 回归有着密不可分的联系。两者都可以达到对样本进行分类的目的。在 Logistic 回归中,变量 y 可能反映几个群体中的一个群体的隶属关系,而在判别分析的每个群体中,向量 x 都有一个多变量正态分布。

判别分析和 Logistic 回归也有区别。logit 模型主要是探究解释变量对离散的被解释变量的影响,而判别分析需要用已有的训练集进行训练,得到判别准则系数,从而实现对目标样品的归类,从这个维度看,判别分析是一种机器学习的方法。

然而部分用于进行判别分析的计算机程序不提供 Logit 模型系数的估计值、标准误、T 值。Haggstrom (1983) 指出对于大型数据集,在判别分析中使用 OLS 可以实现。这就是这位大牛推导由 OLS 转换 Logit 模型参数方法的初衷,其推导出发点是线性判别模型 (LDM)。

2. 理论推导:从 OLS 到 Logit

2.2 由 LDM 推导 logit 模型

LDM 方法是一种根据解释变量的线性函数将被解释变量分为两类 (0\1) 的方法,线性判别模型在给定 y 值的情况下指定了 x 的条件分布。使用贝叶斯公式,可以将线性判别模型重新表示为每个 y 的条件概率(后验概率),并以此推导出 logit 模型,具体推导过程如下。

假设数据集服从同方差假设,μ(x|Y=y) 代表当 Y 的类别为 y 时 x 的概率密度。

即 μ(x|Y=y)=12πσexp(12(xmy)σ1(xmy))(1)

根据贝叶斯公式,由先验概率μ(x|Y=y)推出 Y=y 的后验概率,此时只考虑二分情况,即 Y 只有两个可能的取值,分别是 1 和 0。下面简单介绍 Y=1 的后验概率公式推导过程。

将分母由全概率公式展开,可以得到:

分子分母同时除以 μ(x|Y=1)P(Y=1)

为了将上式写为 logistic 分布概率 f(x)=11+em 的形式,使 em=μ(x|Y=0)μ(x|Y=1)×P(Y=0)P(Y=1),得到判别函数:

将 (1) 式中正态分布密度函数代入下式:

最终

若 Y=0,相应的概率为 exp(βxα)1+exp(βxα),那么

此时就得到了服从线性的 logistic 回归模型了。

从以上推导过程中可以看出,在二元情况下,假设P(Y=j)=pj,有下式成立:

上式可以泛化为一般情况,即在多元条件下,Y=1、2……k,共有k组,且 (1) 式仍然成立。

将上式写为 logistic 回归形式:

其中:

由 (1) 可得,当 Y=j 时,E(x|Y=j)=mjσ 是每组的同方差。总之,后验概率 P (Y=j |x) 满足一个参数等于判别函数系数组合的 Logit 模型。

2.2 "推导后 Logit" 参数的 MLE

对由 LDM 推导后的 Logit 模型进行参数估计时,假定存在一个 n 个独立观测值 (xi,yi) 的训练集,i=1,2,,n,使得对任意对 (x,y),给定 Y=j(j=1,2,,k) 时,X 的分布为 XN(mj,σ)。设 nj 是 Y=j 的 cluster 里观察值的个数。

在 yi 是常数的情况下,使用极大似然估计方法估计 (5)、(6) 的系数。

似然函数如下:

其中当 Y=j 时 vij=1,否则 vij=0。参数 mj 和 σ 的 MLE 都是用 (5) 中 mj^ 和 σ^ 的 MLE 代替得到的判别函数估计值。

pj 的极大似然估计是样本均值,即 pj^=nj/n

2.3 由 OLS 计算 "推导后 Logit" 参数的 MLE

在二元情况下,即 k=2,设 a 和 b 表示 OLS 估计值,将观测值 (xi,yi) 当作满足线性模型来处理。

此时该回归的残差平方和为:

根据 Haggstorm (1983) 的推导,推导后 Logit 系数的MLE与 OLS 估计中参数 a 和 b 有关。具体关系为下式:

从上式可以看出,在 pj 不确定时,n1/n=y¯, n0/n=1y¯,且 p^1/p^0=n1/n0=y¯/(1y¯)。所以 (9) 式可以写为:

在多元情况下,以最后一组 Y=k 作为基准组,使用 αj=γjγk  βj=δjδk 两式替换 (5) 中的 γ 和 δ,得到

以上就是二元和多元情况下用 OLS 估计 logit 模型参数的表达式。

方法: 固定效应模型、FM 估计、动态面板、稳健性检验、衡量偏误问题
直接听课 | 课件展示https://gitee.com/arlionn/paper101

3. reg2logit 命令介绍

3.1 步骤

根据第二部分的理论推导,可以看出,通过 OLS 获取 logit 模型的参数只需要两步。

Step1: 通过 OLS 估算 LPM 的参数 a 和 b

即上文 1.4 中 (7) 式 yi=a+bxi+ϵi 中斜率 b 和截距项 a

Step2: 变换参数为 α^β^

按照 (8)、(10) 两式变换参数,可以得到 (4) 式的估计值 α^β^

以上就是命令 reg2logit 的具体运行步骤。进一步地,我们还可以继续得到在 Y=1 或 Y=0 时后验概率 P(Y=1|x)P(Y=0|x) 的预测概率值,从 LPM 转化到 Logit 模型获取概率预测值的过程就是 LDM 方法。

3.2 语法结构

安装命令:

. ssc install reg2logit, replace

reg2logit 的语法结构如下:

reg2logit yvar [xvars] [if] [in], iterate(#)
  • yvar:离散的被解释变量 yi
  • xvars: 解释变量 xi
  • iterate(#): 转换 OLS 估计参数后要迭代的次数。默认值为 0。如果将 iter()选项设置为大于零的值,转换后的 OLS 估计值为迭代极大似然估计值提供了起点。

3.3 模拟实例

*-生成数据
set obs 1000
gen id = _n

set seed 123
gen y = (id <= 750) //将前750个数的y设置为1

gen x1 = rnormal(3, 1) if id <= 750 //当y=1时,X1|Y~N(3,0.5)
replace x1 = rnormal(6, 1) if id > 750 //当y=0时,X1|Y~N(6, 0.5)

gen x2 = rnormal(10, 1) if id <= 750 //当y=1时,X2|Y~N(10,1)
replace x2 = rnormal(8, 1) if id > 750 //当y=0时,X2|Y~N(8,1)


*-参数比较
qui logit y x1 x2
est store m1
qui reg2logit y x1 x2
est store m2
qui reg2logit y x1 x2, iter(1)
est store m3
qui reg2logit y x1 x2, iter(3)
est store m4

上面生成了 1000 个观察值,其中 x 在 y 已知的 cluster 中,满足独立的正态分布,故而其联合分布是多元正态分布,其满足多元正态性。将常规 logit 模型作为标准,比较 LDM 方法、迭代一次以及迭代三次的模型参数和拟合效果。因为对被解释变量的条件更苛刻,我们假设 LDM 方法生成的 logit 参数不会比 logit 模型本身更好。

. esttab m1 m2 m3 m4, s(r2_p) b(%6.4f) star(* 0.1 ** 0.05 *** 0.01)

--------------------------------------------------------------------
              (1)             (2)             (3)             (4)
                y               y               y               y
--------------------------------------------------------------------
y
x1        -3.0198***      -3.1425***      -2.9943***      -3.0198***
          (-9.58)         (-9.24)         (-9.63)         (-9.58)

x2         1.8406***       1.9772***       1.8190***       1.8406***
           (7.28)          (7.20)          (7.30)          (7.28)

_cons     -2.0693         -2.5695         -2.0062         -2.0693
          (-0.95)         (-1.13)         (-0.93)         (-0.95)
--------------------------------------------------------------------
r2_p       0.8534          0.8526          0.8534          0.8534
--------------------------------------------------------------------
t statistics in parentheses
* p<0.1,** p<0.05,*** p<0.01

在本次模拟中,logit 模型 (1) 需要迭代 6 次才能获得最终结果,而使用 reg2logit 命令,即 LDM (2) 模型则无需迭代,这解释了使用 reg2logit 的速度快于