- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在 MATLAB 统计教程中有一节叫做“拟合更复杂的分布:两个法线的混合” 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 理解这种术语。
是否可以更改此实现以添加循环范围案例?
问候,伊格纳西奥
最佳答案
我正在使用 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。
关于MATLAB - 周期函数(角度)的最大似然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15390328/
在 MATLAB 统计教程中有一节叫做“拟合更复杂的分布:两个法线的混合” http://www.mathworks.com/help/stats/examples/fitting-custom-un
我是一名优秀的程序员,十分优秀!