Как узнать, насколько хорошо подходит моя экспоненциальная кривая в SciPy?

Я подогнал некоторые данные, используя 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')

И я получаю кривую, которая выглядит так:

Экспоненциальное соответствие данным

Как проверить, насколько хорошо подходит (есть ли параметр для этого?). Мне нужен номер, чтобы я мог сравнить различные способы установки.


person Devinity    schedule 03.06.2014    source источник
comment
Самый простой способ — использовать MSE.   -  person BartoszKP    schedule 03.06.2014
comment
Этот вопрос по теме для SO? Кажется, он спрашивает о параметрах соответствия, а не о фактическом программировании?   -  person Ffisegydd    schedule 03.06.2014
comment
Я просто хотел узнать, есть ли для этого функция.   -  person Devinity    schedule 03.06.2014


Ответы (1)


Стандартный метод, предполагающий, что ваши ошибки нормально распределены, заключается в использовании суммы квадратов остатков. Это можно превратить в статистику строгости, используя распределение хи².

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)
person Davidmh    schedule 03.06.2014