4. Домашнє завдання (написання програми)
Джерело завдання. Завдання доповнює матеріали курсу (у вихідному архіві домашнє завдання для теми 14 відсутнє). Постановку сформульовано природно для теми — читання часового ряду, згладжування, прогноз і графік. Готового коду тут немає — це індивідуальне завдання; техніку обчислень показано на інших даних у 2method.md та 3classroom.md.
Постановка
Реалізувати аналіз часового ряду (мову додатку студент обирає самостійно). Програма читає ряд із файлу CSV (час / значення), згладжує його (ковзним середнім та експоненційним згладжуванням), прогнозує наступні значень і будує графік (сирий ряд, згладжений ряд і прогноз на одному рисунку).
Вхід і вихід
- Вхід: шлях до файлу CSV із часовим рядом — по одному спостереженню на рядок. Припускаємо два стовпці: час/індекс (мітка періоду — дата чи порядковий номер) і значення (число). Крок за часом вважають однаковим. Параметри згладжування (вікно , стала ) і горизонт прогнозу задають ззовні (аргументи командного рядка, параметри або запит).
- Вихід: згладжені ряди та прогноз наступних значень (консоль/файл — на розсуд студента; числа округлюйте розумно, напр. 3–4 значущі цифри), а також графік (файл-зображення чи вікно).
Рівні складності
Оцінка відповідає найвищому повністю й правильно виконаному рівню.
Базовий рівень — 60–74 балів
- Прочитати часовий ряд із файлу CSV (стовпець значень; час/індекс — за наявності).
- Обчислити просте ковзне середнє із заданим вікном (формулу реалізувати самостійно, а не викликати готову функцію як основне обчислення).
- Побудувати графік: сирий ряд і згладжений ряд (ковзне середнє) на одному рисунку з підписами осей та легендою.
Середній рівень — 75–89 балів
Додатково до базового:
- Реалізувати просте експоненційне згладжування із заданою сталою і нанести згладжений ряд на графік поряд із ковзним середнім.
- Побудувати простий прогноз на наступні значень (щонайменше один метод: наївний, за ковзним середнім або за експоненційним згладжуванням) і показати прогноз на графіку (напр., пунктиром, як продовження ряду).
- Коректно опрацьовувати файл із заголовком і двома стовпцями (час і значення); параметри , , задавати ззовні.
Високий рівень — 90–100 балів
Додатково до середнього (виконати щонайменше один із пунктів 7–8; пункт 9 обов’язковий):
- Оцінити якість прогнозу. Відкласти останню частину ряду (тестову, останніх значень), побудувати прогноз на цю частину за наявними на початку даними та обчислити метрики MAE, RMSE і MAPE; порівняти щонайменше два методи прогнозу (обов’язково — проти наївного еталона).
- Виокремити тренд лінійною регресією на час (метод найменших квадратів, Лекція 5); нанести лінію тренду на графік і використати її для прогнозу наступних значень.
- Передбачити перевірку коректності вводу (порожній файл, нечислові значення, пропуски, некоректні , ) з інформативним повідомленням.
Що здавати
- Вихідний код програми (з коротким
README: як запустити, формат вхідного CSV, як задають , , ). - Приклад запуску на тестовому файлі разом із графіком. Обов’язково перевірте програму на даних аудиторних задач (3classroom.md): за рядом Задачі 1 очікуване ковзне середнє () — ; за рядом Задачі 2 експоненційне згладжування з дає .
- Оформлення звіту — за 5report.md; перелік запитань до захисту — у 6questions.md.