reg2logit:用OLS估计Logit模型参数
🍎 连享会主页:lianxh.cn
New!
lianxh
命令发布了: GIF 动图介绍
随时搜索 Stata 推文、教程、手册、论坛,安装命令如下:
. ssc install lianxh
连享会 · 最受欢迎的课
🍓 2021 Stata 寒假班
⌚ 2021 年 1.25-2.4🌲 主讲:连玉君 (中山大学);江艇 (中国人民大学)
👉 课程主页:https://gitee.com/arlionn/PX
作者: 彭莘昱 (中山大学)
E-Mail: <sonya_p$foxmail.com>
目录
1. 应用背景
1.1 LPM 与 logit 之辩
1.2 判别分析 (DA) 与线性判别模型 (LDM)
2. 理论推导
2.2 由 LDM 推导 logit 模型
2.2 '推导后 Logit' 参数的 MLE
2.3 由 OLS 计算 '推导后 Logit' 参数的 MLE
3. reg2logit 命令介绍
3.1 步骤
3.2 语法结构
3.3 模拟实例
3.4 应用实例:mroz 数据集
4. 总结
5. 参考文献
6. 相关推文
温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。
编者按:
本文部分内容翻译自 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 模型,并且预测概率 。
LDM 模型的前提假设是解释变量 是基于离散的被解释变量 的值 (取 和 ) 的多元正态变量,即在 确定的 cluster 中,向量 的联合分布是多元正态分布。
1.1 LPM 与 logit 之辩
线性概率模型 (LPM) 即被解释变量 是二元或多元离散变量 (dichotomous) 的线性回归模型。以二元变量为例,当 是取值为 或 时,假设
在满足经典线性假定 (CLM) 的情境下,。即:
以上就是线性概率模型 (下简称 LPM),在估计参数时使用的是 OLS 线性回归。
LPM 和 logit 模型均可以作为预测事件概率值 的方法,然而孰优孰劣,学者们展开了激烈的讨论。
论点 1: LPM 优于 Logit
reg2logit
命令的作者 Paul von Hippel 曾认为 LPM 优于 Logit。他在 2017 年发布的 一篇文章 阐述了他的理由。
第一,OLS 回归速度要比 logistic 回归更快,这对于数据量大、模型复杂、模型频繁更新迭代的情况更为便捷。 第二,概率的变化要比胜算比 的变化更加直观,在解释模型时参数的意义更加直观。 第三,Paul von Hippel 证明了在预测概率区间 内,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)
判别分析是根据个体的特征将个体分为若干类别中的一类。其基本原理如下:按照一定的判别准则,建立一个或多个判别函数,用研究对象的大量信息确定判别函数中的待定系数,并计算判别指标。例如,对于一个两类问题的判别,就是将模式 划分成 、。
判别分析和 Logistic 回归有着密不可分的联系。两者都可以达到对样本进行分类的目的。在 Logistic 回归中,变量 可能反映几个群体中的一个群体的隶属关系,而在判别分析的每个群体中,向量 都有一个多变量正态分布。
判别分析和 Logistic 回归也有区别。logit 模型主要是探究解释变量对离散的被解释变量的影响,而判别分析需要用已有的训练集进行训练,得到判别准则系数,从而实现对目标样品的归类,从这个维度看,判别分析是一种机器学习的方法。
然而部分用于进行判别分析的计算机程序不提供 Logit 模型系数的估计值、标准误、T 值。Haggstrom (1983) 指出对于大型数据集,在判别分析中使用 OLS 可以实现。这就是这位大牛推导由 OLS 转换 Logit 模型参数方法的初衷,其推导出发点是线性判别模型 (LDM)。
2. 理论推导
2.2 由 LDM 推导 logit 模型
LDM 方法是一种根据解释变量的线性函数将被解释变量分为两类 (0\1) 的方法,线性判别模型在给定 值的情况下指定了 的条件分布。使用贝叶斯公式,可以将线性判别模型重新表示为每个 的条件概率(后验概率),并以此推导出 logit 模型,具体推导过程如下。
假设数据集服从同方差假设, 代表当 的类别为 时 的概率密度。
即
根据贝叶斯公式,由先验概率推出 Y=y 的后验概率,此时只考虑二分情况,即 只有两个可能的取值,分别是 1 和 0。下面简单介绍 Y=1 的后验概率公式推导过程。
将分母由全概率公式展开,可以得到:
分子分母同时除以
为了将上式写为 logistic 分布概率 的形式,使 ,得到判别函数:
将 (1) 式中正态分布密度函数代入下式:
最终
若 ,相应的概率为 ,那么
此时就得到了服从线性的 logistic 回归模型了。
从以上推导过程中可以看出,在二元情况下,假设,有下式成立:
上式可以泛化为一般情况,即在多元条件下,Y=1、2……k,共有k组,且 (1) 式仍然成立。
将上式写为 logistic 回归形式:
其中:
由 (1) 可得,当 时,, 是每组的同方差。总之,后验概率 P (Y=j |x) 满足一个参数等于判别函数系数组合的 Logit 模型。
2.2 '推导后 Logit' 参数的 MLE
对由 LDM 推导后的 Logit 模型进行参数估计时,假定存在一个 个独立观测值 的训练集,,使得对任意对 ,给定 时, 的分布为 。设 是 的 cluster 里观察值的个数。
在 是常数的情况下,使用极大似然估计方法估计 (5)、(6) 的系数。
似然函数如下:
其中当 时 ,否则 。参数 和 的 MLE 都是用 (5) 中 和 的 MLE 代替得到的判别函数估计值。
的极大似然估计是样本均值,即 。
2.3 由 OLS 计算 '推导后 Logit' 参数的 MLE
在二元情况下,即 ,设 和 表示 OLS 估计值,将观测值 当作满足线性模型来处理。
此时该回归的残差平方和为:
根据 Haggstorm (1983) 的推导,推导后 Logit 系数的MLE与 OLS 估计中参数 和 有关。具体关系为下式:
从上式可以看出,在 不确定时,,且 。所以 (9) 式可以写为:
在多元情况下,以最后一组 作为基准组,使用 两式替换 (5) 中的 和 ,得到
以上就是二元和多元情况下用 OLS 估计 logit 模型参数的表达式。
方法: 固定效应模型、FM 估计、动态面板、稳健性检验、衡量偏误问题
直接听课 | 课件展示:https://gitee.com/arlionn/paper101
3. reg2logit 命令介绍
3.1 步骤
根据第二部分的理论推导,可以看出,通过 OLS 获取 logit 模型的参数只需要两步。
Step1: 通过 OLS 估算 LPM 的参数 和
即上文 1.4 中 (7) 式 中斜率 和截距项 。
Step2: 变换参数为 、
按照 (8)、(10) 两式变换参数,可以得到 (4) 式的估计值 、
以上就是命令 reg2logit
的具体运行步骤。进一步地,我们还可以继续得到在 或 时后验概率 、 的预测概率值,从 LPM 转化到 Logit 模型获取概率预测值的过程就是 LDM 方法。
3.2 语法结构
安装命令:
. ssc install reg2logit, replace
reg2logit
的语法结构如下:
reg2logit yvar [xvars] [if] [in], iterate(#)
yvar
:离散的被解释变量xvars
: 解释变量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 个观察值,其中 在 已知的 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--------------------------------------------------------------------yx1 -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
的速度快于 logit
的原因。在解释变量满足多元正态性的条件下,LDM 模型近似 logit 模型的效果非常好,系数和拟合优度均十分接近。且 LDM (4) 模型只需迭代三次,就可以得到和使用 logit
命令几乎一样的系数估计。
*-预测概率pi
qui logit y x1 x2
predict pr1
sum pr1
qui reg2logit y x1 x2
predict pr2
sum pr2
ttest pr1==pr2
使用 ttest
命令比较 LDM 方法和典型 logit 方法预测出的概率 P (Y=1|x) 是否存在显著差异。
. ttest pr1==pr2
Paired t test------------------------------------------------------------------------------Variable | Obs Mean Std. Err. Std. Dev. [95% Conf. Interval]---------+-------------------------------------------------------------------- pr1 | 1,000 .75 .0128063 .4049695 .7248697 .7751303 pr2 | 1,000 .7535263 .0128085 .4050392 .7283918 .7786609---------+-------------------------------------------------------------------- diff | 1,000 -.0035263 .0002747 .0086865 -.0040654 -.0029873------------------------------------------------------------------------------ mean(diff) = mean(pr1 - pr2) t = -12.8375 Ho: mean(diff) = 0 degrees of freedom = 999
Ha: mean(diff) < 0 Ha: mean(diff) != 0 Ha: mean(diff) > 0 Pr(T < t) = 0.0000 Pr(|T| > |t|) = 0.0000 Pr(T > t) = 1.0000
可以看出在此例中两者预测的概率均值仍然存在显著差异,然而大部分差异仅在 -0.004~0.003 之间,难以对预测 的准确度产生决定性的影响。
*-预测准确率
gen y1 = (pr1 >= 0.5)
gen y2 = (pr2 >= 0.5)
count if y1 == y // accuracy = 969/1000 = 96.9%
count if y2 == y // accuracy = 969/1000 = 96.9%
count if y1 != y2 & y1 ==y // logit win while LDM lose : 2
count if y1 != y2 & y2 ==y // LDM win while logit lose : 2
3.4 应用实例:mroz 数据集
这里使用了 753 名已婚妇女的劳动力参与情况的数据集(Mroz 1987)来比较 LPM \ Logit \ LDM 模型的概率预测情况。被解释变量 inlf 表示,处于劳动力中的妇女为 1,否则为 0。解释变量 kidslt6 是该妇女抚养的六岁以下儿童的人数,age 是妇女年龄,educ 是受教育程度(年),exper 劳动经验 (年),以及 expersq 经验的平方。
*-导入数据ssc install bcuse, replace // 安装 bcuse 命令
bcuse mroz, clear
*-LPM Logit LDMqui reg inlf kidslt6 age educ exper expersq //LPMpredict yhat_lpm, xb
qui logit inlf kidslt6 age educ exper expersq //Logitpredict yhat_logit
reg2logit inlf kidslt6 age educ exper expersq //LDMpredict yhat_ldm
从下表中可以看出,虽然 LPM 的均值合 Logit 模型最为接近,然而 LPM 预测值的最大值 1.12 超过了 1,最小值为 -0.28 小于 0,对于概率预测值来说,这是不合常理的。此外,LDM 和 logit 的预测值都在 (0, 1) 之间,极值也较为相近。
. sum yhat*
Variable | Obs Mean Std. Dev. Min Max
-----------+-------------------------------------------------
yhat_lpm | 753 .5683931 .2517531 -.2782369 1.118993
yhat_ldm | 753 .5745898 .2605278 .0136687 .9676127
yhat_logit | 753 .5683931 .2548012 .0145444 .9651493
从三类模型预测概率的相关系数来看,logit 模型与 LDM 的概率预测值相关性最高。
. pwcorr yhat* | yhat_lpm yhat_l~t yhat_ldm-------------+--------------------------- yhat_lpm | 1.0000 yhat_logit | 0.9880 1.0000 yhat_ldm | 0.9870 0.9994 1.0000
下图绘制了 LDM\LPM 同 Logit 模型概率预测值的散点图。可以看到,当 Logit 模型预测概率值接近于 1 和 0 时,LPM 概率预测值出现了较大的偏差,而 LDM 模型概率预测值与 Logit 概率预测值的关系较为稳定。整体而言,LDM 在一定程度上要优于 LPM。
set scheme s2color
label var yhat_lpm 'LPM'
label var yhat_logit 'Logit'
label var yhat_ldm 'LDM'
twoway ///
(scatter yhat_lpm yhat_logit, m(Oh) msize(*0.6)) ///
(scatter yhat_ldm yhat_logit, m(+) msize(*0.6) mc(red%70)) ///
, legend(ring(0) position(5))
graph export 'lianxh-Logit-LPM-LDM.png', replace
4. 总结
本文简要地介绍了以 OLS 估计转换为 Logit 模型参数的方法,以及应用此方法预测二元概率值的线性判别模型 (LDM)。值得注意的是,该转换方法和 LDM 均需满足被解释变量的条件多元正态性假设,且 LDM 仅是应用该转换方法的一种实践。对于 的非 取值和多元情况,虽然本文没有介绍,但是以 OLS 转化估计 Logit 模型参数的方法都是普适的。
总之,LDM 方法是一种有效的方法,reg2logit
命令是一种实现 LDM 的有效方式,本文结论如下。
第一,LDM 方法运算速度更快且估计值有效。 对于大数据或数量多、相关系数大的被解释变量,logit
这样的迭代命令可能很慢,致使其无法产生 MLE (minka 2003 ; ji&telgarsky 2018)。Reg2logit
无需迭代,只需进行 OLS 估计并进行转换,故而可以快速估计参数。LDM 估计的参数值通常是有效的。
第二,LDM 能够替代 LPM。 LDM 推导的基础是 LPM 的 OLS 估计,LDM 吸收了 LPM 模型的大部分优势,且能够获得更有效的预测概率 。
第三,reg2logit
还具有其他应用场景。 Paul T. von Hippel 提到该命令还可以在拟合一个多元正态插补模型时插补虚拟变量。
虽然 LPM 和 Logit 之辩暂时还没有结论,然而可以确定的是,LDM 在一定程度上 (多元正态性限制) 要优于 LPM,故而 LPM 和 Logit 之辩的命题似乎能够转换为 LDM 和 Logit 之辩了。
5. 参考文献
温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。
Haggstrom G W. Logistic regression and discriminant analysis by ordinary least squares[J]. Journal of Business & Economic Statistics, 1983, 1(3): 229-238.-PDF- Mroz T A. The sensitivity of an empirical model of married women's hours of work to economic and statistical assumptions[J]. Econometrica: Journal of the econometric society, 1987: 765-799.-PDF- Minka T P. A comparison of numerical optimizers for logistic regression[J]. Unpublished draft, 2003: 1-18.-PDF- Ji Z, Telgarsky M. Risk and parameter convergence of logistic regression[J]. arXiv preprint arXiv:1803.07300, 2018.-PDF- PAUL ALLISON, Statistical Horizons 博客, Better Predicted Probabilities from Linear Probability Models 维刚, csdn 博客, 第3章-线性概率模型(1)-logistics/probit模型 tang_1994, csdn博客, 从线性判别分析(LDA)来理解线性分类(linear classifiers)和概率模型 (probabilistic modeling)
6. 相关推文
Note:产生如下推文列表的命令为:
lianxh logit 二元, m
安装最新版lianxh
命令:
ssc install lianxh, replace
专题:Stata命令 Stata新命令:面板-LogitFE-ProbitFE 专题:Probit-Logit Stata:多元 Logit 模型详解 (mlogit) Stata:Logit模型一文读懂 详解 Logit/Probit 模型中的 completely determined 问题 Stata:Logit 模型评介 二元选择模型:Probit 还是 Logit? Stata:何时使用线性概率模型而非Logit? Stata:嵌套 Logit 模型 (Nested Logit) Stata:二元Probit模型 feologit:固定效应有序Logit模型 司继春:二元选择模型与计数数据