【问题标题】:MATLAB - Maximum likelihood for periodic function (angles)MATLAB - 周期函数的最大似然(角度)
【发布时间】:2013-03-15 02:22:36
【问题描述】:

在 MATLAB stats 教程中有一节称为“拟合更复杂的分布:两个正态的混合” http://www.mathworks.com/help/stats/examples/fitting-custom-univariate-distributions.html

pdf_normmixture = @(x,p,mu1,mu2,sigma1,sigma2) ...
                     p*normpdf(x,mu1,sigma1) + (1-p)*normpdf(x,mu2,sigma2);
lb = [0 -Inf -Inf 0 0];
ub = [1 Inf Inf Inf Inf];
start = [pStart muStart sigmaStart sigmaStart];
paramEsts = mle(x, 'pdf',pdf_normmixture, 'start',start, 'lower',lb, 'upper',ub)

我想应用相同的方法将两个或多个法线拟合到我拥有的一组单变量值,但在周期域内。也就是说,具有 0° 到 360° 值的角度链接在一起作为一个圆形范围。我不知道如何声明它以使 MATLAB 理解这种术语。

是否可以更改此实现以添加循环范围情况?

问候, 伊格纳西奥

【问题讨论】:

  • 这是一个非常有趣的问题,我很想听听一些原则性的方法。但是,在面向编程较少的地方可能会有更好的答案 - 例如stats.stackexchange.com
  • 我会把它贴在那里。我应该从这里删除这篇文章吗?谢谢
  • 不,除非有更多的共识——我认为类似的问题在这里出现了很多,所以不应该成为问题。可能还有一些专门的MATLAB解决方案...
  • 我已经实现了一个统计测试来比较我的数据的累积分布和我预测的拟合函数。回答这个问题并不紧急,但如果有人想有创意,欢迎任何 cmet
  • 我不太明白你的问题。设 n 为整个样本的大小。你是说 \sum_{i=1}^{n}theta_i=360 吗?并且每个 theta_i 都有一个正态分布?

标签: matlab


【解决方案1】:

我正在使用 von Mises 分布 http://en.wikipedia.org/wiki/Von_Mises_distribution,它被认为与包裹正态分布非常接近(请参阅“循环统计 S. Rao Jammalamadaka, A. SenGupta”中的主题中的条件)。不幸的是,我没有 matlab 来测试它,但我认为代码正在运行。因此,如果近似值有效,则可以执行以下操作:

主要功能:

% 你应该提供列向量 theta 0-2pi

n=size(theta,1);

mu=0;

k=1;

theParameters=[mu;k];
options = optimset('TolFun',0.01);
outputPar = fminsearch('ml',theParameters,options,n,theta);

机器学习函数

function mLike=ml(theParameters,n,theta)

mu=theParameters(1,1);
k=theParameters(2,1);

theSum=0;
for i=1:n
   theSum=theSum+k*cos(theta(i,1)-mu);
end    
mLike=-n*log(2*pi*besselj(0,k)) + theSum;
mLike=-mLike;

希望对你有帮助! R 中还有一个工具箱可以处理这种估计 http://cran.r-project.org/web/packages/circular/circular.pdf

如果您对 k 的积极性有疑问,为了避免处理约束优化,请执行 k=exp(kk) 并估计 kk。

【讨论】:

  • 顺便说一下,如果上面的近似值无效,可能数据没有正常包裹!
猜你喜欢
  • 2015-01-15
  • 2015-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-12
  • 1970-01-01
  • 1970-01-01
  • 2017-03-12
相关资源
最近更新 更多