使用fminsearch执行分布拟合

时间:2016-03-11 23:49:59

标签: matlab probability curve-fitting data-fitting fminsearch

假设我在数组errors中保存了一组单变量数据。

我想在我观察到的数据分布中加入PDF。

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

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

此处,theta是错误(errors中的值为实例的变量),mukappaxi是参数我希望使用最大似然估计找到最佳拟合的PDF。此函数返回给定值theta的概率密度。

鉴于这一切,我如何使用fminsearch查找最适合我观察到的mu的{​​{1}},kappaxi的值? errors文档没有说明这一点。文档中的所有示例都不是分布拟合的示例。

注意:教程here清楚地描述了分布拟合(与曲线拟合不同),但给出的示例不使用fminsearch

1 个答案:

答案 0 :(得分:2)

以下是使用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

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

enter image description here