Методи, які ми б використали для вручення цього вручну (тобто дослідницького аналізу даних), можуть надзвичайно добре працювати з такими даними.
Я хотів би трохи перемолодити модель , щоб зробити її параметри позитивними:
y=ax−b/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
xi≈1a(yi+b^x^i−−√).
Таким чином, ми можемо оновити , встановивши цю модель з найменшими квадратами (зауважте, що у неї є лише один параметр - нахил, - і немає перехрестя) та приймаючи зворотний коефіцієнт як оновлену оцінку .a^aa
Далі, коли достатньо малий, обернений квадратичний доданок домінує, і ми виявляємо (знову ж таки, в першому порядку помилки), щоx
xi≈b21−2a^b^x^3/2y2i.
Знову використовуючи найменші квадрати (з просто нахилом ), ми отримуємо оновлену оцінку через квадратний корінь встановленого схилу.бbb^
Щоб зрозуміти, чому це працює, грубе дослідницьке наближення до цього пристосування можна отримати, побудувавши проти для меншого . А ще краще, оскільки вимірюються помилково, а монотонно змінюється з , ми повинні зосередитись на даних із більшими значеннями . Ось приклад з нашого модельованого набору даних, що показує найбільшу половину червоного кольору, найменшу половину синього кольору та лінію через початок, що підходить до червоних точок. 1 / y 2 i x i x i y i x i 1 / y 2 i y ixi1/y2ixixiyixi1/y2iyi
Точки приблизно вирівнюються, хоча при малих значеннях і є трохи кривизни . (Зверніть увагу на вибір осей: оскільки - це вимірювання, звичайно побудувати його на вертикальній осі.) Сфокусувавши прилягання до червоних точок, де кривизна повинна бути мінімальною, нам слід отримати розумну оцінку . Значення вказане в заголовку, є квадратним коренем нахилу цього рядка: це лише на % менше, ніж справжнє значення!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]