Я згоден з Glen_b. У проблемах регресії основна увага приділяється параметрам, а не незалежній змінній чи прогноктору, x. І тоді можна вирішити, чи хочеться лінеаризувати проблему, використовуючи прості перетворення, або продовжувати її як таку.
Лінійні задачі: підрахувати кількість параметрів у вашій проблемі і перевірити , чи всі з них мають силу 1. Так , наприклад, . Ця функція нелінійна в x . Але для проблем з регресією нелінійність у x не є проблемою. Треба перевірити, чи є параметри лінійними чи лінійними. У цьому випадку a , b , cy=ax+bx2+cx3+dx2/3+e/x+fx−4/7xxabc, .. всі мають потужність 1. Отже, вони лінійні.f
Зауважте, що у , хоч виглядає, що він має потужність 1, але при розширенні
exp ( a x ) = 1 + a x / 1 ! + ( Х ) +2 / +2 ! + … . Ви можете чітко бачити, що це нелінійний параметр, оскільки a має потужність більше 1. Але цю проблему можна лінеаризувати, викликаючи логарифмічне перетворення. Тобто нелінійна проблема регресії перетворюється на задачу лінійної регресії.y=exp(ax)exp(ax)=1+ax/1!+(ax)2/2!+…
Аналогічно, - це логістична функція. Вона має три параметри, а саме a , b і c . Параметри b і c мають потужність більше 1, а при розширенні вони помножуються з кожним інші, що приносять нелінійність. Отже, вони не є лінійними, але вони також можуть бути лінеаризовані за допомогою правильної підстановки, встановивши спочатку ( a / y ) - 1 = Y, а потім викликаючи логарифмічну функцію з обох сторін для лінеаризації.y=a/(1+bexp(cx)abcбc( a/y) - 1 = Y
Тепер припустимо, що . Це ще раз нелінійно щодо параметрів. Але це не може бути лінеаризовано. Потрібно використовувати нелінійну регресію.у= а1/ (1+ б1досвід( c1х ) ) + а2/ (1+ б2досвід( c2х ) )
В принципі, використання лінійної стратегії для вирішення проблеми нелінійної регресії не є хорошою ідеєю. Отже, вирішуйте лінійні задачі (коли всі параметри мають потужність 1) за допомогою лінійної регресії та приймайте нелінійну регресію, якщо ваші параметри нелінійні.
β0β1θ1θ2
Прийміть нелінійну техніку найменших квадратів для її вирішення. Вибирайте початкові значення розумно та використовуйте багатостартовий підхід для пошуку глобальних мінімумів.
Це відео буде корисним (хоча воно не говорить про глобальне рішення): http://www.youtube.com/watch?v=3Fd4ukzkxps
Використання GRG нелінійного розв'язувача в електронній таблиці Excel (встановіть пакет інструментів solver, перейшовши в параметри - Add-Ins - Excel Add-Ins, а потім виберіть Solver Add-In) та виклик мультистарту в списку параметрів, призначаючи інтервали до параметрів та вимагаючи точність обмеження та невелика конвергенція можуть отримати глобальне рішення.
Якщо ви використовуєте Matlab, використовуйте панель інструментів глобальної оптимізації. Він має багатостартові та глобальні варіанти пошуку. Деякі коди доступні тут для глобального рішення, тут
і
тут .
Якщо ви використовуєте Mathematica, подивіться тут .
Якщо ви використовуєте R, спробуйте тут .