我正在尝试将t分布拟合到我拥有的一些数据中。为了测试它我首先尝试从固定分布生成样本并尝试适应它。以下是我正在使用的代码。
samp = t.rvs(loc=0, scale=0.6, df=1.3, size=150)
param = t.fit(samp)
x = linspace(-5,5,100)
pdf_fitted = t.pdf(x,loc=param[0],scale=param[1],df=param[2])
pdf = t.pdf(x,loc=0,scale=0.6,df=1.3)
title('Student\'s t Distribution')
plot(x,pdf_fitted,'r-',x,pdf,'b-')
hist(samp, normed=1,alpha=0.3)
show()
print(param)
现在,我们可以预期pdf
和pdf_fitted
基本相同。但事实并非如此。当显示图表时,原始和拟合的分布看起来非常不同。而且,获得的参数与指定的参数(loc = 0,scale = 0.6,df = 1.3)完全不匹配!这让我感到困惑,因为我只是简单地调整http://glowingpython.blogspot.com/2012/07/distribution-fitting-with-scipy.html的代码来处理t分布。有人可以告诉我,是否有适合t分布的细微差别?感谢
答案 0 :(得分:4)
fit
的{{1}}方法会返回scipy.stats.t
,所以此行
(df, loc, scale)
应该是
pdf_fitted = t.pdf(x,loc=param[0],scale=param[1],df=param[2])
您链接到的示例使用的是正态分布,但没有其他形状参数,因此在这种情况下,pdf_fitted = t.pdf(x, loc=param[1], scale=param[2], df=param[0])
是位置,param[0]
是比例。< / p>