Стратегія пристосування високолінійної функції


12

Для аналізу даних експерименту з біофізики я в даний час намагаюся зробити підгонку кривої з дуже нелінійною моделлю. Функція моделі в основному виглядає так:

y=ax+bx1/2

Тут особливо велике значення викликає значення .b

Сюжет для цієї функції:

Сюжет функції

(Зауважте, що модель моделі заснована на ретельному математичному описі системи, і, здається, працює дуже добре --- просто автоматичні пристосування складні).

Звичайно, функціонування моделі є проблематичним: відповідні стратегії, які я намагався до цього часу, провалюються через різку асимптоту при x=0 , особливо з галасливими даними.

Моє розуміння проблеми тут полягає в тому, що прості розміщення найменших квадратів (я грав з лінійною та нелінійною регресією в MATLAB; в основному Левенберг-Маркард) дуже чутливий до вертикальної асимптотики, оскільки невеликі помилки в x сильно посилюються .

Чи може хтось вказати мені на придатну стратегію, яка могла б обходити це?

У мене є основні знання статистики, але це все ще досить обмежено. Я хотів би дізнатися, якби тільки я знав, з чого почати шукати :)

Дуже дякую за пораду!

Редагуйте Попросивши пробачення, забувши згадати про помилки. Єдиний суттєвий шум - в , і це добавка.x

Редагувати 2 Деякі додаткові відомості про основу цього питання. На графіку вище моделюється поведінка полімеру на розтягнення. Як @whuber зазначив у коментарях, вам потрібно щоб отримати такий графік, як вище.b200a

Щодо того, як люди підганяли цю криву до цього моменту: здається, що люди взагалі відсікають вертикальну асимптоту, поки не знайдуть належного пристосування. Вибір вибору все ще є довільним, однак робить процедуру пристосування ненадійною та невідтворюваною.

Редагування 3 та 4 Виправлений графік.


3
Чи бувають помилки в або в або в обох? У якій формі ви очікуєте надходження шуму (мультиплікативний, добавний тощо)? уxy
ймовірністьлогічний

2
@onnodb: Моє занепокоєння, чи може це не принципово поставити під сумнів, наскільки надійна ваша модель? Незалежно від того , яких установок використовуваної стратегії не буде залишається вельми чутливим? Чи можете ви коли-небудь мати високу впевненість у такій оцінці для ? bbb
curious_cat

