帮助和在线文档显示函数scipy.stats.pareto.fit的变量为需要拟合的数据集,可选的有b(指数)、loc、scale。结果以三元组(指数、loc、scale)的形式给出。
从同一分布生成数据应导致拟合找到用于生成数据的参数,例如(使用Python 3控制台)。
(在下面的代码行中,省略Python控制台提示符“ >>>”)
然而这导致
(指数为1,应为1.1),和
在指数为4,位置为2,比例为0.4的情况下。
显而易见的问题是:我是否完全误解了这个适合函数的目的,它是否以某种不同的方式使用,还是它只是有缺陷?备注:在有人提到像Aaron Clauset网页上给出的专用函数(http://tuvalu.santafe.edu/~aaronc/powerlaws/)比scipy.stats方法更可靠,并且应该使用它们之前,需要指出的是:对于10000个数据点的数据集,它们也非常非常非常耗时,在普通PC上可能需要许多小时(也许是天、周、年)。编辑:哦:适合函数的参数不是分布的指数,而是指数减1(但这并不改变上述问题)。
从同一分布生成数据应导致拟合找到用于生成数据的参数,例如(使用Python 3控制台)。
$ python
Python 3.3.0 (default, Dec 12 2012, 07:43:02)
[GCC 4.7.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
(在下面的代码行中,省略Python控制台提示符“ >>>”)
dataset=scipy.stats.pareto.rvs(1.5,size=10000) #generating data
scipy.stats.pareto.fit(dataset)
然而这导致
(1.0, nan, 0.0)
< p >(指数1,应为1.5)和
dataset=scipy.stats.pareto.rvs(1.1,size=10000) #generating data
scipy.stats.pareto.fit(dataset)
结果为
(1.0, nan, 0.0)
(指数为1,应为1.1),和
dataset=scipy.stats.pareto.rvs(4,loc=2.0,scale=0.4,size=10000) #generating data
scipy.stats.pareto.fit(dataset)
在指数为4,位置为2,比例为0.4的情况下。
(1.0, nan, 0.0)
等等,当调用fit函数时给出另一个指数
scipy.stats.pareto.fit(dataset,1.4)
返回始终完全相同的指数
(1.3999999999999999, nan, 0.0)
显而易见的问题是:我是否完全误解了这个适合函数的目的,它是否以某种不同的方式使用,还是它只是有缺陷?备注:在有人提到像Aaron Clauset网页上给出的专用函数(http://tuvalu.santafe.edu/~aaronc/powerlaws/)比scipy.stats方法更可靠,并且应该使用它们之前,需要指出的是:对于10000个数据点的数据集,它们也非常非常非常耗时,在普通PC上可能需要许多小时(也许是天、周、年)。编辑:哦:适合函数的参数不是分布的指数,而是指数减1(但这并不改变上述问题)。