如何解决模拟最大似然估计中的“块状”?

机器算法验证 matlab 状态 最大似然 优化
2022-03-27 13:39:34

我正在尝试估计以下形式的模型:

W = alphaH * H + alphaM * M + alphaL * L + X * beta

其中H, M, L是离散选择变量的指标,beta类似于 35 维。因为我们认为我们的数据/模型存在内生性问题,所以我们将模型扩展到

W  = alphaH * H' + alphaM * M' + alphaL * L' + X * beta
H  = Z * betaH
M  = Z * betaM
L  = Z * betaL
H' = 1( H = max(H,M,L) )
M' = 1( M = max(H,M,L) )
L' = 1( L = max(H,M,L) )

其中Z是仪器,betaH, betaM, betaL是要估计的参数。这种“亚回归”对应于基于潜在效用的选择模型。

我们已经能够使用该命令在 Stata 中估计第二阶段模型(估计H, M, L,暗示) ,但无法弄清楚如何一举估计整个模型。为了解决这个问题,我们在 MATLAB 中编写了一些代码来使用模拟的最大似然估计模型,但是 MATLAB 在局部最小值(这个问题中的最大值,但 MATLAB 只会最小化负数......),其中有很多.H', M', L'mvprobit

我们试图通过从几十个初始条件开始来解决这个问题,这些初始条件通常都不会收敛到“正确”的答案;我几乎可以肯定地说,因为我们一直在分段测试代码并确认(在随机测试数据上)如果优化在“正确”值附近开始(在测试中),它会收敛到合理的值,否则它无法接近(尽管最终结果的总体可能性要低得多)。

是否有任何技巧(MATLAB、Stata 或其他)来解决这个问题?这是模拟与封闭形式分析的固有问题吗?

谢谢你的帮助。

3个回答

听起来您需要使用可以处理局部最小值的更强大的优化算法。在这种情况下,粒子群方法工作得很好。或者您可以尝试其他进化优化方法或模拟退火。

您的似然函数是非凹的(即似然函数的 Hessian 矩阵不是 SDN)。由此可知

  1. 只会找到似然函数的局部最大值(没有全局最优性的保证)
  2. 这个最大值将始终取决于您选择的起点。
  3. 您的最大化过程将始终是一个迭代过程。

在不直接解决上述问题的情况下,处理它们的一种方法是通过蒙特卡洛优化(这里有一篇评论),这基本上是在统计框架内对 Rob 建议的重铸。

您可以通过简单地估计来完全避免这个问题

W = alphaH * H + alphaM * M + alphaL * L + X * beta

使用 2sls。H、M 和 L 是离散的这一事实并不违反 2sls 的任何假设。当然,使用最大似然会产生更有效的估计,但它依赖于更多的假设。如果不出意外,2sls 估计应该为您的最大化算法提供良好的起始值。

为了最大化似然性,您应该尝试更改模拟方法以使似然函数平滑。我认为 Geweke-Hajivassiliou-Keane(通常只是 GHK)模拟器的轻微变体会起作用。