亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在一個圖中擬合對數正態分布和正態分布

在一個圖中擬合對數正態分布和正態分布

海綿寶寶撒 2023-06-20 14:42:45
為了比較它們,我必須將對數正態分布和正態分布擬合到一個圖上。我能夠使我的數據正常,如下圖所示。我很難添加合適的對數正態分布這是我的代碼:   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,100)   p = st.norm.pdf(x, mu, std)   plt.plot(x, p, 'k', linewidth=1.5)   plt.show()
查看完整描述

1 回答

?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

stats.lognorm與 類似stats.norm,但使用了 3 個參數。具有 3 個參數會使分布更難擬合,并且通常loc給出初始猜測為零。沒有這樣的初始猜測,擬合度通常很差。請注意,除了猜測,還loc可以將固定值設置為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()

http://img1.sycdn.imooc.com/64914a9300015f2b09830397.jpg

PS:要試用Paul H 的庫,可以安裝pip install paramnormal

import paramnormal


lognorm_params = paramnormal.lognormal.fit(data)

plt.plot(x, paramnormal.lognormal.from_params(lognorm_params).pdf(x))

乍一看,對于這些示例數據,它給出了與 相同的曲線(但參數化不同)st.lognorm.fit(data, loc=0)。


查看完整回答
反對 回復 2023-06-20
  • 1 回答
  • 0 關注
  • 167 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號