Stata clogit 命令与具有手动固定效果的 logit 不(完全)可重现:系数加倍
Stata clogit command versus logit with manual fixed effects not (quite) reproducible: Coefficients double
感谢您解答我的问题!我正在 Stata 中实施条件逻辑回归。我有长格式的选择数据,其中每个选择都包含两个可用选项,决策者只能选择一个。我已经使用 Stata clogit
命令实现了它,在我的理解中,它为数据中的每个选择创建了固定效果,并在对因变量回归逻辑回归中剩余的解释变量之前将它们部分化。为了让自己相信 clogit
确实如我所想,我尝试使用 logit
命令重现我得到的结果并手动添加固定效果。考虑到 Stata 对解释变量数量的限制,FWIW 对于大型数据集并不简单,但问题仍然存在于以下较小的 MWE 中:
* Retrieve MWE data set
webuse lowbirth2, clear
* Add arbitrary cluster variable, because in my real problem the data is clustered
gen cluster = ceil(_n/14)
clogit low lwt smoke ptd ht ui i.race, group(pairid) cluster(cluster)
Conditional (fixed-effects) logistic regression
Number of obs = 112
Wald chi2(7) = 211.55
Prob > chi2 = 0.0000
Log pseudolikelihood = -25.794271 Pseudo R2 = 0.3355
(Std. Err. adjusted for 8 clusters in cluster)
------------------------------------------------------------------------------
| Robust
low | Coef. Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
lwt | -.0183757 .0111176 -1.65 0.098 -.0401657 .0034144
smoke | 1.400656 .4670183 3.00 0.003 .4853172 2.315995
ptd | 1.808009 .6162347 2.93 0.003 .600211 3.015807
ht | 2.361152 .9149873 2.58 0.010 .5678096 4.154494
ui | 1.401929 .5968851 2.35 0.019 .2320559 2.571802
|
race |
black | .5713643 .5699717 1.00 0.316 -.5457596 1.688488
other | -.0253148 .5197248 -0.05 0.961 -1.043957 .9933272
------------------------------------------------------------------------------
logit low lwt smoke ptd ht ui i.race i.pairid, cluster(cluster)
Logistic regression Number of obs = 112
Wald chi2(6) = .
Prob > chi2 = .
Log pseudolikelihood = -51.588542 Pseudo R2 = 0.3355
(Std. Err. adjusted for 8 clusters in cluster)
------------------------------------------------------------------------------
| Robust
low | Coef. Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
lwt | -.0367513 .0222351 -1.65 0.098 -.0803314 .0068288
smoke | 2.801312 .9340365 3.00 0.003 .9706343 4.63199
ptd | 3.616018 1.232469 2.93 0.003 1.200422 6.031613
ht | 4.722303 1.829975 2.58 0.010 1.135619 8.308988
ui | 2.803858 1.19377 2.35 0.019 .4641118 5.143605
|
race |
black | 1.142729 1.139943 1.00 0.316 -1.091519 3.376977
other | -.0506296 1.03945 -0.05 0.961 -2.087913 1.986654
|
pairid | ... omitted for brevity ...
查看这两个输出,我们可以看到系数、标准误差和对数似然不仅不同,而且正好翻倍,就好像因变量已经被按因子 2 缩放。我应该补充一点,当我不对标准误差进行聚类时,它们不再完全翻倍。所以,clogit
似乎不仅仅是在后端部分排除固定效果,但它有什么作用呢? documentation 和 clogit.ado
文件本身都没有为我解决这个问题。
您观察到的估计差异是由于在有限面板中估计 logit
的附带参数问题导致的偏差。
有关此偏差的讨论,请参阅 Greene (2004),并注意偏差 (1) 远离零,并且 (2) 当 T=2 时高达 100%。
在你的例子中,T 不是时间,而是一对中的个体数量(即 2),因此你应该期望偏差在 100% 附近。
如果您重读 pdf documentation for clogit
,尤其是 Fixed-effects logit 部分的第二段 备注和示例 你会看到 clogit
如何避免这个问题。
由于使用 logit
的偏差相对于 clogit
是 100%,因此您记录的估计系数之间的关系是预期的行为(或者 logit
中的真正不当行为两个估计量的情况。
感谢您解答我的问题!我正在 Stata 中实施条件逻辑回归。我有长格式的选择数据,其中每个选择都包含两个可用选项,决策者只能选择一个。我已经使用 Stata clogit
命令实现了它,在我的理解中,它为数据中的每个选择创建了固定效果,并在对因变量回归逻辑回归中剩余的解释变量之前将它们部分化。为了让自己相信 clogit
确实如我所想,我尝试使用 logit
命令重现我得到的结果并手动添加固定效果。考虑到 Stata 对解释变量数量的限制,FWIW 对于大型数据集并不简单,但问题仍然存在于以下较小的 MWE 中:
* Retrieve MWE data set
webuse lowbirth2, clear
* Add arbitrary cluster variable, because in my real problem the data is clustered
gen cluster = ceil(_n/14)
clogit low lwt smoke ptd ht ui i.race, group(pairid) cluster(cluster)
Conditional (fixed-effects) logistic regression
Number of obs = 112
Wald chi2(7) = 211.55
Prob > chi2 = 0.0000
Log pseudolikelihood = -25.794271 Pseudo R2 = 0.3355
(Std. Err. adjusted for 8 clusters in cluster)
------------------------------------------------------------------------------
| Robust
low | Coef. Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
lwt | -.0183757 .0111176 -1.65 0.098 -.0401657 .0034144
smoke | 1.400656 .4670183 3.00 0.003 .4853172 2.315995
ptd | 1.808009 .6162347 2.93 0.003 .600211 3.015807
ht | 2.361152 .9149873 2.58 0.010 .5678096 4.154494
ui | 1.401929 .5968851 2.35 0.019 .2320559 2.571802
|
race |
black | .5713643 .5699717 1.00 0.316 -.5457596 1.688488
other | -.0253148 .5197248 -0.05 0.961 -1.043957 .9933272
------------------------------------------------------------------------------
logit low lwt smoke ptd ht ui i.race i.pairid, cluster(cluster)
Logistic regression Number of obs = 112
Wald chi2(6) = .
Prob > chi2 = .
Log pseudolikelihood = -51.588542 Pseudo R2 = 0.3355
(Std. Err. adjusted for 8 clusters in cluster)
------------------------------------------------------------------------------
| Robust
low | Coef. Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
lwt | -.0367513 .0222351 -1.65 0.098 -.0803314 .0068288
smoke | 2.801312 .9340365 3.00 0.003 .9706343 4.63199
ptd | 3.616018 1.232469 2.93 0.003 1.200422 6.031613
ht | 4.722303 1.829975 2.58 0.010 1.135619 8.308988
ui | 2.803858 1.19377 2.35 0.019 .4641118 5.143605
|
race |
black | 1.142729 1.139943 1.00 0.316 -1.091519 3.376977
other | -.0506296 1.03945 -0.05 0.961 -2.087913 1.986654
|
pairid | ... omitted for brevity ...
查看这两个输出,我们可以看到系数、标准误差和对数似然不仅不同,而且正好翻倍,就好像因变量已经被按因子 2 缩放。我应该补充一点,当我不对标准误差进行聚类时,它们不再完全翻倍。所以,clogit
似乎不仅仅是在后端部分排除固定效果,但它有什么作用呢? documentation 和 clogit.ado
文件本身都没有为我解决这个问题。
您观察到的估计差异是由于在有限面板中估计 logit
的附带参数问题导致的偏差。
有关此偏差的讨论,请参阅 Greene (2004),并注意偏差 (1) 远离零,并且 (2) 当 T=2 时高达 100%。
在你的例子中,T 不是时间,而是一对中的个体数量(即 2),因此你应该期望偏差在 100% 附近。
如果您重读 pdf documentation for clogit
,尤其是 Fixed-effects logit 部分的第二段 备注和示例 你会看到 clogit
如何避免这个问题。
由于使用 logit
的偏差相对于 clogit
是 100%,因此您记录的估计系数之间的关系是预期的行为(或者 logit
中的真正不当行为两个估计量的情况。