Я использую scipy.optimize.leastsq для подгонки некоторых данных. Я хотел бы получить некоторые доверительные интервалы для этих оценок, поэтому я заглядываю в вывод cov_x, но документация очень неясна в отношении того, что это такое и как получить из этого ковариационную матрицу для моих параметров.
Прежде всего, он говорит, что это якобиан, но в примечаниях он также говорит, что "cov_x является якобианским приближением к гессианскому" , так что это на самом деле не якобиан, а гессиан, используя некоторое приближение от якобиана. Какое из этих утверждений верно?
Во-вторых, это предложение для меня путается:
Эта матрица должна быть умножена на остаточную дисперсию, чтобы получить ковариацию оценок параметров - см. curve_fit.
Я действительно смотрю исходный код для curve_fit, где они делают:
s_sq = (func(popt, *args)**2).sum()/(len(ydata)-len(p0))
pcov = pcov * s_sq
что соответствует умножению cov_x на s_sq, но я не могу найти это уравнение в какой-либо ссылке. Может ли кто-нибудь объяснить, почему это уравнение верно? Моя интуиция подсказывает мне, что это должно быть наоборот, поскольку cov_x должен быть производным (якобиан или гессиан), поэтому я думал: cov_x * ковариация (параметры) = сумма ошибок (остатков), где сигма (параметры) - это то, что я хочу.
Как подключить вещь curve_fit, чтобы сделать то, что я вижу, например. википедия: http://en.wikipedia.org/wiki/Propagation_of_uncertainty#Non-linear_combinations