4

... ヘルプとオンライン ドキュメントによると、関数 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を引いたものです(ただし、これは上記の問題を変更しません)

4

2 に答える 2

5

locとの推測を提供する必要があるようですscale

In [78]: import scipy.stats as stats

In [79]: b, loc, scale = 1.5, 0, 1

In [80]: data = stats.pareto.rvs(b, size=10000)

In [81]: stats.pareto.fit(data, 1, loc=0, scale=1)
Out[81]: (1.5237427002368424, -2.8457847787917788e-05, 1.0000329980475393)

フィットを成功させるには、推測がかなり正確である必要があります。

In [82]: stats.pareto.fit(data, 1, loc=0, scale=1.01)
Out[82]: (1.5254113096223709, -0.0015898489208676779, 1.0015943893384001)

In [83]: stats.pareto.fit(data, 1, loc=0, scale=1.05)
Out[83]: (1.5234726749064218, 0.00025804526532994751, 0.99974649559141171)

In [84]: stats.pareto.fit(data, 1, loc=0.05, scale=1.05)
Out[84]: (1.0, 0.050000000000000003, 1.05)

locうまくいけば、問題のコンテキストが、との適切な推測を教えてくれるでしょscaleう。ほとんどの場合、loc=0およびscale=1

于 2013-03-18T01:58:19.733 に答える
5

fit メソッドは、分布の非負の尤度関数 (self.nnlf) で optimize.fmin を実行する、非常に一般的で単純なメソッドです。未定義領域を作成できるパラメーターを持つパレートのような分布では、一般的な方法は機能しません。

特に、一般的な nnlf メソッドは、確率変数の値が分布の有効範囲に収まらない場合に "inf" を返します。「fmin」オプティマイザーは、開始値を最終的な適合に非常に近い値に推測しない限り、この目的関数ではうまく機能しません。

一般に、.fit メソッドは、pdf の適用範囲に制限がある分布に対して、制約付きオプティマイザーを使用する必要があります。

于 2013-03-18T02:45:02.403 に答える