问题标签 [power-law]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2148 浏览

python - 如何正确地将数据拟合到 Python 中的幂律?

我正在考虑Moby Dick 小说中唯一单词的出现次数,并使用powerlawpython 包将单词的频率拟合到幂律。

我不知道为什么我不能概括 Clauset 等人以前工作的结果。因为 p 值和 KS 分数都是“差”。

这个想法是将独特词的频率拟合到幂律中。然而,Kolmogorov-Smirnov 测试的拟合优度由scipy.stats.kstest看起来很糟糕。

我有以下函数可以将数据拟合到幂律:


下载赫尔曼·梅尔维尔 (Herman Melville) 的小说《白鲸记》(Moby Dick) 中独特词的频率(根据 Aaron Clauset 等人的说法,应该遵循幂律):

Python脚本:

结果:


当我比较预期结果并在同一个 Moby Dick 数据集上遵循这个R 教程时,我得到了一个不错的 p 值和 KS 测试值:


在计算 KS 测试值并通过powerlaw python 库对拟合进行后处理时,我缺少什么?PDF 和 CDF 对我来说看起来不错,但 KS 测试看起来有问题。

在此处输入图像描述

0 投票
1 回答
224 浏览

r - R的powerlaw包中连续与离散对数正态分布的似然函数差异

我正在尝试使用 Colin GillespiepoweRlaw在 R 中的包将对数正态分布拟合到一些计数数据。我知道对数正态分布是连续的并且计数数据是离散的,但是,该包包含连续和离散版本的类和方法的对数正态分布。

当我拟合 xmin(忽略计数值的阈值以下)、记录均值和记录 sd 参数并引导结果以获得p值时,我得到一个向量内存耗尽错误。我发现当包内部函数sample_p_helper试图从拟合分布中生成随机数时会发生这种情况。拟合的 log mean 和 log sd 参数非常低,以至于拒绝采样算法试图生成数十亿个数字来获得高于 xmin 的任何值,因此存在内存问题。

输入:

错误信息:

那么问题就变成了为什么首先要拟合如此低且拟合不佳的 log mean 和 log sd 参数值。

我注意到,如果我拟合对数正态分布的连续版本,则不会出现错误,并且参数值似乎更合理(实际上,p值​​表明数据与对数正态分布兼容):

查看包的源代码,我注意到离散和连续对数正态分布的似然函数是不同的。具体来说就是计算联合概率的部分。

连续版本看起来像我期望的那样:

然而,在离散版本中,联合概率的计算方式不同:

指数分布的离散和连续实现之间存在类似的差异,但离散和连续幂律分布没有。在连续版本中,joint_prob通过相对简单的调用来计算dlnorm,但离散版本调用plnorm。此外,他们调用plnorm了两次,首先是观察到的数据值 -0.5,然后是观察到的值 +0.5,然后从后者中减去前者。

所以,最后,我的问题:

  • 为什么powerlaw在对数正态分布的离散实现中要这样计算联合概率呢?我敢肯定它以这种方式编写是有原因的,这只是我的数学无知,但我并不真正理解它。

  • 即使我的数据是离散的,使用 powerlaw 的连续对数正态分布是否安全,因为无论如何它似乎工作得很好?

  • 在尝试拟合离散对数正态分布时,关于我的数据可能出现什么问题的任何其他线索?我在想某处可能存在扩展问题,但很难解决这个问题。

  • 我的可笑的小数据集会起作用吗?我正在尝试将分布拟合到仅高于 xmin 的 8 个值,这对于最大似然性来说太少了,我知道。

感谢您通过这篇冗长的帖子忍受我。我知道这既是一个统计问题,也是一个编码问题。非常感谢任何朝着正确方向有帮助的推动!干杯。

0 投票
1 回答
88 浏览

r - 适合收入分配的幂律

我正在处理不同国家的家庭总净收入的微观数据,在计算不平等指数之前,我想调整右尾以考虑这些指数对最高收入和最高收入的敏感性。因此,我正在尝试使用 powerlaw 包来拟合右尾的幂律分布。但是,我对 Xmin 有一些奇怪的估计。我使用了以下代码:

结果 Xmin 为:99863,但对于相关国家/地区而言,这意味着大约是第 25 个百分位。(在这种情况下,平均收入为 223290,丹麦电晕)。实际上,绘制 qqnorm 可以观察到右尾的偏差开始远高于估计的 Xmin,但在第 95 个百分位附近(红线):

在此处输入图像描述

最后,还用获得的最小值绘制估计的幂律的 cdf,这显然不是最佳拟合:

在此处输入图像描述

鉴于数据集很大,我报告了我用来拟合幂律的列向量(家庭收入):

