【问题标题】:Error: "Maximum number of iterations exceeded" using nlcom in Stata错误:“超过最大迭代次数”在 Stata 中使用 nlcom
【发布时间】:2013-12-25 23:32:25
【问题描述】:

我正在尝试在有限因变量模型的 Stata(Delta 方法)中使用 nlcom 估计边际效应的标准误差。我们通常在计算边际效应时计算概率、条件和无条件部分。我还能够在 Stata 中使用 nlcom 获得条件和无条件部分的标准错误。但是,当使用nlcom 获取概率时,出现错误“超出最大迭代次数”。我确实查看了解决方案here,它确实解决了一些二进制变量 (3)。但是,对于 4 个变量,我仍然得到相同的错误。我深入研究了这个问题,发现错误与虚拟变量为 0 的部分有关:

\开始{方程} \Delta P(y>0)= P(y>0|x=1)-P(y>0|x=0) \end{方程}

这里是竞态变量(虚拟变量)的示例代码,nlcom 适用于虚拟变量为 1(未更正)但不适用于 0 的部分,即使在考虑了前面提到的网站。增加迭代次数并乘以更大的数量也没有帮助:

       _nl_1:  binormal(1.733373263151318-(.0438395852394023*[Tier1]_b[race])+(1*[Tier1]_b[race]),7.575546508411257-(.0438395852394023*[Tier2]_b[race])+
> (1*[Tier2]_b[race])/exp([lnsigma]_b[_cons]),tanh([tau]_b[_cons]))

------------------------------------------------------------------------------
             |      Coef.   Std. Err.      z    P>|z|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
       _nl_1 |   .9223902   .0129743    71.09   0.000     .8969611    .9478193
------------------------------------------------------------------------------

       _nl_1:  binormal(1.733373263151318-(.0438395852394023*[Tier1]_b[race])+(0*[Tier1]_b[race]),7.575546508411257-(.0438395852394023*[Tier2]_b[race])+
> (0*[Tier2]_b[race])/exp([lnsigma]_b[_cons]),tanh([tau]_b[_cons]))*(1e+2)
Maximum number of iterations exceeded.

有解决这个问题的想法吗?

【问题讨论】:

    标签: stata standard-error


    【解决方案1】:

    我不知道这是否是您问题的根源,但是在成功和不成功的nl 语句中,估计的标准差exp([lnsigma]_b[_cons]) 仅除最后一个[Tier*]_b[race] 项,然后仅在binormal 的第二个参数中(这可能是因为您在第一个参数中将SD 限制为1)。这是您在第二个 nl 语句中的意思的猜测,但这只是猜测。

     #delim ;   
    _nl_1:
     binormal
    ((1.733373263151318-(.0438395852394023*[Tier1]_b[race])+(0*[Tier1]_b[race]))
    /exp([lnsigma]_b[_cons]),
     (7.575546508411257-(.0438395852394023*[Tier2]_b[race])+ (0*[Tier2]_b[race]))
    /exp([lnsigma]_b[_cons]),
    tanh([tau]_b[_cons])) ;
    #delim cr
    

    【讨论】:

    • 谢谢史蒂夫。但是,这不是问题。公式为binormal(x1b*,x2b*/sigma,rho)。所以,我的表达是正确的。
    • 是的,但是您的问题中写的第二个参数的形式为 k y2* + d (y2*/sigma) :仅部分除以 sigma。
    • 真棒史蒂夫。现在,问题通过更正得到解决。非常感谢。
    • 不客气。如果您像我一样将它们设为多行,则这些复杂的表达式更容易检查,以便平行部分排列。我发现用 delim 这样做;使代码更清晰,有很多以 ///' 结尾的行。这种做法对于编写有很多选项的情节语句也很有用。
    • 谢谢。我会考虑到这一点。
    猜你喜欢
    • 2019-03-13
    • 1970-01-01
    • 2019-07-04
    • 1970-01-01
    • 2014-05-30
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多