胆囊息肉

注册

 

发新话题 回复该主题

强大的帕累托分布其可视化实现方法老 [复制链接]

1#
北京儿童扁平疣医院 http://pf.39.net/bdfyy/zjdy/210404/8812944.html

1.帕累托分布

帕累托分布是一种幂律概率分布,以意大利土木工程师、经济学家和社会学家维尔弗雷多·帕累托的名字命名,用来描述社会、科学、地球物理、精算和其他各种可观察到的现象。帕累托分配有时也被称为帕累托原则或“80-20”规则,即社会财富的80%掌握在20%的人口手中。帕累托分布不是自然规律,而是一种观察。它在许多实际问题中都很有用。

读完定义后,你一定想知道什么是幂律?幂次定律是两个量之间的函数关系,一个量的变化引起另一个量的比例变化,而与两个量的初始大小无关。

80-20法则在很多情况下都适用。例如,帕雷托发现80%的意大利土地为20%的人口所有。他还发现,他菜园里80%的豌豆来自20%的豌豆植株。世界上82.7%的收入由20%的人口控制。微软年的一份报告显示,Windows和MSOffice系统80%的错误和崩溃都是由20%的bug引起的。80%的销售额来自20%的产品。80%的客户只使用20%的软件功能。这种80-20分布非常频繁。

2.在Python中生成帕雷托分布

可以使用Scipy在Python中生成帕雷托分布。统计模块或使用NumPy、Scipy、stats模块包含各种概率分布和不断增长的统计函数库。Scipy是一个用于科学计算和技术计算的Python库。NumPy是一个用于科学计算的Python库,除了科学用途之外,它还可以用作泛型数据的多维容器。

2.1使用Scipy.stats

x_m和alpha是帕雷托分布的两个参数。x_m为scale参数,表示帕雷托分布随机变量所能取得最小值。是形状参数,等于n/SUM{ln(x_i/x_m)}。

linspace()返回均匀间隔的样本(样本的数量等于num)在一个特定的间隔内[开始,停止]。在上面的代码中,linspace()方法在一个范围[0,5]内返回个均匀间隔的样本。

将迭代形状值-alpha列表以绘制每个值的线条。array()创建一个数组。Pareto()方法返回一个Pareto连续随机变量。PDF()创建一个概率密度函数(PDF)。参数x、b、loc、scale分别为类数组分位数、类数组形状参数、类数组可选位置参数(默认值为0)、类数组可选比例参数(默认值为1)。

plot()绘制均匀间隔的样本和PDF值的数组。图形是为每个值绘制的。在这里,输出。T是输出的转置。输出是一个3行的Pareto分布数组,每个形状参数一个。在转置时,输出被转换成一个列数组。

其余的代码行几乎是不言自明的。使用plt.xlabel()和plt.ylabel()标记x轴和y轴。title()将title分配给图。grid()配置网格线。

所述plt.rcParams[]设置当前RCPARAMS。Matplotlib使用matplotlibrc配置文件来自定义各种属性,这些属性称为“rc设置”或“rc参数”。Matplotlib中几乎每个属性的默认值都可以控制:图形大小和DPI,线宽,颜色和样式,轴和网格属性,文本和字体属性等等。

legend()显示图例,而plt.show()显示所有数字。

2.2使用Numpy

Pareto()从具有指定形状的ParetoII或Lomax分布中随机抽取样本。帕累托分布是一种移位的帕累托分布。通过添加1并乘以缩放参数x_m,可以从Lomax分布中得到经典的Pareto分布。

帕累托分布的最小值为0,而经典的帕累托分布为mu,其中标准帕累托分布的位置mu=1。

plt.hist()绘制直方图。当参数density或normed被设置为True时,返回的tuple将第一个元素作为count归一化以形成概率密度。因此,直方图下的面积为1。这是通过将计数除以观察次数乘以箱子宽度而不是除以观察总数来实现的。因此y轴代表样本的密度。

计数中的“_”,bin,_传达返回的元组的最后的值并不重要(plt.hist()将返回三个元素的元组)。

我们将绘制绑定数据的曲线,

我们将随机采样数据拟合一个Pareto分布,并通过计算参数为x_m和alpha的bin定义的x值处的Pareto分布的概率密度,在我们的数据上绘制这个分布。

3.验证帕累托分布

Q-Q图(分位数-分位数图)用于确定连续随机变量是否服从帕累托分布。

统计数据。帕累托根据指定的理论分布(Pareto分布)的分位数生成随机样本(样本数据)的概率图。由于绝大多数的蓝点(样本数据)几乎与红线(理论分布)一致,所以我们可以得出结论,该分布服从Pareto分布。

在结束之前,有必要了解帕累托分布在现实世界中的应用。

4.帕累托分布的应用

人类住区的规模(更少的城市和更多的村庄)。沙粒的大小。遵循TCP协议在internet上分布的数据的文件大小。油田储量价值(大油田少,小油田多)在Tinder上,男性约会成功,80%的女性会争夺20%的最具吸引力的男性。用户玩各种游戏所花费的时间(很少有游戏比大多数很少玩的游戏玩得更多)。帕累托分布及其概念非常简单,但功能强大。它总是有助于收集重要的线索,以了解广泛的人类行为,科学和社会现象。我希望您能更好地理解帕累托分布以及如何从中抽取样本,并使用Pyplot、Numpy、Scipy和Python进行绘图。

分享 转发
TOP
发新话题 回复该主题