详解 Logit/Probit 模型中的 completely determined 问题

发布时间:2020-09-06 阅读 227

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

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

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

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

编者:魏珊珊 (厦门大学)
E-Mail: ncweishanshan@163.com
Source: https://www.stata.com/support/faqs/statistics/completely-determined-in-logistic-regression/


目录


1. 引言

先和大家一起简单回顾一下什么是二值选择模型。

二值选择模型: 如果被解释变量 y 是离散的,而非连续的,称为「离散选择模型」 (discrete choice model ) 或「定性反应模型」 (qualitative response model)。

最常见的离散选择模型是二值选择行为 (binary choices),因为人生充满了选择。比如:考研或不考研;就业或待业;买房或不买房;买保险或不买保险;等等。

此时,由于被解释变量为虚拟变量,取值为 0 或 1 ,故通常不宜进行 OLS 回归。因此,大家常用 Logit 模型或 Probit 模型进行回归。

然而,在进行二值选择模型的实证回归研究中,我们经常会遇到 Stata 显示 「completely determined」 并常常为此困惑。

基于此,本文在总结现有资料的基础上,简单归纳了二值选择模型实证回归研究中出现该问题的两种情况,希望对大家有所帮助。

为方便论述,本文以 Logit 模型为例。如果大家想要进一步深究 Logit 与 Probit 模型的异同,可以参考 Stata 连享会往期推文「 二元选择模型:Probit 还是 Logit?」。

2. 问题与方法

当我们运用 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. 」 。

那么,当出现以上情况时,我们需要做些什么?

  1. 生成协变量组合。
. egen pattern = group(x1 x2)
  1. 识别只有一个结果的协变量组合。
. 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 」 命令中得到的值。
  * 至此,通过上述步骤,我们可以得到模型的协变量模式。
  1. 此时,我们需要针对自身的研究问题分析出现完美预测结果的协变量模式是否具备研究意义,或者是由于模型中的变量存在异常导致此类问题的出现。

  2. 接下来,我们需要避免这类共线性问题的出现。

. logit y x1 x2 if pattern ~= XXXX  //  这里仍然需要使用上一步骤 「 tab 」 命令中得到的值。
  1. 在去除共线性的情况下,对模型重新进行 Logit 回归。
. 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 ....

3. 进一步扩展

在进行 Logit 实证回归时,我们发现有时回归模型会因忽视「 retain prefect predictor variables 」问题使得参与 Logit 回归的样本与总样本量不符。

举个简单的例子。当我们的描述性统计样本为 10000 个时,但参与 Logit 回归的样本会因没有 「 retain prefect predictor variables 」 而缺失若干样本,使得描述性统计样本量与回归样本量不一致。此时,stata 回归结果往往会显示类似于 「 Note: 4 failures and 0 successes completely determined. 」的提示,意味着你的回归样本量比描述性统计样本量少 4 个。

因此,有时为了避免这种不必要的困惑,我们有时会在 Logit 回归命令的尾部添加 「asis」 选项。

4. 参考资料

  • Willim Sribney, What does "completely determined" mean in my logistic regression output? , -Link-
  • 百度百科_共线性
  • 《计量经济学及Stata应用》;高等教育出版社;陈强编著;P212

相关课程

连享会-直播课 上线了!
http://lianxh.duanshu.com

免费公开课:


课程一览

支持回看,所有课程可以随时购买观看。

专题 嘉宾 直播/回看视频
最新专题 DSGE, 因果推断, 空间计量等
Stata数据清洗 游万海 直播, 2 小时,已上线
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]

Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。


关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。直播间 有很多视频课程,可以随时观看。
  • 连享会-主页知乎专栏,300+ 推文,实证分析不再抓狂。
  • 公众号推文分类: 计量专题 | 分类推文 | 资源工具。推文分成 内生性 | 空间计量 | 时序面板 | 结果输出 | 交乘调节 五类,主流方法介绍一目了然:DID, RDD, IV, GMM, FE, Probit 等。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会主页  lianxh.cn
连享会主页 lianxh.cn

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会学习群-常见问题解答汇总:
https://gitee.com/arlionn/WD