1

私はしばらくの間、レヴィ分布をヒストグラムに適合させて無駄にすることを探していました。Levy Flight分布が、データ型に本当に適しているかどうかに関係なく、データに対してどのように見えるかをテストしたいと思っています。私はPDFにかなり慣れておらず、matlabのdistfittool GUIを除いて自分のPDFSを適合させているので、これを適切に行うために何をする必要があるのか​​少しわかりません。

したがって、現在、私のデータは208x1のベクトルであり、208ポイントは、208個の異なるオブジェクトのさまざまな速度を表しています。速度は、時間あたりの全体的な距離だけで計算されました。

さて、現在、私はLevyフライトを説明する関数を http://reference.wolfram.com/mathematica/ref/LevyDistribution.html(Out [3])から取得しました。

そして、私はそれを試すために次のコードを使用しました:

load('Speeds.mat')
modelFun = @(p,x) (exp(-p(1)./(2.*(x-p(2)))).*(p(1)./(x-p(2))).^3/2)./(sqrt(2.*pi).*p(1));
startingVals = [1 1];
coefEsts = nlinfit(LBSpeed,modelFun,startingVals);

Levyフライトの配布に精通していないことが、それが配布に使用する適切な関数であるかどうか、またこれを適切に行うために渡す必要のある引数がわからない理由の原因であることを完全に認識しています。誰かが私にもう少し洞察を与えることができれば、私はそれを大いに感謝します。

4

2 に答える 2

1

私はこの問題と同様の質問を答えなしで見たので、同僚の助けを借りた後、私は解決策を投稿したいと思いました

私の最初の質問から変更されたもう1つの点は、自分で投稿したレヴィフライト方程式の参照をより適切に満たすことが区分的になったということです。私が選んだ開始値は任意でした。

load('Speeds.mat')
[N,X] = hist(Speed,20);
Y = N/(sum(N))/diff(X(1:2));

%Get best parameters
modelFun = @(p,x) (x>p(2)).*(exp(-p(1)./(2.*(x-p(2)))).*(p(1)./(x-p(2))).^(3/2))./(sqrt(2.*pi).*p(1));
startingVals = [1,1];
coefEsts = nlinfit(X,Y,modelFun, startingVals);

%Visualize fit
bar(X,Y);
hold on;
model_eval = modelFun(coefEsts,X);
plot(X,model_eval,'r','LineWidth',2);

そもそもヒストグラムを合わせる方法がわからなかったので、これが初めての人に役立つことを願っています!

于 2012-11-21T18:48:50.070 に答える
0

このWebサイトのMatlabコードでフィッティングルーチンを見つけることができます

http://math.bu.edu/people/mveillet/html/alphastablepub.html

于 2013-12-10T05:21:59.430 に答える