Візуальна лінійна апроксимація за допомогою Gnuplot
Кажуть, що нелінійна апроксимація - це мистецтво, але і зі звичайною лінійною справа, буває, йде не просто.
Багато хто, напевно, пам'ятає, що найпростіший і досить точний метод побудови прямих МНК - це «прозорою лінійкою на око». Раніше, коли рахували на калькуляторах, цей метод дозволяв економити багато годин монотонних обчислень, але зараз для свідомо лінійних процесів це вже не актуально, апроксимацію вміє миттєво рахувати і малювати навіть Excel.
Однак при вирішенні реальних завдань часто доводиться мати справу з процесами, у яких модель невідома. У таких випадках буває розумно будувати шматочно-лінійні апроксимації. І ось тут, коли точних критеріїв побудови просто не існує - метод «прозорої лінійки», заснований на «мистецтві апроксимації» (по простому - чуйці), знову стає актуальним.
Роздруковувати графіки і проводити на них прямі олівцем і прозорою лінійкою - і далі працює (і іноді так креслити навіть цікаво). А тут ми будемо використовувати Gnuplot - він добре вміє малювати дані в різних уявленнях, вміє вважати апроксимації, і при цьому залишає користувачеві достатньо простору для маневру.
Як приклад «життєвих» даних з невідомою моделлю розглянемо динаміку за часом індексу маси тіла (BMI) дівчат місяця журналу Playboy. Завдання полягає в тому, щоб вловити в динаміці загальні тенденції.
Вихідні дані взято зі статті Вадима Маркова (@ BubaVV) «» Кореляції для початківців «». Посилання на файли для побудови картинок у Gnuplot буде дано нижче. Невелике зауваження за даними: за змістом даних по осі X відкладається час (місяці), але щоб не ускладнювати завдання будемо використовувати не час, а просто порядковий номер запису.
Почнемо з того, що побудуємо безліч наявних точок і проведемо лінійний тренд по всіх точках. Відразу відзначимо проблемні області питальним знаком.
З лінійною апроксимацією явно щось не в порядку, схоже, що в процесі тренд змінювався. Побудуємо квадратичну апроксимацію, яка дозволяє зловити зміну кута нахилу прямих ліній.
Квадратична апроксимація виглядає краще (ну ще б пак, плюс один параметр). Видно, що лінійний тренд змінюється в середині безлічі, відзначимо цю область кольоровим колом. Ліворуч від кола - один характер динаміки, праворуч - інший, для кращого сприйняття праву і ліву області також відзначимо різними кольорами.
Точки в лівій області будемо апроксимувати однією прямою, а в правій іншій. Заодно і по осі Х замість абстрактних цифр поставимо мітки часу, нам не потрібно багато подробиць, відзначимо кілька років.
Тепер, принаймні на вигляд, апроксимація прямими досить хороша, значення параметрів ліній можна взяти з log-файлу, який пише Gnuplot в процесі апроксимації.
Резюме. Нічого не обчислюючи, а тільки роздивляючись графіки і малюючи лінії, ми визначили основні тренди динаміки моделі. До речі, цікаво, що сталося в районі 1985 року, що в моду стали входити дівчата з більш високим BMI?
Всі дані та файли для побудови картинок у Gnuplot можна завантажити за посиланням: drive.google.com/file/d/0BwHQSqFOG-7lU1BfbkdqTTFxdkU/view?usp=sharing
PPS. Заради інтересу - так виглядатиме апроксимація поліномом 4-го ступеня. Судячи з графіка, має сенс подивитися, чи не з'являється знову в моді тенденція на більш худих моделей.
