错误:";超过最大迭代次数;在Stata中使用nlcom

错误:";超过最大迭代次数;在Stata中使用nlcom,stata,standard-error,Stata,Standard Error,我试图使用有限因变量模型的Stata(Delta方法)中的nlcom来估计边际效应的标准误差。在计算边际效应时,我们通常计算概率、条件和无条件部分。我还能够使用Stata中的nlcom获得条件和无条件部分的标准错误。然而,当使用nlcom作为概率时,我得到了错误“超过了最大迭代次数”。我确实看过这个解决方案,它确实解决了一些二进制变量(3)。但是,对于4个变量,我仍然得到相同的错误。我深入研究了这个问题,发现错误与虚拟变量为0的部分有关: \开始{等式} \δP(y>0)=P(y>0 | x=1

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

\开始{等式} \δP(y>0)=P(y>0 | x=1)-P(y>0 | x=0) \结束{方程}

以下是比赛变量(虚拟变量)的示例代码,
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.

有没有办法解决这个问题?

我不知道这是否是你问题的根源,但在成功和失败的
nl
声明中,估计的标准偏差,
exp([lnsigma]\u b[\u cons])
只除以最后一个
[Tier*]\u 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*/σ,rho)
。所以,我的表达是正确的。是的,但你问题中的第二个论点是形式ky2*+d(y2*/sigma):只有部分被sigma除。太棒了。现在,通过纠正,问题得到了解决。非常感谢。不客气。这些复杂的表达式更容易检查,如果你让它们多行,就像我做的那样,使平行部分对齐。我发现与delim一起做这件事;使代码更清晰,有许多以//'结尾的行。这种做法对于编写具有许多选项的绘图语句也很有用。谢谢。我会考虑这一点。