微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

statsmodels 的 MLEModel 类是否使用期望最大化进行拟合?

如何解决statsmodels 的 MLEModel 类是否使用期望最大化进行拟合?

我正在使用 statsmodels' MLEModel 类构建自定义统计空间模型,并使用 .fit() 方法拟合未知参数。我认为它正在使用期望最大化,但我不确定这一点,我在文档中找不到任何提示。而且,.fit() 方法的详细输出显示了单个优化的步骤,这让我更加怀疑。

如果它不使用 EM,它在做什么?也许我在这里遗漏了一些东西,但我认为对于具有隐藏变量的模型(如状态空间模型),您不能直接最小化可能性(因为您不知道也没有观察到隐藏状态)。

感谢您的建议

解决方法

默认情况下,MLEModel 使用拟牛顿方法在数值上找到使似然函数最大化的参数。最终,它依赖于 Scipy minimize 函数。默认算法是 BFGS algorithm,但您可以使用 method 参数选择其他算法。例如,method='nm' 使用 Nelder-Mead algorithm

Statsmodels 状态空间框架提供了使用 EM 算法的所有工具(例如适当的平滑器),但您必须自己实现它。例如,EM 算法是用于拟合 DynamicFactorMQ 模型的默认方法,因为它具有大量参数,而对于此类问题,拟牛顿方法可能很慢且不可靠。

,

一般来说,fit() 是模型类的一个方法。根据类对象,将调用该类中的 fit() 方法。通常,fit() 估计参数 via maximum likelihood 并返回结果对象。

如果我没记错的话,expectation maximization (EM) 算法需要并使用 Kalman smoother 用于带有隐藏变量的模型。

编辑:fit() 将校准其父类的 fit(),在本例中为 tsbase.TimeSeriesModel,如 class MLEModel(tsbase.TimeSeriesModel) 所示。反过来,class TimeSeriesModel(base.LikelihoodModel) 将调用其父类 base.LikelihoodModelclass LikelihoodModel(Model)'s fit() function 默认方法参数是 'newton'。因此,最大似然 (ML) 估计将在此自定义状态空间模型中使用牛顿方法进行估计。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。