使用 Python 在统计学中显示帕累托分布
帕累托分布是一种幂律概率分布,通常用于描述可测量现象,例如社会、科学、地球物理或精算数据。它以意大利经济学家、社会学家和土木工程师维尔弗雷多·帕累托 (Vilfredo Pareto) 的名字命名。帕累托分布通常用于对各种数据集的分布进行建模,例如城市规模、网站流量和科学出版物引用。
帕累托原则,又称 80/20 规则,表明在每个场景或系统中,20% 的输入对 80% 的结果有贡献。Python 提供了各种用于处理概率分布的库,例如 scipy.stats 库。要在 Python 中计算帕累托分布,可以使用 scipy.stats 库中的 pareto 函数,以形状参数 alpha 和比例参数 xm 作为其参数。
语法
以下语法用于从帕累托分布生成 500 个随机数 -
import numpy as np
from scipy.stats import pareto
data = pareto.rvs(alpha_value, 500, scale_value)
print(np.mean(data))
算法
步骤 1 - 导入库。
步骤 2 - 定义形状参数 (alpha) 和比例参数(xm)
步骤 3 - 指定生成随机数的具体大小并使用'pareto.rvs'函数。
步骤 4 - 打印生成的随机数。
方法 1:这里我们使用 scipy.stats 库
示例 1
要从 alpha = 2 和 xm = 1 的帕累托分布中生成 500 个随机数,我们可以使用以下代码 -
import numpy as np from scipy.stats import pareto data = pareto.rvs(2, size=500, scale=1) print(np.mean(data))
输出
1.9138055526628364
此代码从由数字运算和素数定义的帕累托分布中生成 500 个随机数。计算并打印生成的数字的平均值。这对于组织分布统计数据和在 Python 中执行主要分析非常有用。
示例 2
要从 alpha = 3 和 xm = 2 的帕累托分布中生成 700 个随机数,我们可以使用以下代码 -
import numpy as np from scipy.stats import pareto data = pareto.rvs(3, size=700, scale=2) print(np.median(data))
输出
2.517223926313278
此代码使用帕累托分布生成 700 个随机数,其中 size 参数设置为 3,scale 参数设置为 2。计算并打印所生成数字的中位数(中间分数)。这可用于检查生成的数字的中间数字。
示例 3
要从 alpha = 5 和 xm = 1 的帕累托分布中生成 1000 个随机数,我们可以使用以下代码-
import numpy as np from scipy.stats import pareto data = pareto.rvs(5, size=1000, scale=1) print(np.median(data))
输出
1.1557246772718455
在此代码中,从帕累托分布生成 1000 个随机数,大小参数设置为 3,比例参数设置为 2。此后,计算并打印生成的数字的中位数。这给出了生成的数字的中位数。
方法 2:这里我们使用 Numpy 库
示例 1
要从 alpha = 2 和 xm = 1 的帕累托分布中生成 500 个随机数,我们可以使用以下代码 -
import numpy as np alpha = 2 xm = 1 size = 500 data = np.random.pareto(alpha, size) + xm print(np.mean(data))
输出
1.8557392857152564
此代码从由数字运算定义的帕累托分布中生成 500 个随机数, prime。它计算并打印生成的数字的平均值。
示例 2
要从 alpha = 4 和 xm = 2 的帕累托分布中生成 500 个随机数,我们可以使用以下代码 -
import numpy as np alpha = 4 xm = 2 size = 500 data = np.random.pareto(alpha, size) + xm print(np.mean(data))
输出
2.33759634002971
此代码根据数字运算和素数定义的帕累托分布生成 500 个随机数。它计算并打印生成数字的平均值。
示例 3
要从 alpha = 4 和 xm = 2 的帕累托分布中生成 700 个随机数,我们可以使用以下代码 -
import numpy as np alpha = 4 xm = 2 size = 700 data = np.random.pareto(alpha, size) + xm print(np.median(data))
输出
2.202691921458917
在此代码中,帕累托分布的 alpha 参数设置为 4,尺度 (xm) 设置为 2。此后,700 个随机数是根据帕累托分布确定的。计算并打印生成的数字的中位数。这给出了生成的数字的中位数。
注意 - 以上所有程序/代码每次都会给出不同的输出,因为它在程序中生成随机数。
示例 4
在此程序/示例中,我们分别使用 pdf 和 cdf 方法计算帕累托分布的概率密度函数 (PDF) 和累积分布函数 (CDF),并使用 matplotlib 绘制 PDF 和 CDF 以可视化分布。
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import pareto
alpha = 2 # 定义形状参数
xm = 1 # 定义比例参数
# 根据帕累托分布生成随机数
random_numbers = pareto.rvs(alpha, scale=xm, size=1000)
data = np.linspace(pareto.ppf(0.10, alpha, scale=xm), pareto.ppf(0.90, alpha, scale=xm), 100)
pdf = pareto.pdf(data, alpha, scale=xm) # 计算 PDF
cdf = pareto.cdf(data, alpha, scale=xm) # 计算 CDF
# 绘制 PDF 和CDF
plt.figure(figsize=(10, 4))
plt.subplot(1, 2, 1)
plt.plot(data, pdf, 'r', lw=2, label='PDF')
plt.xlabel('x')
plt.ylabel('Probability Density')
plt.title('Pareto Distribution PDF')
plt.legend()
plt.subplot(1, 2, 2)
plt.plot(data, cdf, 'b', lw=2, label='CDF')
plt.xlabel('x')
plt.ylabel('Cumulative Probability')
plt.title('Pareto Distribution CDF')
plt.legend()
plt.show()
输出

结论
总之,帕累托分布是一种有效的统计工具,可用于模拟具有有限数量极值和大量次要值的事件。帕累托分布在各个领域都有广泛用途,因为它可以模拟收入差距、城市规模和其他经济因素。我们可以通过使用 scipy.stats、Numpy 和 matplotlib 等 Python 模块快速计算、拟合、可视化和分析帕累托分布,并获得对此类实例的重要见解。
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

