幂律分布拟合神器——Python库powerlaw( 二 )
>fig2=fit.plot_pdf(color=‘b’,linewidth=2)
>fit.power_law.plot_pdf(color=‘b’,linestyle=‘–’,ax=fig2)>fit.plot_ccdf(color=‘r’,linewidth=2,ax=fig2)>fit.power_law.plot_ccdf(color=‘r’,linestyle=‘–’,ax=fig2
文章图片
图3.神经元连接数据的CCDF(红色)和PDF(蓝色)曲线 。
在绘图之外 , PDF、CDF和CCDF信息也可用 。 拟合对象返回拟合数据和排序数据(CDF)和bin的边缘概率(PDF) 。 分布对象默认使用全部拟合数据 , 也可以指定具体的数据范围 。
>x,y=fit.cdf()#幂律分布CDF拟合>bin_edges,probability=fit.pdf()>y=fit.lognormal.cdf(data=https://pcff.toutiao.jxnews.com.cn/p/20210629/[300,350])#对数正态分布CDF拟合>y=fit.lognormal.pdf()拟合范围
拟合幂律的第一步是确定拟合数据的哪一部分 。 长尾分布的有趣特征是尾部及其属性 , 所以如果数据的初始小值不遵循幂律分布 , 用户有可能会选择忽略它们 。 powerlaw库会为用户提供最优的幂律拟合最小值 , 当然用户也可以选择指定最小值或给最小值框定范围 , 不同的最小值选择往往会带来不一样的拟合结果 , 如下方代码所示 。
>fit=powerlaw.Fit(data)>fit.xmin#得到最优的幂律拟合最小值
230.000>fit.power_law.alpha2.273>fit.power_law.D#选择数据和拟合之间的Kolmogorov-Smirnov距离D
0.061>fit=powerlaw.Fit(data,xmin=1.0)#指定x_min进行幂律拟合>fit.xmin1.0>fit.fixed_xminTrue>fit.power_law.alpha1.220>fit.power_law.D0.376>fit=powerlaw.Fit(data,xmin=(250.0,300.0))#给定x_min范围>fit.given_xmin(250.000,300.000)>fit.xmin272.0
另外 , 一些领域也希望分布有一个精确的上界x_max , 因为有时考虑实际情况一些数据可能超出了理论极限(例如在天体物理学中 , 速度的分布在光速下可能有一个上限) 。 powerlaw库同样能满足这部分用户的需求 。
>fit=powerlaw.Fit(data,xmax=10000.0)>fit.xmax10000.0>fit.fixed_xmaxTrue
文章图片
图4.不同的x_min和x_max选择可能导致不同的拟合结果 。
这里的x_min和x_max默认使用KS距离D最小的值 。 然而 , 这个距离D对分布尾部的差异明显不敏感 , 而尾部正是幂律的大部分有趣行为发生的地方 。 可能需要使用其他指标 , 如Kuiper或AndersonDarling , 它们在测量分布之间的距离时给予尾部额外的权重 , 用户可以根据实际需要进行调整 。
>fit=powerlaw.Fit(data,xmin_distance=‘D’)>fit=powerlaw.Fit(data,xmin_distance=‘V’)>fit=powerlaw.Fit(data,xmin_distance=‘Asquare’)离散与连续数据
为了适合幂律和其他分布的连续形式 , 数据默认是连续的 。 然而 , 许多数据是离散的 。 离散分布的概率分布不能精确地与连续分布相提并论 。 离散(整数)分布通过适当的规范化 , 可以在初始化时指定 。 不过离散形式的概率分布通常比连续形式更难计算 , 因此某些操作运行可能会比较慢 。
>fit=powerlaw.Fit(data,xmin=230.0)>fit.discreteFalse>fit=powerlaw.Fit(data,xmin=230.0,discrete=True)>fit.discreteTrue与其他分布比较
从创建的Fit对象中 , 用户可以很容易地访问评估长尾分布所需的所有统计分析 。 Fit对象也能适用于其他可能的分布形式 。 每个分布都有适合该分布的最佳参数 , 可通过参数名称或更通用的“parameter1”访问 。
>fit.power_law.alpha2.273>fit.power_law.parameter12.273>fit.power_law.parameter1_name>fit.lognormal.mu0.154>fit.lognormal.parameter1_name‘mu’>fit.lognormal.parameter2_name‘sigma’>fit.lognormal.parameter3_name==None
True
另外 , 得到参数之后还需要评价哪个分布优度更好 。 每个分布的拟合优度可以考虑单独或通过相互比较得到(这里使用KS检验和对数似然比来确定) 。 比如下方代码直接对比幂律分布和指数分布的拟合效果 。 返回得到的R是两个候选分布之间的对数似然比 , 如果数据更有可能在第一个分布中 , 这个数字将为正 , 如果数据更有可能在第二个分布中 , 这个数字将为负 。 p是显著性指标 。
- GPU|苹果新系统抄袭华为鸿蒙系统?鸿蒙分布式系统有多超前?
- 油气|遥感技术描绘全球首幅浮油分布图
- 虎鲸是―种高度社会化的动物,分布于几乎所有的海洋区域,它属于 神奇海洋6月21日答案
- 分布式云越来越火,它凭什么代表云计算的未来?
- 浙江省首个分布式光伏智能并网微型断路器投运
- 分布式能源|电网仿真技术助力新型电力系统建设
- 分布式异构数据库同步更新的研究与应用
- 数据库|国产分布式数据库最新成果获国家级奖项!
- 单考虑分布偏移远不够!真实数据很复杂,「外部有效性」不可或缺
- iPad|通过KVM IP网关实现KVM系统的互联互通,实现分布式架构功能应用
