Доверительный интервал для результата многомерной минимизации / подгонки

У меня есть набор наблюдений [x(t), y(t)], которые я пытаюсь согласовать с определенным предположением: x=Fx(ax, bx, t), y=Fy(ay, by, t). Fx и Fy являются линейными, но шум наблюдений существенно не гауссовский.

Для этого я выполняю минимизацию пользовательской функции F(ax, bx, ay, by, [наблюдения]). Я использую scipy.optimize.minimize и получаю значения параметров ax, bx, ay, которые минимизируют F для данного набора наблюдений.

Вопрос 1: как я могу оценить, скажем, 95% доверительную область для этих результатов, чтобы я мог видеть, насколько неопределенным или надежным является ответ?

Я полагаю, что значения параметров не являются независимыми, поэтому доверительная область может быть не 4-прямоугольной, а, скорее, некоторой каплей в пространстве решений вокруг минимальной точки.

Вопрос 2: если я упросту свое предположение до линейной формы: x = axt + bx, y = ay t + by, с шумом наблюдений, являющимся 2d гауссовским, есть ли в python готовые подпрограммы, чтобы сделать это подгонкой с вычислением доверительного интервала результата?

2 ответа

В общем случае, когда распределение ошибок измерения неизвестно, вы можете использовать метод повторной выборки. Например, возьмите случайным образом 90% ваших измерений и найдите оценки, повторите следующую процедуру 100 раз (или более) с различными случайными подвыборками исходных измерений. Сохраните все полученные оценки в массиве. Теперь вы можете найти 95-процентиль (или что угодно) для каждой оценки. Это будет 95-процентный доверительный интервал оценки.

В случае линейной модели и гауссовского шума я бы предложил поискать пакеты, реализующие фильтр Калмана. Они определенно существуют, например, Пикальман.

Лэмптон, Маргон и Бауэр, 1976, Astrophysical Journal, 208, 177

ссылка на artical на абстрактной службе ADS

Другие вопросы по тегам