gpt4 book ai didi

python - 使用 statsmodels 进行最大似然估计会使事情变得过于复杂?希望大家推荐

转载 作者:行者123 更新时间:2023-12-01 02:00:27 25 4
gpt4 key购买 nike

在学习了一些高级统计类(class)后,我决定编写一些函数/类,以便通过 MLE 自动估计不同分布的参数。在 Matlab 中,以下是我轻松编写过的代码:

function [ params, max, confidence_interval ] = newroutine( fun, data, guesses )

lh = @(x,data) -sum(log(fun(x,data))); %Gets log-likelihood from user-defined fun.

options = optimset('Display', 'off', 'MaxIter', 1000000, 'TolX', 10^-20, 'TolFun', 10^-20);
[theta, max1] = fminunc(@(x) lh(x,data), guesses,options);
params = theta
max = max1

end

我只需将基础 pdf 方程正确指定为 fun,并且通过更多代码,我可以计算 p 值、置信区间等。

但是,使用 Python,我在 MLE 自动化上找到的所有资源(例如 herehere)坚持最简单的方法是深入研究OOP 使用 statsmodel 的子类 GenericLikelihoodModel,这对我来说似乎太复杂了。我的推理是,由于对数似然可以从 pdf 自动创建(至少对于绝大多数函数),并且 scipy.stats."random_dist".fit() 已经很容易返回MLE 估计,每次有一个新的 dist 时都必须编写约 30 行类代码,这似乎很荒谬。适合。

我意识到,按照两个链接建议的方式进行操作可以让您自动利用 statsmodel's 功能,但老实说,它似乎并不比利用 scipy 自己和编写更简单的函数。

我是否缺少执行基本 MLE 的更简单方法,或者 statsmodels 这样做有真正好的理由吗?

最佳答案

我写了first post概述了各种方法,我认为可以公平地说,虽然我推荐 statsmodels 方法,但我这样做是为了利用它提供的后估计工具,并在每次估计模型时获取标准错误。

当使用minimize时,Python相当于fminunc(正如您在示例中概述的那样),通常我被迫使用“Nelder-Meade”或其他一些梯度获得收敛的自由方法。由于我需要标准误差来进行统计推断,因此这需要使用 numdifftools 来恢复粗麻布的额外步骤。所以最后,你提出的方法也有其复杂性(对于我的工作而言)。如果您关心的是最大似然估计而不是推理,那么您概述的方法可能是最好的,并且您不需要 statsmodel 机制是正确的。

仅供引用:在a later post中,我将您的方法与 autograd 结合使用,以显着加速大型最大似然模型。我尚未成功使其与 statsmodels 一起使用。

关于python - 使用 statsmodels 进行最大似然估计会使事情变得过于复杂?希望大家推荐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49713530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com