Zipf分布的拟合优度

11视图(30天)
z8080
z8080 2023年3月30日
编辑: Torsten 2023年4月4日
我有几个向量的数量和,对于每一个人,像适合Zipf分布,估计拟合优度相对于一些标准基准。
在这里 ,我得到的公式及/ PDF Zipf分布,我作为第三个参数 适合 在以下的例子:
x = [1:6]”;
y = [80 40 20 10 5 2]”;
情节(x, y,”或“),持有%绘制数据点
[f, gof_info] = fit (x, y,“x。^(-(+ 1)ρ)。/ζ(ρ+ 1)');
情节(f,“k”)%绘制模型曲线
然而,这将返回
ρ= 28.05(负、正)
因此没有模型曲线绘制,然后我不知道如何继续拟合优度检验。
我的问题:
1)假设Zipf上面公式是正确的,而且ρ是唯一的模型参数,这与无限的置信区间估计是为什么呢?
2) 建议使用Kolmogorov-Smirnov测试(引导检查意义)比较数据理论Zipf定律分布。然而,Matlab函数 键糟 似乎只指的是正态分布,没有选项指定另一个分布类型(例如Zipf)。 其他人 建议Anderson-Darling等测试,但这也仅指正常分布。
3)拟合优度的参数 gof_info 输出(SSE, R平方等)需要传递到显著性检验(Kolmogorov-Smirnov或Anderson-Darling) ?
感谢任何帮助!
2的评论
z8080
z8080 2023年3月31日
谢谢你指出这个:的确,看起来我无视这两个之间的区别,分布拟合,我真正需要的,因为我 x 轴是仅仅排名。
文档你指出,建议我的 fitdist 我应该使用,但是没有我需要的分布(Zipf)在其成为可能 distname 值。更多的建议吗?

登录置评。

接受的答案

Torsten
Torsten 2023年3月31日
编辑:Torsten 2023年4月2日
我设置你的数据的最大似然函数,提出了一个估计价值为分布参数= 2.116年代的ζ分布与p_s (k) = 1 / k ^ s /ζ(s) (k = 1、2、3…)。我不知道这是我们讨论离散概率密度函数或如果你心目中的分布具有有限支持和Zipf的分布(即p_s (k) = 1 / k ^ s / sum_ {I = 1} ^ {I = N} 1 /我^ (k = 1,2,…, N)):万博1manbetx
如果你想要的版本与有限的支持(Zipf分布)中(例如N = 6),替换万博1manbetx
有趣= @ (s) 1. /ζ(年代)。^ 157。* 1. / 2。^ (40 *。* 1. / 3。^ (20 *。* 1. / 4。^ (10 *。* 1./5。^ (5 *。* 1./6。^ (2 * (s);
zipf = 1. / x。^ smax /ζ(smax);
通过
有趣= @ (s) 1. / (1 + 1. / 2 ^ (s + 1. / 3。^ + 1. / 4 . ^年代^ s + 1./6 + 1./5。^)。^ 157。* 1. / 2。^ (40 *。* 1. / 3。^ (20 *。* 1. / 4。^ (10 *。* 1./5。^ (5 *。* 1./6。^ (2 * (s);
zipf = 1. / x。^ smax /笔(1. / x。^ (smax));
x = [1:6]”;
y = [80 40 20 10 5 2]”;
X = [];
i = 1:元素个数(x)
X = [X, X(我)* 1 (1,y (i)));
结束
持有
直方图(X,“归一化”,“pdf”)
%有趣= @ (s) 1. / (1 + 1. / 2 ^ (s + 1. / 3。^ + 1. / 4 . ^年代^ s + 1./6 + 1./5。^)。^ 157。* 1. / 2。^ (40 *。* 1. / 3。^ (20 *。* 1. / 4。^ (10 *。* 1./5。^ (5 *。* 1./6。^ (2 * (s);
有趣= @ (s) 1. /ζ(年代)。^ 157。* 1. / 2。^ (40 *。* 1. / 3。^ (20 *。* 1. / 4。^ (10 *。* 1./5。^ (5 *。* 1./6。^ (2 * (s);
s = 1.5:0.001:3;
fs =乐趣(s);
[~,指数]= max (fs);
smax = s(指数)
smax = 2.1160
zipf = 1. / x。^ smax /ζ(smax);
% zipf = 1. / x。^ smax /笔(1. / x。^ (smax));
情节(x, zipf)
持有
网格
11日评论
Torsten
Torsten 2023年4月4日
编辑:Torsten 2023年4月4日
为什么“频率”非整数x = 3, 6, 7, 8, 9 ?我认为这是绝对频率选择x。
与zipf分布比较,你必须从你的计算经验pdf (x,频率)数据。这是作为epdf =频率/笔(频率)。
在这之后,zipf必须被定义为
zipf = 1. / x。^α/笔(1. / x。^α);
%定义一些经验频率分布
x = 1:10;
频率= 100 / x;%教科书zipf !
epdf =频率/笔(频率);
%定义Zipf分布
α= 1.0;%形状参数,1.5是一个很好的全面的价值
zipf_dist = 1. / x。^α。/笔(1. / x。^α);%计算Zipf分布
%绘制我们的经验频率分布与Zipf分布
图(1);
酒吧(x, epdf);%或频率\ N
持有;
情节(x, zipf_dist,“r——”);
包含(“排名”);
ylabel (“概率”);
传奇(“观察”,“Zipf”);
持有
有趣= @(α)刺激(1. / x。^(α*频率)。/((和(1. / x ^α))^ (sum(频率)));
α= 0.5:0.001:3;
falpha = arrayfun(@(α)有趣的(α),α);
图(2)
falpha情节(α)
[~,指数]= max (falpha);
alphamax =α(指数)
alphamax = 1
%计算使用卡方拟合优度检验
expected_freq = zipf_dist。*总和(频率);
chi_squared =((频率- expected_freq)。^ 2。/ expected_freq);
景深=长度(频率)- 1;
p_value = 1 - chi2cdf (chi_squared,景深);
%显示结果
流(“卡方统计量= % .4f \ n”,chi_squared);
卡方统计量= 0.0000
流(“假定值= % .4f \ n”,p_value);
假定值= 1.0000
如果p_value < 0.05
流(结论:数据不是来自Zipf分布。\ n”);
其他的
流(结论:数据来自Zipf分布。\ n”);
结束
结论:从Zipf分布数据。

登录置评。

答案(1)

沃尔特·罗伯森
沃尔特·罗伯森 2023年3月30日
泽塔()函数是0甚至负整数,所以泽塔(ρ+ 1)是所有奇怪的负整数0比1小。除以,所以你的函数振荡无限当ρ是负的。
4评论
沃尔特·罗伯森
沃尔特·罗伯森 2023年3月31日
一种可能性是,特定的例子你公布的数字是不适合Zipf分布。

登录置评。

s manbetx 845


释放

R2023a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!