温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
New!
lianxh
命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh
作者: 彭莘昱 (中山大学)
E-Mail: <sonya_p$foxmail.com>
目录
编者按:
本文部分内容翻译自 PAUL ALLISON, Better Predicted Probabilities from Linear Probability Models,特此致谢!
reg2logit
是 2020 年由 Paul T. von Hippel 等人提出的由线性回归的 OLS 估计 logistic 模型参数的新命令,其估计的理论基础是 Haggstrom (1983) 提出的变换公式。该公式后来被 Allison (2020) 应用为「线性判别模型」(LDM) 方法。
LDM 模型来源于 LPM 和 logit 模型的转换。首先,LDM 可以转换为一个 logit 模型,其次,线性概率模型 (LPM) 的参数估计能够转换为「第一步转换后的 Logit 模型」参数的极大似然估计。故而只需将转换后的参数插入到 logit 模型中即可得到 LDM 模型,并且预测概率
LDM 模型的前提假设是解释变量
线性概率模型 (LPM) 即被解释变量
在满足经典线性假定 (CLM) 的情境下,
以上就是线性概率模型 (下简称 LPM),在估计参数时使用的是 OLS 线性回归。
LPM 和 logit 模型均可以作为预测事件概率值
论点 1: LPM 优于 Logit
reg2logit
命令的作者 Paul von Hippel 曾认为 LPM 优于 Logit。他在 2017 年发布的 一篇文章 阐述了他的理由。
论点 2: Logit 优于 LPM
reg2logit
命令的另一作者 Paul Allison 更加偏好使用 Logit 模型,他有以下几个观点。
Logit 模型和 LPM 之间的优劣难以比较,是否有另一种方法能够结合两者的优势,估计二元变量的概率值呢?
答案是肯定的,就是开篇所介绍的 LDM 模型。下面将从判别分析说起,推导 LDM 的具体转换方式,模拟 reg2logit
命令的应用,并对本文内容做一个小结,总结 LDM 的优势和应用场景。
判别分析是根据个体的特征将个体分为若干类别中的一类。其基本原理如下:按照一定的判别准则,建立一个或多个判别函数,用研究对象的大量信息确定判别函数中的待定系数,并计算判别指标。例如,对于一个两类问题的判别,就是将模式
判别分析和 Logistic 回归有着密不可分的联系。两者都可以达到对样本进行分类的目的。在 Logistic 回归中,变量
判别分析和 Logistic 回归也有区别。logit 模型主要是探究解释变量对离散的被解释变量的影响,而判别分析需要用已有的训练集进行训练,得到判别准则系数,从而实现对目标样品的归类,从这个维度看,判别分析是一种机器学习的方法。
然而部分用于进行判别分析的计算机程序不提供 Logit 模型系数的估计值、标准误、T 值。Haggstrom (1983) 指出对于大型数据集,在判别分析中使用 OLS 可以实现。这就是这位大牛推导由 OLS 转换 Logit 模型参数方法的初衷,其推导出发点是线性判别模型 (LDM)。
LDM 方法是一种根据解释变量的线性函数将被解释变量分为两类 (0\1) 的方法,线性判别模型在给定
假设数据集服从同方差假设,
即
根据贝叶斯公式,由先验概率
将分母由全概率公式展开,可以得到:
分子分母同时除以
为了将上式写为 logistic 分布概率
将 (1) 式中正态分布密度函数代入下式:
最终
若
此时就得到了服从线性的 logistic 回归模型了。
从以上推导过程中可以看出,在二元情况下,假设
上式可以泛化为一般情况,即在多元条件下,Y=1、2……k,共有k组,且 (1) 式仍然成立。
将上式写为 logistic 回归形式:
其中:
由 (1) 可得,当
对由 LDM 推导后的 Logit 模型进行参数估计时,假定存在一个
在
似然函数如下:
其中当
在二元情况下,即
此时该回归的残差平方和为:
根据 Haggstorm (1983) 的推导,推导后 Logit 系数的MLE与 OLS 估计中参数
从上式可以看出,在
在多元情况下,以最后一组
以上就是二元和多元情况下用 OLS 估计 logit 模型参数的表达式。
方法: 固定效应模型、FM 估计、动态面板、稳健性检验、衡量偏误问题
直接听课 | 课件展示:https://gitee.com/arlionn/paper101
根据第二部分的理论推导,可以看出,通过 OLS 获取 logit 模型的参数只需要两步。
Step1: 通过 OLS 估算 LPM 的参数
即上文 1.4 中 (7) 式
Step2: 变换参数为
按照 (8)、(10) 两式变换参数,可以得到 (4) 式的估计值
以上就是命令 reg2logit
的具体运行步骤。进一步地,我们还可以继续得到在
安装命令:
. ssc install reg2logit, replace
reg2logit
的语法结构如下:
reg2logit yvar [xvars] [if] [in], iterate(#)
yvar
:离散的被解释变量 xvars
: 解释变量 iterate(#)
: 转换 OLS 估计参数后要迭代的次数。默认值为 0。如果将 iter()选项设置为大于零的值,转换后的 OLS 估计值为迭代极大似然估计值提供了起点。*-生成数据
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 个观察值,其中
. 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
的速度快于 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
这里使用了 753 名已婚妇女的劳动力参与情况的数据集(Mroz 1987)来比较 LPM \ Logit \ LDM 模型的概率预测情况。被解释变量 inlf 表示,处于劳动力中的妇女为 1,否则为 0。解释变量 kidslt6 是该妇女抚养的六岁以下儿童的人数,age 是妇女年龄,educ 是受教育程度(年),exper 劳动经验 (年),以及 expersq 经验的平方。
*-导入数据
ssc install bcuse, replace // 安装 bcuse 命令
bcuse mroz, clear
*-LPM Logit LDM
qui reg inlf kidslt6 age educ exper expersq //LPM
predict yhat_lpm, xb
qui logit inlf kidslt6 age educ exper expersq //Logit
predict yhat_logit
reg2logit inlf kidslt6 age educ exper expersq //LDM
predict 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
本文简要地介绍了以 OLS 估计转换为 Logit 模型参数的方法,以及应用此方法预测二元概率值的线性判别模型 (LDM)。值得注意的是,该转换方法和 LDM 均需满足被解释变量的条件多元正态性假设,且 LDM 仅是应用该转换方法的一种实践。对于
总之,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 之辩了。
Note:产生如下推文列表的命令为:
lianxh logit probit, m
安装最新版lianxh
命令:
ssc install lianxh, replace
连享会-直播课 上线了!
http://lianxh.duanshu.com
免费公开课:
直击面板数据模型 - 连玉君,时长:1小时40分钟,课程主页 Stata 33 讲 - 连玉君, 每讲 15 分钟. Stata 小白的取经之路 - 龙志能,时长:2 小时,课程主页 部分直播课 课程资料下载 (PPT,dofiles等)
支持回看
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 | 因果推断, 空间计量,寒暑假班等 | |
⭕ 数据清洗系列 | 游万海 | 直播, 88 元,已上线 |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会学习群-常见问题解答汇总:
✨ https://gitee.com/arlionn/WD
New!
lianxh
命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh