2017-06-14 20 views
2

Pythonで対数正規分布に適合したいと思います。私だけではなく、次の操作を行うのscipy.lognormal.fitを使用する必要がありますなぜ私の質問は:対数正規分布に適合する方法

分布は対数正規分布になるように、muとsigmaのMLEを与える
from numpy import log 
mu = log(data).mean() 
sigma = log(data).std() 

(ミュー、シグマ** 2)?

また、いったんmuとsigmaを取得すると、lognormal(mu、sigma ** 2)のscipyオブジェクトをどのように取得できますか? scipy.stats.lognormに渡された引数は私には分かりません。

おかげフィ​​ッティング

答えて

1

Wrtの、あなたはscipy.lognormal.fitを使用することができ、あなたはscipy.normal.fitを使用することができますログインするために適用される(x)は、あなたがちょうど書いたものを行うことができ、私はあなたがほとんど同じ結果を得るべきであると考えています。

唯一のことは、2つのパラメータ(mu、σ)に合わせなければならないということです.2つの値を一致させる必要があります。 mean/stddevに行くのではなく、ピークをマッチさせてmode/stddevから(mu、sigma)を得る方が好きかもしれません。既知の平均値とSTDDEVとlognormを使用して

Wrtの

from scipy.stats import lognorm 

stddev = 0.859455801705594 
mean = 0.418749176686875 

dist=lognorm([stddev],loc=mean) # will give you a lognorm distribution object with the mean and standard deviation you specify. 

# You can then get the pdf or cdf like this: 

import numpy as np 
import pylab as pl 
x=np.linspace(0,6,200) 
pl.plot(x,dist.pdf(x)) 
pl.plot(x,dist.cdf(x)) 

pl.show() 

enter image description here

関連する問題