Математика
Сначала мы начнем с линейной регрессии. Во многих статистических задачах мы предполагаем, что переменные имеют некоторые базовые распределения с некоторыми неизвестными параметрами, и мы оцениваем эти параметры. В линейной регрессии мы предполагаем, что зависимые переменные yi имеют линейную связь с независимыми переменными xij:
yi = xi1β1 + ... + xipβp > + σεi, i = 1, ..., n.
где εi имеет независимое стандартное нормальное распределение, βj - это p неизвестных параметров, а также неизвестно σ. Мы можем записать это в матричной форме:
Y = X β + σε,
где Y, β и ε — вектор-столбец. Чтобы найти наилучшее β, мы минимизируем сумму квадратов
S = (Y - X β)T (Y - X β).
Я просто пишу решение, которое
β^ = (XT X)-1 XT Y.
Если мы видим Y как конкретные наблюдаемые данные, β ^ является оценкой β при этом наблюдении. С другой стороны, если мы рассматриваем Y как случайную величину, оценка β^ также становится случайной величиной. Таким образом, мы можем увидеть, какова ковариация β^.
Поскольку Y имеет многомерное нормальное распределение, а β^ является линейным преобразованием Y, β^ также имеет многомерное нормальное распределение. Ковариационная матрица β^ равна
Cov(β^) = (XT X)-1 XT Cov(Y) ((XT > X)-1 XT)T = (X T X)-1 sup> σ2.
Но здесь σ неизвестен, поэтому его тоже нужно оценить. Если мы позволим
Q = (Y - X β^)T (Y - X β^),
можно доказать, что Q / σ2 имеет распределение хи-квадрат с n - p степенями свободы (при этом Q не зависит от β^). Это делает
σ^2 = Q / (n - p)
несмещенная оценка σ2. Таким образом, окончательная оценка Cov(β^) равна
(XT X)-1Q/(n - p).
SciPy-API
curve_fit
наиболее удобен, второе возвращаемое значение pcov
— это всего лишь оценка ковариации β^, то есть окончательный результат (XT X)-1 Q/ (н - р) выше.
В leastsq
второе возвращаемое значение cov_x
равно (XT X)-1. Из выражения S мы видим, что XT X является гессианом S (точнее, половиной гессиана), поэтому в документе говорится, что cov_x
является обратным гессиану. Чтобы получить ковариацию, нужно умножить cov_x
на Q/(n - p).
Нелинейная регрессия
В нелинейной регрессии yi зависит от параметров нелинейно:
yi = f(xi, β1, ..., βp sub>) + σεi.
Мы можем вычислить частные производные от f по βj, поэтому она становится приблизительно линейной. Тогда расчет в основном такой же, как линейная регрессия, за исключением того, что нам нужно итеративно аппроксимировать минимум. На практике алгоритм может быть более сложным, например, алгоритм Левенберга-Марквардта, который по умолчанию имеет значение curve_fit
.
Подробнее о предоставлении Sigma
Этот раздел посвящен параметрам sigma
и absolute_sigma
в curve_fit
. Для базового использования curve_fit
, когда у вас нет предварительных знаний о ковариации Y, вы можете игнорировать этот раздел.
Абсолютная сигма
В приведенной выше линейной регрессии дисперсия yi равна σ и неизвестна. Если вы знаете разницу. Вы можете предоставить его curve_fit
через параметр sigma
и установить absolute_sigma=True
.
Предположим, что предоставленная вами матрица sigma
равна Σ. то есть
Y ~ N(X β, Σ).
Y имеет многомерное нормальное распределение со средним X β и ковариацией Σ. Мы хотим максимизировать вероятность Y. Из функции плотности вероятности Y, которая эквивалентна минимизации
S = (Y - X β)T Σ-1 (Y - X β).
Решение
β^ = (XT Σ-1 X)-1 XT Σ-1< /sup> Ю.
И
Cov(β^) = (XT Σ-1 X)-1.
Приведенные выше β^ и Cov(β^) являются возвращаемыми значениями curve_fit
с absolute_sigma=True
.
Относительная сигма
В некоторых случаях вы не знаете точную дисперсию yi, но знаете относительную связь между различными yi, например дисперсию y 2 в 4 раза превышает дисперсию y1. Затем вы можете передать sigma
и установить absolute_sigma=False
.
Этот раз
Y ~ N(X β, Σσ)
с заданной известной матрицей Σ и неизвестным числом σ. Целевая функция, которую нужно минимизировать, такая же, как абсолютная сигма, поскольку σ является константой, и, следовательно, оценщик β^ тот же. Но ковариация
Cov(β^) = (XT Σ-1 X)-1 σ2,
содержит неизвестное σ. Для оценки σ пусть
Q = (Y - X β^)T Σ-1 (Y - X β^).
Опять же, Q / σ2 имеет распределение хи-квадрат с n - p степенями свободы.
Оценка Cov(β^) равна
(XT Σ-1 X)-1Q/(n - p).
И это второе возвращаемое значение curve_fit
с absolute_sigma=False
.
person
Cosyn
schedule
14.11.2020