1

我正在运行一个 .do 文件,其中包括由 .do 估计的许多模型xtlogit。即使模型不收敛,我也想在日志中记录这一点。由于 .do 文件需要几个小时才能运行,我通常会离开并做其他事情。不幸的是,模型的不收敛会停止整个 .do 文件。因此,我用来capture noisily {}运行整个 .do 文件。但是,这似乎忽略了我在每个xtlogit命令中分别指定的最大迭代次数,具体取决于变量的数量和模型的假设复杂性。

在运行模型之前,我已经通过set maxiter全局使用找到了解决方法。但这不允许对每个模型进行更精细的迭代规范(除非我经常使用它

我找不到任何关于capture. 也许,有比我的解决方法更好的方法set maxiter

这是一个示例代码,它通过施加太少的迭代来手动重现错误:

webuse union, clear
capture noisily {
xtlogit union age grade i.not_smsa south##c.year, fe iter(2)
xtlogit union age grade i.not_smsa south##c.year, iter(3) pa
xtlogit union age grade i.not_smsa south##c.year, fe iter(2)
}

.do 文件在第二个模型之后停止并显示错误消息“未实现收敛” r(430);,并且不会继续执行第三个模型,因为我怀疑是因为capture.

4

3 回答 3

1

我的猜测是你申请capture的级别错误。您希望在而不是整个 do-file 中capture出现任何错误。xtlogit

此外,请查看 的nostop选项do

于 2013-11-07T15:34:37.480 回答
1

这有效并尊重您的个人iter

webuse union, clear
capture noisily xtlogit union age grade i.not_smsa south##c.year, pa iter(3)
xtlogit union age grade i.not_smsa south##c.year, fe iter(2)
xtlogit union age grade i.not_smsa south##c.year, fe iter(3)

xtlogit请注意,取决于您是否使用feorpa选项,行为会有所不同。与前者收敛失败不会 导致 do-file 停止,就像与后者收敛失败时一样。这就是为什么我只放在capture noisily第一行。

也许更有经验的用户可以对此发表评论。如果没有,您可以联系 Stata-tech 支持。

最重要的是,正如@NickCox 已经提到的那样,您可以避免调整capture.

于 2013-11-18T18:17:53.353 回答
1

我刚刚弄清楚为什么会发生这种情况,因为我遇到了一个类似的问题,xtlogit 似乎违反了 iterate(#) 命令。原因是它正在计算两个独立的模型:比较模型和完整模型。它将 iterate(#) 应用于完整模型而不是比较模型。因为首先拟合了比较模型,所以您可以看到迭代超出了 iterate(#)。由于您的问题,Set maxiter 为我解决了这个问题!

于 2017-05-06T06:18:43.720 回答