温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
编者:魏珊珊 (厦门大学)
E-Mail: ncweishanshan@163.com
Source: https://www.stata.com/support/faqs/statistics/completely-determined-in-logistic-regression/
目录
先和大家一起简单回顾一下什么是二值选择模型。
二值选择模型: 如果被解释变量 y 是离散的,而非连续的,称为「离散选择模型」 (discrete choice model ) 或「定性反应模型」 (qualitative response model)。
最常见的离散选择模型是二值选择行为 (binary choices),因为人生充满了选择。比如:考研或不考研;就业或待业;买房或不买房;买保险或不买保险;等等。
此时,由于被解释变量为虚拟变量,取值为 0 或 1 ,故通常不宜进行 OLS 回归。因此,大家常用 Logit 模型或 Probit 模型进行回归。
然而,在进行二值选择模型的实证回归研究中,我们经常会遇到 Stata 显示 「completely determined」 并常常为此困惑。
基于此,本文在总结现有资料的基础上,简单归纳了二值选择模型实证回归研究中出现该问题的两种情况,希望对大家有所帮助。
为方便论述,本文以 Logit 模型为例。如果大家想要进一步深究 Logit 与 Probit 模型的异同,可以参考 Stata 连享会往期推文「 二元选择模型:Probit 还是 Logit?」。
当我们运用 Logit 回归的时候,一般会有两种情况造成回归结果出现以下类似提示:
Note: 4 failures and 0 successes completely determined.
首先,让我们介绍不太常见的第一种情况。
当连续变量 (或连续变量与其他连续或虚拟变量的组合) 是被解释变量的重要预测变量时,Logit 回归结果就会出现「 completely determined 」类似提示。
举个简单的例子。我们考虑剔除了 6 个观测值的 Stata 自带的 auto.dta 文件。
. sysuse auto, clear
(1978 Automobile Data)
. drop if foreign==0 & gear_ratio>3.1
(6 observations deleted)
. logit foreign mpg weight gear_ratio
Iteration 0: log likelihood = -42.806086
Iteration 1: log likelihood = -11.724474
... ...
Iteration 6: log likelihood = -6.4874814
Logistic regression Number of obs = 68
LR chi2(3) = 72.64
Prob > chi2 = 0.0000
Log likelihood = -6.4874814 Pseudo R2 = 0.8484
------------------------------------------------------------------------------
foreign | Coef. Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
mpg | -0.494 0.266 -1.86 0.063 -1.015 0.026
weight | -0.006 0.003 -1.96 0.049 -0.012 -0.000
gear_ratio | 15.705 8.166 1.92 0.054 -0.300 31.711
_cons | -21.395 25.415 -0.84 0.400 -71.207 28.417
------------------------------------------------------------------------------
Note: 4 failures and 0 successes completely determined.
画一个简单的散点图。
. scatter foreign gear_ratio
通过散点图,我们可以很明显地看出 gear_ratio 可以很好地预测 foreign。它认为,预测概率最小的 4 个观测值基本上可以完美预测。这恰好也印证了 Logit 回归中的 Note: 4 failures and 0 successes completely determined.
. predict p
(option pr assumed; Pr(foreign))
sort p
list p in 1/4
+-----------+
| p |
|-----------|
1. | 1.338e-10 |
2. | 6.264e-09 |
3. | 7.844e-09 |
4. | 1.489e-08 |
+-----------+
情况一应对方法:
碰上第一种情况时,我们通常倾向于画一个简单的散点图,进而直观地对因变量和自变量之间的关系进行判断。当出现类似上图的例子时,意味着计算的模型很好,此时无需执行任何其他操作。
接下来讨论需要仔细检查的第二种情况。
当自变量为虚拟变量或是具有多个值(例如年龄)的连续变量时,容易出现隐藏共线性问题。此时,一个或多个估计系数会缺少标准误(standard error)。
我们先对共线性定义进行简单回顾。据百度百科界定,共线性也即同线性或同线型。统计学中,共线性即多重共线性。多重共线性 (Multicollinearity ) 是指线性回归模型中的解释变量之间由于存在精确相关关系或高度相关关系而使模型估计失真或难以估计准确。
当 Logit 回归中因隐藏共线性问题出现 「completely determined」时,此时会出现自变量的特定组合下仅有一个因变量输出的情况,也即:当自变量是某一个特定组合时,因变量的输出是唯一不变的, Logit 回归只能预测出这种单一的特殊情况。
此时,我们需要找出这种特殊情况,对其是否具有现实意义进行简单分析。其次,在剔除特殊情况之后把剩余的数据重新进行回归。
举个简单的例子。
. list
+-------------+
| y x1 x2 |
|-------------|
1. | 0 0 0 |
2. | 0 1 0 |
3. | 1 1 0 |
4. | 0 0 1 |
5. | 1 0 1 |
+-------------+
. logit y x1 x2, nolog
Logistic regression Number of obs = 5
LR chi2(2) = 1.18
Prob > chi2 = 0.5530
Log likelihood = -2.7725887 Pseudo R2 = 0.1761
------------------------------------------------------------------------------
y | Coef. Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
x1 | 18.26157 2 9.13 0.000 14.34164 22.1815
x2 | 18.26157 . . . . .
_cons | -18.26157 1.414214 -12.91 0.000 -21.03338 -15.48976
------------------------------------------------------------------------------
note: 1 failure and 0 successes completely determined.
. predict p
(option pr assumed; Pr(y))
. sort p
. list
+------------------------+
| y x1 x2 p |
|------------------------|
1. | 0 0 0 1.17e-08 |
2. | 0 1 0 .5 |
3. | 1 1 0 .5 |
4. | 0 0 1 .5 |
5. | 1 0 1 .5 |
+------------------------+
此时,我们可以观察到当 x1 = 0 且 x2 = 0 时,对应的 y 值只有 0 ,出现了在自变量的特定组合下仅有一个因变量输出的情况。另外, Logit 模型出现了可能完美拟合 x1 = 0 且 x2 = 0 时的情况。
接着,我们在上例的基础上添加一行新的观察值,以避免出现这种 「completely determined」 的情况。
. list
+-------------+
| y x1 x2 |
|-------------|
1. | 0 0 0 |
2. | 0 1 0 |
3. | 1 1 0 |
4. | 0 0 1 |
5. | 1 0 1 |
|-------------|
6. | 0 1 1 |
+-------------+
. logit y x1 x2
Iteration 0: log likelihood = -3.819085
Logistic regression Number of obs = 6
LR chi2(2) = 0.00
Prob > chi2 = 1.0000
Log likelihood = -3.819085 Pseudo R2 = 0.0000
------------------------------------------------------------------------------
y | Coef. Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
x1 | 0 1.837117 0.00 1.000 -3.600684 3.600684
x2 | 0 1.837117 0.00 1.000 -3.600684 3.600684
_cons | -.6931472 1.732051 -0.40 0.689 -4.087904 2.70161
------------------------------------------------------------------------------
. predict p
(option pr assumed; Pr(y))
. sort p
. list
+------------------------+
| y x1 x2 p |
|------------------------|
1. | 0 0 0 .3333333 |
2. | 0 1 0 .3333333 |
3. | 1 1 0 .3333333 |
4. | 0 0 1 .3333333 |
5. | 1 0 1 .3333333 |
|------------------------|
6. | 0 1 1 .3333333 |
+------------------------+
情况二应对方法
让我们再次回顾情况二的初始数据。
. list
+------------------------+
| y x1 x2 p |
|------------------------|
1. | 0 0 0 1.17e-08 |
2. | 0 1 0 .5 |
3. | 1 1 0 .5 |
4. | 0 0 1 .5 |
5. | 1 0 1 .5 |
+------------------------+
如果把在自变量的特定组合下仅有一个因变量输出的情况的观察值剔除 (该示例中对应剔除的观察值为第一行数据 ) , 此时 x1 、x2 和常数值处于共线状态,因此 Logit 回归结果会显示 「 note: 1 failure and 0 successes completely determined. 」 。
那么,当出现以上情况时,我们需要做些什么?
. egen pattern = group(x1 x2)
. logit y x1 x2
. predict p
. summarize p
* p 的极值几乎为 0 或几乎为 1 。
. tab pattern if p < 1e-7 //这里使用一个比最小值稍大的观察值替代。
* 如果 p 几乎为1的时候,我们可以使用 「 if p > 1 - 1e-7 」 替代。
. list x1 x2 if pattern == XXXX // 这里使用上一步骤 「 tab 」 命令中得到的值。
* 至此,通过上述步骤,我们可以得到模型的协变量模式。
此时,我们需要针对自身的研究问题分析出现完美预测结果的协变量模式是否具备研究意义,或者是由于模型中的变量存在异常导致此类问题的出现。
接下来,我们需要避免这类共线性问题的出现。
. logit y x1 x2 if pattern ~= XXXX // 这里仍然需要使用上一步骤 「 tab 」 命令中得到的值。
. logit y x1
至于是否保留可以完美预测结果的协变量模式,这取决于步骤三的答案。当可以完美预测结果的协变量模式具备研究意义时,我们可能需要从模型中排除以下观察结果。
. logit y x1 if pattern ~= XXXX // 这里仍然需要使用上一步骤 「 tab 」 命令中得到的值。
此时,模型会报告:
Covariate pattern such and such predicted outcome perfectly.
The best model for the rest of the data is ....
在进行 Logit 实证回归时,我们发现有时回归模型会因忽视「 retain prefect predictor variables 」问题使得参与 Logit 回归的样本与总样本量不符。
举个简单的例子。当我们的描述性统计样本为 10000 个时,但参与 Logit 回归的样本会因没有 「 retain prefect predictor variables 」 而缺失若干样本,使得描述性统计样本量与回归样本量不一致。此时,stata 回归结果往往会显示类似于 「 Note: 4 failures and 0 successes completely determined. 」的提示,意味着你的回归样本量比描述性统计样本量少 4 个。
因此,有时为了避免这种不必要的困惑,我们有时会在 Logit 回归命令的尾部添加 「asis」 选项。
连享会-直播课 上线了!
http://lianxh.duanshu.com
免费公开课:
直击面板数据模型 - 连玉君,时长:1小时40分钟 Stata 33 讲 - 连玉君, 每讲 15 分钟. 部分直播课 课程资料下载 (PPT,dofiles等)
支持回看,所有课程可以随时购买观看。
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 ⭐ | DSGE, 因果推断, 空间计量等 | |
⭕ Stata数据清洗 | 游万海 | 直播, 2 小时,已上线 |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会学习群-常见问题解答汇总:
✨ https://gitee.com/arlionn/WD