... ヘルプとオンライン ドキュメントによると、関数 scipy.stats.pareto.fit は、適合するデータセットを変数として取り、オプションで b (指数)、loc、scale を取ります。結果はトリプレット (exponent、loc、scale) として返されます
同じ分布からデータを生成すると、データの生成に使用されるパラメーターを見つける適合が得られるはずです。たとえば、(python 3 colsole を使用して)
$ 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)
(指数 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)
(exponent は 4、loc は 2、scale は 0.4 である必要があります) in
(1.0, nan, 0.0)
など fit 関数を呼び出すときに別の指数を与える
scipy.stats.pareto.fit(dataset,1.4)
常に正確にこの指数を返します
(1.3999999999999999, nan, 0.0)
明らかな疑問は次のとおりです: この fit 関数の目的を完全に誤解しているのでしょうか。
注意: Aaron Clauset の Web ページ ( http://tuvalu.santafe.edu/~aaronc/powerlaws/ ) で提供されているような専用関数は scipy.stats メソッドよりも信頼性が高く、代わりに使用する必要があると誰かが言及する前に:本当かもしれませんが、非常に非常に時間がかかり、10000 ポイントのデータセットの場合、通常の PC では何時間も (場合によっては数日、数週間、数年) かかります。
編集:ああ:フィット関数のパラメータは、分布の指数ではなく、指数から1を引いたものです(ただし、これは上記の問題を変更しません)