1
На жаль, це все одно не буде працювати. Просто немає можливих комбінацій і які навіть якісно відтворюють накреслений вами графік. (Очевидно, що є від'ємним. має бути меншим за найменший нахил у графіку, але позитивним, що ставить його у вузький проміжок. Але коли знаходиться в цьому інтервалі, він просто не є достатньо великим, щоб подолати величезний негативний сплеск на походження, запроваджене терміном .) Що ви намалювали? Дані? Якась інша функція? Ь Ь Ь х 1 / 2abbaabx1/2
whuber

1
Дякую, але це все-таки неправильно. Розширивши дотичну до цього графіка назад від будь-якої точки де , ви перехопите вісь y у . Оскільки спадний спай при показує, що є негативним, цей y-перехоплення також повинен бути негативним. Але на вашій фігурі цілком зрозуміло, що більшість таких перехоплювачів є позитивними і становлять . Таким чином , математично неможливо, що рівняння на зразок може описати вашу криву , навіть не приблизно. Як мінімум вам потрібно помістити щось на зразок .х > 0 ( 0 , 3 б / ( 2 х 1 / 2 ) ) 0 б 15,5 у = х + Ь х 1 / 2 у = х + Ь х 1 / 2 + c(x,ax+bx1/2)x>0(0,3b/(2x1/2))0b15.5y=ax+bx1/2y=ax+bx1/2+c
whuber

1
Перш ніж я робив якусь роботу над цим, я хотів переконатися в постановці питання: саме тому важливо правильно виправити функцію. Зараз я не встиг дати повної відповіді, але хотів би зазначити, що "інші люди" можуть помилятися - але це залежить від ще більше деталей, на жаль. Якщо ваша помилка по-справжньому адитивна , мені здається, вона все ще повинна бути гетероскедастичною, інакше її відхилення при малих значеннях було б справді крихітним. Що ви можете нам сказати - кількісно - про цю помилку? хxx
whuber

Відповіді:


10

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

Я хотів би трохи перемолодити модель , щоб зробити її параметри позитивними:

y=axb/x.

Для даного припустимо, що існує унікальна реальна задовольняє це рівняння; називаємо це або, для стислості, коли розуміються.x f ( y ; a , b ) f ( y ) ( a , b )yxf(y;a,b)f(y)(a,b)

Ми спостерігаємо колекцію упорядкованих пар де відхиляється від незалежними випадковими величинами з нульовими значеннями. У цій дискусії я припускаю, що всі вони мають загальну дисперсію, але розширення цих результатів (з використанням найменш зважених квадратів) можливо, очевидно і легко здійснити. Ось модельований приклад такої колекції з значень з , та загальною дисперсією .(xi,yi)xif(yi;a,b)100a=0.0001b=0.1σ2=4

Діаграм даних

Це (навмисно) важкий приклад, як це можна оцінити за нефізичними (негативними) значеннями та їх надзвичайним поширенням (що, як правило, горизонтальних одиниці, але може становити до або на осі ). Якщо ми зможемо отримати обґрунтовану відповідність цим даним, які наближаються до оцінки використовуваних , та , ми дійсно зробили б добре.x±2 56xabσ2

Дослідницька штукатура є ітеративною. Кожна стадія складається з двох етапів: оцінки (на основі даних , і попередніх оцінки і з і , з якого попередніх передбачених значень може бути отримані для ), а потім оцінюємо . Оскільки помилки знаходяться в x , пристосування оцінюють з , а не навпаки. Перший порядок помилок у , коли досить великий,aa^b^abx^ixibxi(yi)xx

xi1a(yi+b^x^i).

Таким чином, ми можемо оновити , встановивши цю модель з найменшими квадратами (зауважте, що у неї є лише один параметр - нахил, - і немає перехрестя) та приймаючи зворотний коефіцієнт як оновлену оцінку .a^aa

Далі, коли достатньо малий, обернений квадратичний доданок домінує, і ми виявляємо (знову ж таки, в першому порядку помилки), щоx

xib212a^b^x^3/2yi2.

Знову використовуючи найменші квадрати (з просто нахилом ), ми отримуємо оновлену оцінку через квадратний корінь встановленого схилу.бbb^

Щоб зрозуміти, чому це працює, грубе дослідницьке наближення до цього пристосування можна отримати, побудувавши проти для меншого . А ще краще, оскільки вимірюються помилково, а монотонно змінюється з , ми повинні зосередитись на даних із більшими значеннями . Ось приклад з нашого модельованого набору даних, що показує найбільшу половину червоного кольору, найменшу половину синього кольору та лінію через початок, що підходить до червоних точок. 1 / y 2 i x i x i y i x i 1 / y 2 i y ixi1/yi2xixiyixi1/yi2yi

Малюнок

Точки приблизно вирівнюються, хоча при малих значеннях і є трохи кривизни . (Зверніть увагу на вибір осей: оскільки - це вимірювання, звичайно побудувати його на вертикальній осі.) Сфокусувавши прилягання до червоних точок, де кривизна повинна бути мінімальною, нам слід отримати розумну оцінку . Значення вказане в заголовку, є квадратним коренем нахилу цього рядка: це лише на % менше, ніж справжнє значення!xyxb0.0964

У цей момент передбачувані значення можуть бути оновлені через

x^i=f(yi;a^,b^).

Повторіть, поки або оцінки не стабілізуються (що не гарантується), або вони перейдуть через невеликі діапазони значень (які все ще не можуть бути гарантовані).

Виявляється, що важко оцінити, якщо у нас є гарний набір дуже великих значень , але визначає вертикальну асимптоту в початковому сюжеті (у питанні) і є фокусом питання-- можна зафіксувати досить точно за умови наявності деяких даних у вертикальній асимптоті. У нашому запущеному прикладі ітерації збігаються до (що майже вдвічі більше правильного значення ) та (що близько до правильного значення ). Цей сюжет ще раз показує дані, на які накладається (а) правдаaxba^=0.0001960.0001b^=0.10730.1крива сірого кольору (пунктирна) та (b) розрахункова крива червоного кольору (суцільне):

Підходить

Це пристосування настільки добре, що важко відрізнити справжню криву від приталеної кривої: вони перетинаються майже скрізь. Між іншим, розрахункова дисперсія помилок у дуже близька до справжнього значення .3.734

У цьому підході є деякі проблеми:

  • Оцінки упереджені. Зміщення стає очевидним, коли набір даних невеликий і порівняно мало значень близькі до осі x. Підхід систематично трохи низький.

  • Процедура оцінювання вимагає методу визначення "великих" від "малих" значень . Я міг би запропонувати дослідницькі способи визначення оптимальних визначень, але в якості практичного питання ви можете залишити їх як "настроювання" констант і змінити їх, щоб перевірити чутливість результатів. Я встановив їх довільно, розділивши дані на три рівні групи відповідно до значення та використовуючи дві зовнішні групи.yiyi

  • Процедура не буде працювати для всіх можливих комбінацій і або всіх можливих діапазонів даних. Однак, він повинен добре працювати, коли достатньо кривої представлено в наборі даних, щоб відображати обидва асимптоти: вертикальну в одному кінці та похилу на іншому кінці.ab


Код

Далі написано в Mathematica .

estimate[{a_, b_, xHat_}, {x_, y_}] := 
  Module[{n = Length[x], k0, k1, yLarge, xLarge, xHatLarge, ySmall, 
    xSmall, xHatSmall, a1, b1, xHat1, u, fr},
   fr[y_, {a_, b_}] := Root[-b^2 + y^2 #1 - 2 a y #1^2 + a^2 #1^3 &, 1];
   k0 = Floor[1 n/3]; k1 = Ceiling[2 n/3];(* The tuning constants *)
   yLarge = y[[k1 + 1 ;;]]; xLarge = x[[k1 + 1 ;;]]; xHatLarge = xHat[[k1 + 1 ;;]];
   ySmall = y[[;; k0]]; xSmall = x[[;; k0]]; xHatSmall = xHat[[;; k0]];
   a1 = 1/
     Last[LinearModelFit[{yLarge + b/Sqrt[xHatLarge], 
          xLarge}\[Transpose], u, u]["BestFitParameters"]];
   b1 = Sqrt[
     Last[LinearModelFit[{(1 - 2 a1 b  xHatSmall^(3/2)) / ySmall^2, 
          xSmall}\[Transpose], u, u]["BestFitParameters"]]];
   xHat1 = fr[#, {a1, b1}] & /@ y;
   {a1, b1, xHat1}
   ];

Застосуйте це до даних (заданих паралельними векторами xта yсформованих у матрицю з двома стовпцями data = {x,y}) до зближення, починаючи з оцінок :a=b=0

{a, b, xHat} = NestWhile[estimate[##, data] &, {0, 0, data[[1]]}, 
                Norm[Most[#1] - Most[#2]] >= 0.001 &,  2, 100]

3
Це дивовижна відповідь; Я дуже зобов'язаний! Я грав із цим, і результати виглядають дуже перспективно. Мені знадобиться трохи більше часу, щоб повністю зрозуміти міркування :) Також: чи можу я зв’язатися з вами через ваш веб-сайт для одного додаткового (приватного) питання стосовно підтверджень?
onnodb

3

Дивіться важливі питання @probabilityislogic розміщені

Якщо у вас є лише помилки у, і вони є адитивними, і у вас постійні розбіжності (тобто ваші припущення відповідають тому, що це звучить так, як ви робили), то якщо ви дозволите , ви можете, можливо, спробувати зважене лінійне прилягання на , де ваги будуть пропорційні ... (і так, це може просто змістити проблему навколо, так що все ще може бути проблематичним - але вам потрібно принаймні легше регуляризувати цю трансформацію проблеми).y=yxyx=x3/21/x

Зауважте, що при цій маніпуляції ваш стає перехопленням нового рівнянняb

Якщо ваші відхилення вже не є постійними або ваші помилки не є адекватними або у вас є помилки в , це змінить ситуацію.x

-

Змініть, щоб врахувати додаткову інформацію:

Ми дійшли до моделі форми:y=b+ax

Тепер ми маємо, що помилки є у х та адитиві. Ми досі не знаємо, чи є дисперсія постійною у цій шкалі.

Перепишіть якx=y/ab/a=my+c

Нехай , де цей термін помилки може бути гетероскедастичним (якщо вихідний має постійне поширення, він буде гетерокедастичним, але відомої форми)xo=x+ηx

(де в означає «спостерігається»)oxo

Тоді де виглядає добре, але тепер має корельовані помилки у змінних та ; тож це лінійна модель помилок у змінних, що має гетерокедастичність та відому форму залежності від помилок. xo=c+my+ϵϵ=ζxy

Я не впевнений, що покращує речі! Я вважаю, що є подібні методи, але це зовсім не моя область.

Я згадував у коментарях, що ви, можливо, хочете подивитися на зворотну регресію, але конкретна форма вашої функції може перешкоджати далеко до цього.

Можливо, ви навіть застрягли б у спробі досить надійних методів помилок у x в цій лінійній формі.

-

Тепер величезне запитання: якщо помилки є в x , то, як чорт, ви підходили до нелінійної моделі? Були чи ви просто сліпо мінімізації суми квадратів помилок в ? Це може бути вашою проблемою.y

Я припускаю, що можна спробувати переписати оригінальну річ як модель із помилками в та спробувати оптимізувати придатність, але я не впевнений, що бачу, як правильно це налаштувати.x


Дякую! Це цікава трансформація, не думала про це --- хоча помилки в , я все одно з цим пограю! x
onnodb

2
" навіть незважаючи на те, що помилки є у х ", - це важливо. Ви можете перевірити наявність зворотної регресії.
Glen_b -Встановити Моніку

3
... або ви могли безпосередньо підходити до моделі :-). x=13(2ya+21/3y2(27a4b22a3y3+3327a8b44a7b2y3)1/3+(27a4b22a3y3+3327a8b44a7b2y3)1/321/3a2)
whuber

@whuber Хм. Вирішення для кубічного, розумне. Якщо ми пишемо оригінал в терміні де є , це залишило б нам (знову ж таки з ), що принаймні умовно можна зробити з нелінійними найменшими квадратами. Так виглядає, що він належним чином переймається поширенням помилок. Насправді це може спрацювати, якщо ОП використовував лінійну форму, з якою я грав (використовуючи деякі надійні оцінки помилок в IV-і-гетеро), щоб отримати хороші початкові значення параметрів, а потім спробувати використовувати ця нелінійна форма ЛС для її шліфування. x o x + ζ x = ( t h a txoxox+ζx=(thatmonster)+ϵϵ=ζ
Glen_b -Встановіть Моніку

Я вважаю, що лінеаризація функції та (за іронією долі) із застосуванням нелінійних (зважених) найменших квадратів спрацювала б, особливо якби дані обмежувались відносно малими значеннями де крива в першу чергу визначається . y bx(y)yb
whuber

0

Після ще декількох тижнів експериментів, інша техніка, здається, найкраще працює в даному конкретному випадку: Загальна кількість найменших квадратів . Це варіант звичайної (нелінійної) підгонки найменших квадратів, але замість вимірювання помилок придатності вздовж лише однієї з осей (що спричиняє проблеми у дуже нелінійних випадках, таких як ця), вона враховує обидві осі.

Існує безліч статей, навчальних посібників та книг, доступних на цю тему, хоча нелінійний випадок є більш невловимим. Існує навіть якийсь код MATLAB .


Дякуємо, що поділилися цим. Я погоджуюсь, що це може призвести до гарних результатів у вашому випадку, але я маю дві проблеми. Перше, що ви згадуєте: як саме можна застосувати загальну мінімальну регресію квадратів / помилок у змінних / ортогональну регресію / регресію Демінга до нелінійних припадків? Друга полягає в тому, що такий підхід не здається підходящим для ваших даних, в якому вимірюється по суті без помилок. Якщо це так, ви не повинні допускати залишків змінної і це повинно створювати ненадійні, необ'єктивні результати. yyy
whuber

@whuber Дякуємо, що висловили свої занепокоєння! Зараз я все ще працюю над запуском симуляцій, щоб дослідити надійність пристосування TLS до цієї проблеми. Однак, що я бачив поки що, розгляд TLS обох змінних значно допомагає подолати високу нелінійність моделі. Набори модельованих даних надійні і дуже добре сходяться. Потрібно зробити більше роботи, і, безумовно, доведеться скласти ваш метод до цього, як тільки ми матимемо більше фактичних даних --- і детально розглянемо ваші проблеми.
onnodb

Гаразд - не забувайте, у мене є порівнянні проблеми щодо запропонованого нами методу!
whuber
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.