使用 fminsearch 进行分布拟合

Using fminsearch to perform distribution fitting

假设我在数组 errors.

中保存了一组单变量数据

我想将 PDF 拟合到我观察到的数据分布。

我的 PDF 是在函数 poissvmwalkpdf 中定义的,其定义行如下所示:

function p = poissvmwalkpdf(theta, mu, kappa, xi)

这里,theta是错误(errors中的值是实例的变量),mukappaxi是我想使用最大似然估计找到最合适的 PDF 的参数。此函数 returns 给定值 theta 的概率密度。

鉴于所有这些,我将如何使用 fminsearch 找到最适合我观察到的 errorsmukappaxi 的值]? fminsearch 文档没有说明这一点。 None 文档中的示例是分布拟合的示例。

注意:教程here清楚的描述了什么是分布拟合(区别于曲线拟合),但是给出的例子没有使用fminsearch.

这是使用 fminsearch 获得最大似然估计的最小示例(如评论中所要求):

function mle_fit_minimal

n       = 100;
% for reproducibility
rng(333)
% generate dummy data
errors  = normrnd(0,1,n,1);

par0    = [1, 1];
[par_hat, nll] = fminsearch(@nloglike, par0)

% custom pdf
    function p = my_pdf(data, par)
        mu      = par(1);
        sigma   = par(2);
        p       = normpdf(data, mu, sigma);
    end

% negative loglikelihood function -- note that the parameters must be passed in a 
% single argument (here called par).
    function nll = nloglike(par)
        nll     = -sum(log(my_pdf(errors, par)));
    end
end

制定似然函数(或负对数似然)后,这只是一个简单的优化。