Для анализа данных из биофизического эксперимента в настоящее время я пытаюсь выполнить подгонку кривой с помощью высоко нелинейной модели. Функция модели выглядит в основном так:
Здесь, особенно значение представляет большой интерес.
Сюжет для этой функции:
(Обратите внимание, что функция модели основана на подробном математическом описании системы и, кажется, работает очень хорошо - просто автоматические подборы сложны).
Конечно, функция модели проблематична: подходящие стратегии, которые я пробовал до сих пор, терпят неудачу из-за резкой асимптоты при , особенно с зашумленными данными.
Мое понимание проблемы здесь заключается в том, что простая аппроксимация методом наименьших квадратов (я играл как с линейной, так и с нелинейной регрессией в MATLAB; в основном это Левенберг-Марквардт) очень чувствительна к вертикальной асимптоте, потому что небольшие ошибки в x сильно усиливаются ,
Может ли кто-нибудь указать мне подходящую стратегию, которая может обойти это?
У меня есть некоторые базовые знания в области статистики, но они все еще довольно ограничены. Я был бы готов учиться, если бы я только знал, где начать искать :)
Большое спасибо за ваш совет!
Править Прошу прощения за то, что забыл упомянуть об ошибках. Единственный значительный шум в , и он аддитивен.
Изменить 2 Некоторые дополнительные сведения об истории вопроса. График выше моделирует поведение при растяжении полимера. Как отметил @whuber в комментариях, вам нужно чтобы получить график, как показано выше.
Относительно того, как люди подгоняли эту кривую к этому моменту: кажется, что люди обычно обрезают вертикальную асимптоту до тех пор, пока не найдут подходящую форму. Тем не менее, выбор отсечки остается произвольным, что делает процедуру подбора ненадежной и невоспроизводимой.
Редактировать 3 и 4 Фиксированный график.
источник
Ответы:
Методы, которые мы использовали бы для подбора этого вручную (то есть исследовательского анализа данных), могут замечательно работать с такими данными.
Я хочу немного изменить параметры модели , чтобы сделать ее параметры положительными:
Для данного , давайте предположим, что существует единственное действительное удовлетворяющее этому уравнению; назовите это или, для краткости, когда поняты.x f ( y ; a , b ) f ( y ) ( a , b )Y Икс е( у; а , б ) е( у) ( а , б )
Мы наблюдаем набор упорядоченных пар где отклоняются от независимыми случайными переменными с нулевым средним. В этом обсуждении я предполагаю, что все они имеют общую дисперсию, но расширение этих результатов (с использованием взвешенных наименьших квадратов) возможно, очевидно и легко реализуемо. Вот смоделированный пример такого набора из значений с , и общей дисперсией .x i f ( y i ; a , b ) 100 a = 0,0001 b = 0,1 σ 2 = 4(xi,yi) xi f(yi;a,b) 100 a=0.0001 b=0.1 σ2=4
Это (намеренно) жесткий пример, который можно оценить по нефизическим (отрицательным) значениям и их необычайному разбросу (который обычно равен горизонтальным единицам, но может варьироваться до или по оси ). Если мы сможем получить разумное соответствие этим данным, которое приблизится к оценке используемых , и , мы действительно преуспеем.± 2 5 6 x a b σ 2x ±2 5 6 x a b σ2
Поисковая примерка носит итеративный характер. Каждая стадия состоит из двух этапов: оценки (на основе данных , и предыдущих оценки и из и , из которого предыдущих предсказанных значений может быть получены для ), а затем оценить . Поскольку ошибки в x , подгонки оценивают по , а не наоборот. К первому порядку ошибок по , когда достаточно большой,б в б х я х я б х I ( у я ) х хa a^ b^ a b x^i xi b xi (yi) x x
Поэтому мы можем обновить , подгоняя эту модель наименьшими квадратами (обратите внимание, что она имеет только один параметр - наклон, - и не перехватывая) и принимая обратную величину коэффициента в качестве обновленной оценки .a^ a a
Затем, когда достаточно мало, обратный квадратичный член доминирует, и мы находим (снова в первом порядке по ошибкам), чтоx
Еще раз, используя метод наименьших квадратов (только с углом наклона ), мы получаем обновленную оценку через корень квадратный из подогнанного наклона.бb b^
Чтобы понять, почему это работает, грубая исследовательская аппроксимация этой подгонки может быть получена путем построения графика против для меньшего . Еще лучше, потому что измеряются с ошибкой, а монотонно изменяется с , мы должны сосредоточиться на данных с большими значениями . Вот пример из нашего смоделированного набора данных, показывающий наибольшую половину красным, наименьшую половину синим и линию через начало координат, подходящую к красным точкам. 1 / y 2 i x i x i y i x i 1 / y 2 i y ixi 1/y2i xi xi yi xi 1/y2i yi
Точки приблизительно совпадают, хотя при малых значениях и наблюдается небольшая кривизна . (Обратите внимание на выбор осей: поскольку является измерением, условно нанести его на вертикальную ось.) Сосредоточив посадку на красных точках, где кривизна должна быть минимальной, мы должны получить разумную оценку . Значение указанное в заголовке, является квадратным корнем наклона этой линии: это только на % меньше истинного значения!у х б 0,096 4x y x b 0.096 4
На данный момент прогнозируемые значения могут быть обновлены с помощью
Повторяйте до тех пор, пока оценки не стабилизируются (что не гарантируется) или пока они не пройдут через небольшие диапазоны значений (которые по-прежнему не могут быть гарантированы).
Оказывается, что трудно оценить, если у нас нет хорошего набора очень больших значений , но который определяет вертикальную асимптоту в исходном графике (в вопросе) и является предметом вопроса - может быть точно определено, если в вертикальной асимптоте есть некоторые данные. В нашем рабочем примере итерации сходятся к (что почти вдвое больше правильного значения ) и (что близко к правильному значению ). Этот график еще раз показывает данные, на которые накладываются (а) истинныех б = 0.000196 0.0001 б = 0,1073 0,1a x b a^=0.000196 0.0001 b^=0.1073 0.1 кривая серым цветом (пунктирная) и (b) расчетная кривая красным цветом (сплошная):
Эта подгонка настолько хороша, что трудно отличить истинную кривую от подгоночной кривой: они перекрываются почти везде. Кстати, оценочная дисперсия ошибки очень близка к истинному значению .43.73 4
Есть некоторые проблемы с этим подходом:
Оценки предвзяты. Смещение становится очевидным, когда набор данных небольшой, и относительно немного значений находятся близко к оси x. Подгонка систематически немного низкая.
Процедура оценки требует, чтобы метод отличал "большие" от "маленьких" значений . Я мог бы предложить исследовательские способы определения оптимальных определений, но на практике вы можете оставить их как «настраивающие» константы и изменить их, чтобы проверить чувствительность результатов. Я установил их произвольно, разделив данные на три равные группы в соответствии со значением и используя две внешние группы.у яyi yi
Процедура не будет работать для всех возможных комбинаций и или всех возможных диапазонов данных. Однако он должен работать хорошо, когда в наборе данных представлено достаточно кривой, чтобы отразить обе асимптоты: вертикальную на одном конце и наклонную на другом конце.бa b
Код
Следующее написано в Mathematica .
Примените это к данным (заданным параллельными векторамиa=b=0
x
иy
сформированными в матрицу из двух столбцовdata = {x,y}
) до сходимости, начиная с оценок :источник
Смотрите важные вопросы @probabilityislogic опубликовал
Если у вас есть только ошибки в y, и они аддитивны, и у вас постоянная дисперсия (т.е. ваши предположения соответствуют тому, что звучит так, как вы это делали), то если вы позволите , вы, возможно, попытаетесь взвешенная линейная аппроксимация на , где веса будут пропорциональны ... (и да, это может просто сдвинуть проблему, так что может все еще быть проблематичным - но вы должны, по крайней мере, легче упорядочить с этим преобразованием проблемы).y∗=yx−−√ y∗ x∗=x3/2 1/x
Обратите внимание, что с этой манипуляцией ваш становится перехватом нового уравненияb
Если ваши отклонения уже не постоянны, или ваши ошибки не являются аддитивными, или у вас есть ошибки в , это изменит вещи.x
-
Изменить, чтобы рассмотреть дополнительную информацию:
Мы добрались до модели вида:y∗=b+ax∗
Теперь у нас есть ошибки в х и аддитивные. Мы до сих пор не знаем, является ли дисперсия постоянной в этом масштабе.
Перепишите какx∗=y∗/a−b/a=my∗+c
Пусть , где этот термин ошибки может быть гетероскедастичным (если исходный имеет постоянный разброс, он будет гетероскедастичным, но известной формы)x∗o=x∗+η x
(где в означает «наблюдаемый»)o x∗o
Тогда где выглядит хорошо, но теперь имеет коррелированные ошибки в переменных и ; так что это линейная модель ошибок в переменных, с гетероскедастичностью и известной формой зависимости в ошибках.x∗o=c+my∗+ϵ ϵ=−ζ x y
Я не уверен, что это улучшает ситуацию! Я считаю, что есть методы для такого рода вещей, но это не совсем моя сфера.
В комментариях я упомянул, что вы можете посмотреть на обратную регрессию, но конкретная форма вашей функции может помешать продвинуться дальше.
Возможно, вы даже застряли с попыткой использовать методы, устойчивые к ошибкам в этой линейной форме.
-
Теперь огромный вопрос: если ошибки в х , как, черт возьми, вы подходите нелинейной модели? Вы просто слепо минимизировали сумму квадратов ошибок по ? Это может быть вашей проблемой.y
Я полагаю, что можно попытаться переписать исходную вещь как модель с ошибками в и попытаться оптимизировать подгонку, но я не уверен, что вижу, как правильно это настроить.x
источник
После еще нескольких недель экспериментов, в данном конкретном случае лучше всего работает другая техника: подгонка Total Least Squares . Это вариант обычной (нелинейной) подгонки наименьших квадратов, но вместо измерения ошибок подгонки только по одной из осей (что вызывает проблемы в сильно нелинейных случаях, таких как эта), он учитывает обе оси.
Существует множество статей, учебных пособий и книг по этому вопросу, хотя нелинейный случай более неуловим. Есть даже некоторый доступный код MATLAB .
источник