Линейная регрессия, с ограничениями - PullRequest
2 голосов
/ 20 сентября 2011

У меня есть набор точек (x, y), где каждый y имеет диапазон ошибок от y.low до y.high. Предположим, что подходит линейная регрессия (в некоторых случаях данные могли первоначально следовать степенному закону, но были преобразованы [log, log] в линейные).

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

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

Ответы [ 2 ]

2 голосов
/ 20 сентября 2011

Ограниченная проблема, как указано, может иметь как другой перехват, так и другой наклон по сравнению с неограниченной проблемой.

Рассмотрим следующий пример (сплошная линия показывает соответствие OLS): least squares

Теперь, если вы представляете себе очень узкие [y.low; y.high] границы вокруг первых двух точек и чрезвычайно свободные границы для последней. Ограниченная подгонка будет близка к пунктирной линии. Ясно, что эти два подгонки имеют разные наклоны и разные точки пересечения.

Ваша задача - это, по сути, наименьшие квадраты с линейными ограничениями неравенства. Соответствующие алгоритмы рассматриваются, например, в "Решение наименьших квадратов" Чарльзом Л. Лоусоном и Ричардом Дж. Хансоном.

Вот прямая ссылка на соответствующую главу (надеюсь, ссылка работает). Ваша проблема может быть легко преобразована в Проблемную БИС (умножив ваши ограничения y.high на -1).

Что касается кодирования, я бы посоветовал взглянуть на LAPACK: там уже может быть функция, которая решает эту проблему (я не проверял).

0 голосов
/ 14 ноября 2011

Я знаю, что в MATLAB есть библиотека оптимизации, которая может выполнять ограниченное SQP (последовательное квадратичное программирование), а также множество других методов для решения задач квадратичной минимизации с ограничениями неравенства. Функция стоимости, которую вы хотите минимизировать, будет суммой квадратов ошибок между вашей подгонкой и данными. Ограничения те, что вы упомянули. Я уверен, что есть бесплатные библиотеки, которые делают то же самое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...