使用 fminsearch 进行分布拟合
Using fminsearch to perform distribution fitting
假设我在数组 errors
.
中保存了一组单变量数据
我想将 PDF 拟合到我观察到的数据分布。
我的 PDF 是在函数 poissvmwalkpdf
中定义的,其定义行如下所示:
function p = poissvmwalkpdf(theta, mu, kappa, xi)
这里,theta
是错误(errors
中的值是实例的变量),mu
、kappa
和xi
是我想使用最大似然估计找到最合适的 PDF 的参数。此函数 returns 给定值 theta
的概率密度。
鉴于所有这些,我将如何使用 fminsearch
找到最适合我观察到的 errors
的 mu
、kappa
和 xi
的值]? 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
制定似然函数(或负对数似然)后,这只是一个简单的优化。
假设我在数组 errors
.
我想将 PDF 拟合到我观察到的数据分布。
我的 PDF 是在函数 poissvmwalkpdf
中定义的,其定义行如下所示:
function p = poissvmwalkpdf(theta, mu, kappa, xi)
这里,theta
是错误(errors
中的值是实例的变量),mu
、kappa
和xi
是我想使用最大似然估计找到最合适的 PDF 的参数。此函数 returns 给定值 theta
的概率密度。
鉴于所有这些,我将如何使用 fminsearch
找到最适合我观察到的 errors
的 mu
、kappa
和 xi
的值]? 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
制定似然函数(或负对数似然)后,这只是一个简单的优化。