1

我一直在四处寻找将 Levy Distributions 拟合到直方图的方法,但无济于事。我希望测试 Levy Flight 分布在数据上的表现,无论它是否真的适合我们的数据类型。由于我在 PDF 方面相当陌生,并且除了 matlab 中的 distfittool GUI 之外还安装了我自己的 PDF,所以我有点不知道我需要做什么才能正确地做到这一点。

所以目前,我的数据是一个 208x1 的向量,208 个点代表 208 个不同对象的不同速度。速度仅通过每次总距离计算。

现在,目前我采用了描述征费航班的函数: 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

我已经看到与此问题类似的问题没有答案,所以在得到同事的帮助后,我想发布解决方案

与我最初的问题不同的另一件事是,它变得分段以更好地满足我自己发布的征费飞行方程的参考。我选择的起始值是任意的。

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

您可以在本网站的 Matlab 代码中找到拟合例程

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

于 2013-12-10T05:21:59.430 回答