假设我在数组errors
中保存了一组单变量数据。
我想在我观察到的数据分布中加入PDF。
我的PDF在函数poissvmwalkpdf
中定义,其定义行如下所示:
function p = poissvmwalkpdf(theta, mu, kappa, xi)
此处,theta
是错误(errors
中的值为实例的变量),mu
,kappa
和xi
是参数我希望使用最大似然估计找到最佳拟合的PDF。此函数返回给定值theta
的概率密度。
鉴于这一切,我如何使用fminsearch
查找最适合我观察到的mu
的{{1}},kappa
和xi
的值? errors
文档没有说明这一点。文档中的所有示例都不是分布拟合的示例。
注意:教程here清楚地描述了分布拟合(与曲线拟合不同),但给出的示例不使用fminsearch
。
答案 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
在制定似然函数(或负对数似然)之后,这只是一个简单的优化。