2017-02-27 7 views
-1

私はトピックに関する以前の質問があることを知っていますが、私の質問の詳細を見つけることができません。私はヒストグラム上にポアソン分布を上書きしようとしています。私が試した最初のものは、scipyのダウンロードに統計モジュールからポアソン機能を使用していました:ヒストグラムへのオーバープロットポアソン分布

import numpy 
from scipy.stats import poisson 

mu = mean(data) 
n, bins, patches = pyplot.hist(data, 20, normed = 1) 
pyplot.plot(bins, poisson.pmf(bins, mu), 'r-') 
pyplot.show() 

しかし数字(私のデータの青のヒストグラム)に示したように、私は3つの奇妙なピークを有する赤色のプロットを取得します。したがって

The histogram in blue represents my data. The red line is the Poisson function using scipy.stats

私は自分のポアソン分布関数書き込もうとしました:

def poisson(mu, x): 
    from scipy.misc import factorial 
    return numpy.exp(-mu) * mu**x * factorial(x)**-1 

y = poisson(mu, bins) 

をしかし、私はそれを印刷しようとすると、私はナンの配列を取得します。私は何か間違っているのですか?それとも、ビンの数字が大きすぎますか? stats.poissonから結果を印刷するとき

print y  
[ nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan] 

しかし私が手:

[3.25452236e-06 0.00000000e+00 0.00000000e+00 0.00000000e+00 
0.00000000e+00 3.63110218e-04 0.00000000e+00 0.00000000e+00 
0.00000000e+00 0.00000000e+00 5.24385396e-03 0.00000000e+00 
0.00000000e+00 0.00000000e+00 0.00000000e+00 1.06061293e-02 
0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00 
3.23183010e-03] 
ポアソン関数の

答えて

0
  • は、あなたの代わりにあなたの 'ビン' の入力で 'INT' を与える必要があり、numpyの.arange(1200,1475)です。

  • あなた自身のポアソン関数のためには、特に大きなx(x> 20)を使って、 '階乗'を使うときは注意が必要です。私はあなたの祖先にいると思われます。 floatの階乗も存在しません!

試してみてください。

X = np.arange(1200, 1450) 
plt.plot(X, poisson.pmf(X,1375), 'r-') 
+0

こんにちは、右、私はそれがポアソンのために発生しなかった理由を私はビンの整数をしなければならなかった私自身の階乗関数のために、私が知らないことを考え出していました関数をscipyモジュールに追加します。私の少しばかな。ありがとう! – user3412058

関連する問題