gt6*_*89b 6 python distribution scipy
我正在使用scipy.statsPython 2.7.10 运行一些拟合优度测试.
for distrName in distrNameList:
distr = getattr(distributions, distrName)
param = distr.fit(sample)
pdf = distr.pdf(???)
Run Code Online (Sandbox Code Playgroud)
我将通过哪些distr.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')
Run Code Online (Sandbox Code Playgroud)

要评估pdf at abscissas,您将abcissas作为第一个参数传递给pdf.要指定参数,请使用*运算符解压缩param元组并将这些值传递给distr.pdf:
pdf = distr.pdf(abscissas, *param)
Run Code Online (Sandbox Code Playgroud)
例如,
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1388 次 |
| 最近记录: |