1

データセットのリストのすべてのメンバーを対数正規分布に適合させたいです。次に、各分布の関数の期待値を計算します。次のコードを試しましたが、次のエラーが発生します。

コード

   from numpy import *
   from scipy.stats import lognorm
   dists = map(lognorm,data)
   expectations = [dist.expect(r_[1,1],zeros(40,)) for dist in dists]

エラー

  AttributeError: 'rv_frozen' object has no attribute 'expect'

おそらく私はドキュメントを間違って読んでいますが、それは凍結されたディストリビューションで利用できるexpect方法だからです。lognormal

凍結されたディストリビューションから「expect」などのメソッドを呼び出す正しい方法は何ですか?

4

2 に答える 2

3

のスレッドを参照してください

http://mail.scipy.org/pipermail/scipy-user/2012-August/032860.html

expect凍結されたディストリビューションにはまだ接続されていません。凍結されていないディストリビューションを使用するか、次のようなヘルパー関数を使用してください

def expect(X, f, lb, ub):
    if hasattr(X, 'dist'):
        return X.dist.expect(f, lb = lb, ub = ub)
    else:
        return X.expect(f, lb = lb, ub = ub)

アップデート:

凍結配布の問題に加えて、配布の方法を確認する必要があります。.fit(data, ...)パラメータを推定するためにを使用する必要があります。

を使用して関数の期待値を計算できますexpect。署名はここにありますhttp://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.rv_continuous.expect.html?highlight=expect#scipy.stats .rv_continuous.expect

デフォルトはexpect、平均を計算する恒等写像です。.meanただし、または.statsメソッドを使用して、分布から直接平均を取得することもできます。これにより、平均の明示的な式がある場合に統合が回避されます。

于 2012-11-07T15:28:57.970 に答える
0

Scjipy Frozen Objectを見ると、それはexpectその方法ではないことがわかります。

試す :

 from numpy import *
 from scipy.stats import lognorm
 dists = map(lognorm,data)
 expectations = [ lognorm.expect(  func, s, loc  ) for dist in dists]

(関数オプションがわかりません)

于 2012-11-07T12:39:21.803 に答える