[英]Getting a pdf from scipy.stats in a generic way
我正在使用擬合檢驗一些善良scipy.stats
在Python 2.7.10。
for distrName in distrNameList:
distr = getattr(distributions, distrName)
param = distr.fit(sample)
pdf = distr.pdf(???)
我將什么傳遞給distr.pdf()
以獲取最佳擬合pdf的值,這些pdf位於感興趣的樣本點list
中,稱為abscissas
?
從文檔中, .fit()
方法返回:
shape,loc,scale:浮點元組MLE用於任何形狀統計,其次是位置和比例。
並且.pdf()
方法接受:
x:array_like分位數
arg1,arg2,arg3,...:array_like分布的形狀參數(有關更多信息,請參閱實例對象的docstring)
loc:array_like,可選的位置參數(默認= 0)
scale:array_like,可選
所以基本上你會做這樣的事情:
import numpy as np
from scipy import stats
from matplotlib import pyplot as plt
# some random variates drawn from a beta distribution
rvs = stats.beta.rvs(2, 5, loc=0, scale=1, size=1000)
# estimate distribution parameters, in this case (a, b, loc, scale)
params = stats.beta.fit(rvs)
# evaluate PDF
x = np.linspace(0, 1, 1000)
pdf = stats.beta.pdf(x, *params)
# plot
fig, ax = plt.subplots(1, 1)
ax.hold(True)
ax.hist(rvs, normed=True)
ax.plot(x, pdf, '--r')
為了評估在PDF abscissas
,你會通過abcissas
作為第一個參數,以pdf
。 要指定參數,請使用*
運算符解壓縮param
元組並將這些值傳遞給distr.pdf
:
pdf = distr.pdf(abscissas, *param)
例如,
import numpy as np
import scipy.stats as stats
distrNameList = ['beta', 'expon', 'gamma']
sample = stats.norm(0, 1).rvs(1000)
abscissas = np.linspace(0,1, 10)
for distrName in distrNameList:
distr = getattr(stats.distributions, distrName)
param = distr.fit(sample)
pdf = distr.pdf(abscissas, *param)
print(pdf)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.