1 回答

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊
stats.lognorm
與 類似stats.norm
,但使用了 3 個(gè)參數(shù)。具有 3 個(gè)參數(shù)會(huì)使分布更難擬合,并且通常loc
給出初始猜測(cè)為零。沒有這樣的初始猜測(cè),擬合度通常很差。請(qǐng)注意,除了猜測(cè),還loc
可以將固定值設(shè)置為lognorm.fit(data, floc=0)
。
import numpy as np
from scipy import stats as st
import matplotlib.pyplot as plt
data = 60 + (np.random.randn(50, 200)+0.2).cumsum(axis=0).ravel()
lshape, lloc, lscale = st.lognorm.fit(data, loc=0)
mu, std = st.norm.fit(data)
plt.hist(data, 50, density=True, facecolor='orange', alpha=0.75)
xmin, xmax = plt.xlim()
x = np.linspace(xmin, xmax, 500)
plt.plot(x, st.norm.pdf(x, mu, std), color='dodgerblue', linewidth=1.5, label='gaussian normal')
plt.plot(x, st.lognorm.pdf(x, lshape, loc=lloc, scale=lscale), color='limegreen', linewidth=1.5, label='lognormal')
plt.legend()
plt.autoscale(enable=True, axis='x', tight=True)
plt.show()
PS:要試用Paul H 的庫(kù),可以安裝pip install paramnormal
:
import paramnormal
lognorm_params = paramnormal.lognormal.fit(data)
plt.plot(x, paramnormal.lognormal.from_params(lognorm_params).pdf(x))
乍一看,對(duì)于這些示例數(shù)據(jù),它給出了與 相同的曲線(但參數(shù)化不同)st.lognorm.fit(data, loc=0)。
添加回答
舉報(bào)