知道我做错了什么吗?谢谢!

0 投票
0 回答
32 浏览

python - 为什么拟合函数上的误差太大,曲线似乎也从最大点数通过。如何减少该错误?

我想使用幂律来拟合我的数据点,因为我必须计算 v 的值。但是我的拟合参数误差太大,尽管曲线似乎通过了所有数据点。如何减少错误?在此处输入图像描述

0 投票
1 回答
449 浏览

python - 在networkx python中,如何将一组新的节点和边连接到图中的每个节点?

目前我创建了一个图表如下:

现在我需要根据 =3 的幂律分布将随机数量的新节点连接到上述核心网络的每个节点。所以我得到了一个新的幂律分布图(例如:15个节点):

现在如何将这个新图连接到我之前网络中的某个节点?尝试过add_nodes_from,但它们似乎覆盖了以前的节点,这很奇怪;而且我无法确保它们已连接到某个节点。或者有什么直接的方法可以做到这一点?谢谢你的协助!

0 投票
1 回答
97 浏览

gnuplot - Gnuplot 拟合不匹配

我尝试用幂律拟合我的数据文件,所以我有:

我的数据是:

但最后我只有来自我的数据的点,但我没有这个功能。

在此处输入图像描述

有人知道会发生什么以及如何获得该函数的图吗?

先感谢您。

0 投票
0 回答
136 浏览

python - 在 python 中使用幂律模块

我正在尝试将幂律模块用于一个非常简单的案例,但它无法正常工作。我阅读了文档,但不太了解。使用下面的代码,我得到8.36310071704202,而不是,我的函数0.5的指数lambda

0 投票
1 回答
364 浏览

python - Python - 不合适

我正在尝试重现已知的拟合结果(在期刊论文中报告):将幂律模型应用于数据。从下面的图 A 中可以看出,我能够通过使用已知的最佳拟合参数来重现结果。

< Plot-A:来自文献的已知结果 > 两个轴:对数刻度

但是,我无法自己重新推导最佳拟合参数。

< Plot-B:curve_fit 和 lmfit 的不正确拟合 > 错误的

案例A返回,

OptimizeWarning: Covariance of the parameters could not be estimated(如果我省略了几个初始数据点,拟合会返回一些不错的结果,但仍与已知的最佳拟合结果不同)。 编辑:现在,我这次只是发现了新的附加错误消息.. : (1) RuntimeWarning: overflow encountered in power (2)RuntimeWarning: invalid value encountered in power

case-B(初始猜测更接近最佳拟合参数)返回,

RuntimeError: Optimal parameters not found: Number of calls to function has reached maxfev = 5000. 如果我将 maxfev 设置得更高以考虑此错误消息,则拟合有效但返回不正确的结果(与最佳拟合结果相比非常错误的拟合)。

0 投票
3 回答
299 浏览

python - 幂律数据拟合不正确

尝试使用对数 y 轴拟合以下数据时我做错了什么。代码和生成的图表如下。

在此处输入图像描述

0 投票
1 回答
2108 浏览

python - Python中的幂律分布拟合

我正在使用不同的 python 来拟合数据集上的密度函数。该数据集由从 1 秒开始的正时间值组成。

我测试了来自库的不同密度函数,scipy.statistics以及powerlaw使用scipy.optimize's function 的我自己的函数curve_fit()

到目前为止,我在拟合以下“修改的”幂律函数时获得了最好的结果:

我的代码如下:

对于 x0,拟合返回值 8.48,对于 alpha,返回值 1.40。在 loglog 图中,数据和拟合图如下所示:

阴谋

  • 我的第一个问题是技术性的。为什么在函数中将opt.curve_fit(x+x0) 更改为 (x-x0) 时会出现以下警告和错误funct?由于我的 x0 界限是 (-inf, +inf),我期待拟合返回 -8.48。

/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:3: RuntimeWarning: 除以零倒数遇到这与 ipykernel 包是分开的,所以我们可以避免导入直到 ValueError: Residuals are not limited in the initial观点。

  • 我的其他问题是理论上的。(x+x0)^(-alpha) 是标准分布吗?x0值代表什么,这个8.48s值如何物理解释?据我了解,这意味着我的分布对应于移动的幂律分布?我可以认为 x0 对应于将数据拟合到幂律时通常需要的 xmin 值吗?
  • 关于这个 xmin 值,我知道在拟合过程中只考虑大于这个阈值的数据来表征分布的尾部是有意义的。但是,我想知道用 xmin 之后的幂律和 xmin 之前的其他东西来表征完整数据的标准方法是什么。

这是很多问题,因为我对这个主题非常不熟悉,任何评论和回答,即使是部分的,将不胜感激!