# Домашнє завдання · Розвідка даних (EDA)

> Лекція: [lecture.html](lecture.html) · Практика: [practice.ipynb](practice.ipynb) · Тест: [quiz.html](quiz.html)

Усі три рівні робляться на **одній таблиці** — тій самій дошці оголошень із практики.
Скопіюй перші три клітинки зошита (побудова таблиці) в новий файл і працюй далі там.

Головне правило домашнього завдання те саме, що й теми: **нічого не виправляй**.
Розвідка не чинить дані — вона вирішує, що саме доведеться чинити.

---

## 🟢 Рівень 1 — База

Пройди повну розвідку по стовпцю **`вік_акаунта`** — так само, як у лекції її пройшли
по ціні.

Що зробити:

1. `describe()` і три пари, які в ньому читають: `count` проти кількості рядків,
   `min` і `max` проти здорового глузду, `mean` проти `50 %`;
2. гістограму з трьома різними кількостями кошиків (мало / нормально / забагато);
3. середнє й медіану, і частку рядків, менших за середнє;
4. межі за правилом 1.5·IQR і кількість викидів угорі та внизу.

**Зроблено, якщо:** названі чотири числа — середнє, медіана, верхня межа за правилом
1.5·IQR і кількість викидів; побудовано три гістограми; і в тексті є одне речення про
те, **чому** середнє більше за медіану, і одне — про те, чи варто ці викиди прибирати
й чому.

---

## 🟡 Рівень 2 — Плюс

У лекції ми перевірили пропуск у стовпці `стан` **за таргетом** і зробили висновок, що
він випадковий. Це неповна перевірка: пропуск може бути повʼязаний не з таргетом, а з
іншими стовпцями.

Перевір пропуск у `стан` за трьома іншими стовпцями:

* `рік` — чи не забувають вказати стан частіше для старих телефонів;
* `ціна` — чи не зникає стан у дорогих оголошеннях (числовий стовпець розбий на кошики
  через `pd.qcut`, інакше порівнювати нема з чим);
* `модель` — чи немає моделі, у якої стан пропущено помітно частіше.

Для кожного стовпця побудуй ту саму таблицю, що в клітинці 9 практики: частка пропусків
стану окремо в кожній групі.

**Зроблено, якщо:** для всіх трьох стовпців є таблиця з часткою пропусків по групах, і
є висновок словами — випадковий цей пропуск чи ні, з посиланням на конкретні числа
(наприклад: «у найдешевшій десятій частині стан пропущено в X %, у найдорожчій — у Y %,
різниця в межах шуму»).

*Підказка щодо чесності:* на групі з 40 рядків різниця у 5 відсоткових пунктів — це
приблизно два рядки. Перш ніж називати різницю знахідкою, подивись, скільки рядків у
найменшій групі.

---

## 🔴 Рівень 3 — Виклик

Кореляція Пірсона не бачить нелінійного звʼязку — ми переконались у цьому на парі
`ціна → шахрайське`, де кореляція −0.012, а частка шахрайських гуляє від 2.7 % до 42.9 %.

Є проста міра, яка бачить будь-який звʼязок, не лише прямий, — **кореляційне відношення**
(correlation ratio). Ідея: якщо, знаючи кошик за ознакою, ми краще вгадуємо таргет, то
звʼязок є. Формально це частка розкиду таргета, яку пояснює розбиття на кошики:

```
η² = 1 − (середня дисперсія всередині кошиків) / (загальна дисперсія)
```

Що зробити:

1. напиши функцію `кореляційне_відношення(ознака, таргет, кошиків=10)`, яка розбиває
   ознаку на кошики рівної наповненості через `pd.qcut` і рахує формулу вище
   (зважуй внутрішні дисперсії кількістю рядків у кошику);
2. порахуй її для трьох пар: `ціна → шахрайське`, `вік_акаунта → шахрайське`,
   `рік → шахрайське`;
3. поруч для тих самих пар порахуй кореляцію Пірсона й склади таблицю з двох колонок;
4. подивись, як твоя міра поводиться при `кошиків = 2`, `10` і `100`.

**Зроблено, якщо:**

* для пари `ціна → шахрайське` кореляція Пірсона близька до нуля (|r| < 0.05), а
  кореляційне відношення при 10 кошиках помітно більше за нуль;
* складено таблицю «пара → Пірсон → кореляційне відношення» для трьох пар;
* у тексті пояснено, **чому** при `кошиків = 2` міра близька до нуля, а при
  `кошиків = 100` вона зростає для будь-якої ознаки, навіть для чистого шуму — і що з
  цього випливає про вибір кількості кошиків.

---

## Підказки

1. **Перевірка «пропуск випадковий чи ні» — це завжди порівняння двох груп.** Не шукай
   складнішого інструмента: `groupby` плюс `mean` по булевій колонці дає готову частку.

2. **Дисперсію рахуй з одним і тим самим `ddof`** у чисельнику й знаменнику формули
   третього рівня, інакше при малих кошиках вилізе відʼємне значення й буде здаватись,
   що щось зламано.

3. **Якщо кореляційне відношення при 100 кошиках виходить велике для всіх ознак поспіль
   — це не помилка коду.** Подумай, скільки рядків лишається в кошику й що станеться,
   якщо кошиків стане стільки ж, скільки рядків.
