我怎么知道我的指数曲线在SciPy中有多好?

时间:2014-06-03 12:39:02

标签: python numpy exponential-distribution

我使用Scipy拟合了一些数据:

param=expon.fit(data)
pdf_fitted=expon.pdf(x,loc=param[-2],scale=param[-1])
plot(x,pdf_fitted,'r')
hist(data,normed=1,alpha=.3,histtype='stepfilled')

我得到一条看起来像这样的曲线:

Exponential fit to data

如何检查适合度有多好(是否有参数?)。我想要一个数字,所以我可以比较不同的拟合方式。

1 个答案:

答案 0 :(得分:4)

假设您的错误是正态分布的,标准方法是使用平方残差的总和。这样,您可以使用chi²分布变成严格的统计数据。

values, edges = np.histogram(data, bins=np.sqrt(len(data)))
x = edges[:-1] + np.diff(edges)

pdf_fitted = expon.pdf(x, loc=param[0], scale=param[1])
residuals = values - pdf_fitted

print np.dot(residuals, residuals)

或者,如果您更喜欢RMS:

print np.dot(residuals, residuals) / len(residuals)