Параметры представлены в результате в том же порядке, в котором их принимает оптимизированная функция. Поскольку строка определяется как line(x, m, b)
, popt
содержит оценки в порядке [m, p]
.
pcov
(или perr
в примере), который возвращает curve_fit
, является ковариационной матрицей оценочных параметров.
- Диагональные элементы - это отклонения. Они говорят нам, насколько вероятно изменение параметра или насколько мы уверены в оценке. Большая разница в основном означает, что мы не очень много знаем о параметре; значение, возвращаемое в
popt
, является наиболее вероятным значением, но даже отдаленные значения также очень вероятны.
- Недиагональные элементы - это ковариации . Их значение на самом деле скрыто в названии: ко-дисперсия; как переменные изменяются вместе.
Вот что означают различные значения ковариации:
covariance | two variables are...
------------+-----------------------
0 | not related at all
1 | exactly the same
-1 | exactly inverted
between 0 and 1 | one is likely to be large when the other is also large
between 0 and -1 | one is likely to be large when the other is small
В примере ковариационная матрица равна
[[ 0.025, -0.114],
[-0.114, 0.723]]
Так что же означает, что ковариация наклона и пересечения равна -0,114? Они связаны: если перехват большой, наклон должен быть меньше, и наоборот.
Графически, если вы перемещаете всю линию вверх, она должна иметь меньший наклон, чтобы быть рядом с точками данных; если вы переместите его вниз, ему нужно больше уклона.
Это довольно очевидно в линейной регрессии и поэтому не так полезно; но имейте в виду, что curve_fit
может выполнять любую сложную функцию, где зависимость между параметрами не так очевидна. В этом случае это может быть ценной информацией.