5

MATLAB統計チュートリアルには、「より複雑な分布の適合:2つの法線の混合」というセクションがあり ます。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)

2つ以上の法線を、私が持っている単変量の値のセットにフィッティングするために同じ方法を適用したいと思いますが、周期的なドメイン内にあります。つまり、0°から360°の値を持つ角度が円形の範囲としてリンクされます。MATLABにこの種の用語を理解させるために、どのように宣言するかはわかりません。

この実装を変更して、循環範囲のケースを追加することは可能ですか?

よろしく、イグナシオ

4

1 に答える 1

1

私はフォン ミーゼス分布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 を推定します。

于 2013-03-14T18:14:18.463 に答える