# 4. Домашнє завдання (написання програми) > **Джерело завдання.** Формулювання взято **з методичних матеріалів курсу**. > Готового коду тут **немає** — це індивідуальне завдання; техніку обчислень > показано на інших даних у [2method.md](2method.md) та [3classroom.md](3classroom.md). ## Постановка Написати додаток, який отримує вибірку впорядкованих пар (кожна пара — на новому рядку). Перевірити, чи існує кореляція між значеннями пар, побудувати графік лінійної регресії та коефіцієнт детермінації $R^2$ для знайденої регресії. **Мову додатку студент обирає самостійно.** ## Вхід і вихід - **Вхід:** текстовий файл (або стандартний ввід) із вибіркою **впорядкованих пар** $(x, y)$ — кожна пара на окремому рядку, значення розділені пробілом, комою або табуляцією (напр., `15 20`). Кількість пар довільна. - **Вихід:** щонайменше — коефіцієнт кореляції $r$, рівняння регресії $\hat{y} = b_0 + b_1 x$ та коефіцієнт детермінації $R^2$; для середнього й високого рівнів — **графік** (діаграма розсіювання з накладеною прямою регресії). Числа округлюйте розумно (напр., 4 значущі цифри). ## Рівні складності Оцінка відповідає найвищому **повністю й правильно** виконаному рівню. ### Базовий рівень — 60–74 балів 1. Прочитати вибірку пар $(x, y)$ (кожна пара — на новому рядку). 2. Обчислити й вивести: - **коефіцієнт кореляції** $r$; - **рівняння регресії** $\hat{y} = b_0 + b_1 x$ (коефіцієнти $b_0$, $b_1$). 3. Формули ($r$, $b_0$, $b_1$) реалізувати **самостійно** через суми $\sum x$, $\sum y$, $\sum xy$, $\sum x^2$, $\sum y^2$ (не викликати готову `polyfit`/`corrcoef` як основне обчислення). ### Середній рівень — 75–89 балів Додатково до базового: 4. Побудувати **графік лінійної регресії**: діаграму розсіювання точок $(x_i, y_i)$ з накладеною прямою $\hat{y} = b_0 + b_1 x$ (напр., засобами `matplotlib`). 5. Обчислити й вивести **коефіцієнт детермінації** $R^2$ через розклад SST $=$ SSR $+$ SSE; перевірити рівність $R^2 = r^2$. 6. Підписати графік (осі, рівняння регресії, значення $R^2$ у легенді чи заголовку). ### Високий рівень — 90–100 балів Додатково до середнього: 7. **Перевірити значущість** кореляції: обчислити статистику $t = r\sqrt{(n-2)/(1-r^2)}$, порівняти з критичним $t_{\alpha/2,\,n-2}$ (або вивести $p$-значення) і зробити висновок, чи відмінна кореляція від нуля. 8. **Інтерпретувати силу зв'язку** словами за шкалою (дуже слабкий / слабкий / помірний / сильний / дуже сильний) та вказати його напрям. 9. Передбачити **перевірку коректності** вводу (порожній файл, рядки з одним числом чи нечисловими значеннями, пропуски, надто мала вибірка $n < 3$) з інформативним повідомленням. ## Що здавати - Вихідний код програми (з коротким `README`: як запустити, який формат входу). - Приклад запуску на **тестовому** файлі та збережений графік. Обов'язково перевірте програму на даних [Задачі 1](3classroom.md) — очікувано $r \approx 0.995$, $\hat{y} = -8.281 + 1.816\,x$, $R^2 \approx 0.990$. - Оформлення звіту — за [5report.md](5report.md); перелік запитань до захисту — у [6questions.md](6questions.md).