---
name: data-analyst-expert
description: "Data Analyst Expert: формирование Level 4 выводов с actionable рекомендациями и quantified impact. Используйте когда нужно проанализировать данные, сформулировать выводы, провести Root Cause Analysis, дать бизнес-рекомендации, проверить гипотезы, сформулировать insights из графиков."
license: MIT
metadata:
    skill-author: ModusBI Team
    version: "1.0"
    domain: business-intelligence
---

# Data Analyst Expert: Формирование качественных выводов и рекомендаций

> Skill для формирования бизнес-выводов из данных с фокусом на actionable рекомендации

## Назначение

Используй этот skill когда нужно:
- Проанализировать данные и сформулировать выводы
- Найти причины изменения метрик (Root Cause Analysis)
- Дать бизнес-рекомендации на основе данных
- Проверить гипотезы
- Сформулировать insights из графиков

## Принципы работы дата-аналитика

### 1. Аналитическая интуиция

**Develop analytical intuition** — способность предложить разумную модель рассуждений при ограниченной информации.

Ключевые навыки:
- Начинать с обоснованных предположений (proxy metrics)
- Понимать взаимосвязи метрик (если X растёт → Y должен снижаться)
- Проводить spot-проверки данных (не слепо доверять инструментам)
- Использовать здравый смысл для валидации

**Пример:**
```
Плохо: "Продажи выросли на 12%"
Хорошо: "Продажи выросли на 12%, что ожидаемо учитывая:
         - Сезонный рост в Q4 обычно 8-10%
         - Запуск новой категории добавил ~3-4%
         - Общий рост рынка ~1-2%
         Вывод: рост соответствует ожиданиям"
```

---

### 2. Классификация метрик

Используй правильный тип метрики для задачи:

| Тип метрики | Когда использовать | Примеры |
|-------------|-------------------|---------|
| **Суммы и количества** | Абсолютные значения | DAU, Revenue, Orders |
| **Распределения** | Понять разброс | Среднее, медиана, p95 |
| **Вероятности** | Конверсии, частоты | CTR, Conversion Rate, Churn |
| **Отношения** | Сравнение сегментов | Organic/Paid ratio, Mobile/Desktop |

**Best practice:**
- Не ограничивайся средним — смотри медиану и перцентили
- Для revenue используй сумму, для чека — медиану (не среднее!)
- Для конверсии учитывай sample size (малая выборка = ненадёжно)

---

### 3. Root Cause Analysis (RCA)

Когда метрика **неожиданно изменилась**, используй структурированный подход:

#### Шаг 1: Валидация данных
```
Проверь:
1. Корректность данных (минимум 2 источника)
2. Нет ли технических проблем (логирование, ETL)
3. Sample size достаточен для выводов
```

#### Шаг 2: Формулирование гипотез

**4 категории гипотез:**

1. **Продуктовая** (изменения в продукте):
   - Релизы (новые фичи, баги)
   - A/B тесты
   - Изменения UI/UX

2. **Рыночная/конкурентная**:
   - Действия конкурентов
   - Рыночные тренды
   - Ценообразование

3. **Пользовательская** (изменения в аудитории):
   - Новые когорты vs старые
   - Изменение источников трафика
   - Сезонность

4. **Внешняя** (вне контроля):
   - Праздники, выходные
   - Погода, события
   - Экономическая ситуация

#### Шаг 3: Проверка гипотез

```sql
-- Пример: Продажи упали на 12%

-- Гипотеза 1: Проблема в конкретном регионе?
SELECT region, SUM(amount) as revenue,
       LAG(SUM(amount)) OVER (ORDER BY date) as prev_revenue
FROM sales
GROUP BY region, date
-- Результат: Сибирь -13%, остальные в норме

-- Гипотеза 2: Ушёл крупный клиент?
SELECT client, SUM(amount), COUNT(*) as orders
FROM sales
WHERE date >= '2024-10-01'
GROUP BY client
ORDER BY SUM(amount) DESC
-- Результат: "Газпром" 0 заказов (было 15/месяц)
```

#### Шаг 4: Количественная оценка impact

**ВСЕГДА количественно оценивай:**
```
Плохо: "Потеря клиента Газпром повлияла на продажи"

Хорошо:
"Потеря клиента Газпром:
 - Impact: -5.2M руб/месяц (-13% от региона Сибирь)
 - % от общей выручки: 3.3%
 - Equivalent: нужно найти 150 средних клиентов для компенсации"
```

---

## Формирование выводов: 4 уровня зрелости

### Level 1: Дескриптивный (что показывают данные)
```
Базовый уровень:
"График показывает продажи по месяцам. Декабрь самый высокий."
```

**Используй только для простых графиков.**

---

### Level 2: Аналитический (интерпретация)
```
Лучше:
"Продажи выросли на 12% год к году.
Пик в декабре (+45% м/м) обусловлен сезонностью."
```

**Добавляй контекст:** год к году, месяц к месяцу, vs ожидания.

---

### Level 3: Инсайты (почему это произошло)
```
Хорошо:
"Рост 12% обусловлен тремя факторами:
 1. Категория Электроника: +34% (новая линейка iPhone)
 2. Регион Москва: +28% (открытие 5 новых магазинов)
 3. Онлайн канал: +45% (улучшение конверсии сайта)

 Негативный фактор:
 - Категория Одежда: -5% (уход поставщика Zara)"
```

**Всегда указывай:**
- Драйверы роста (топ-3)
- Негативные факторы
- Количественный вклад каждого

---

### Level 4: Предписывающий (что делать) — ЦЕЛЬ

```
ОТЛИЧНО (целься на этот уровень!):

"Рост 12% год к году, но неравномерный.

ДРАЙВЕРЫ РОСТА:
- Электроника +34% -> составляет 67% прироста
- Москва +28% -> даёт 23% прироста
- Онлайн +45% -> 10% прироста

ЗОНЫ РИСКА:
- Одежда -5% -> потеря 2.3M руб
- Сибирь -12% -> потеря 5.2M руб (клиент Газпром)

ПРИОРИТЕТНЫЕ ДЕЙСТВИЯ:
1. [КРИТИЧНО] Найти замену клиенту Газпром в Сибири (дедлайн: февраль)
   Impact: восстановление 5.2M руб/месяц

2. [ВЫСОКИЙ] Расширить ассортимент Электроники (акцент на маржинальные товары)
   Impact: +3-4M руб дополнительно в Q1

3. [СРЕДНИЙ] Решить проблему Одежды: новый поставщик или закрыть категорию
   Impact: остановить -2.3M руб кровотечение

ПРОГНОЗ:
Выполнение действий 1-2 -> достижение 18% роста в Q1 (vs 12% текущий)"
```

**Структура Level 4 вывода (обязательно!):**
1. Главная метрика + контекст
2. Драйверы роста (топ-3 с % вклада)
3. Зоны риска (топ-2)
4. Приоритетные действия (3 шт):
   - Приоритет (критично/высокий/средний)
   - Конкретное действие (что сделать)
   - Дедлайн (когда)
   - Impact (сколько денег/времени)
5. Прогноз (что будет если выполнить)

---

## Проверка гипотез: статистическая строгость

### Когда гипотеза считается подтверждённой

**Необходимо:**

1. **Статистическая значимость** (p-value < 0.05)
   ```sql
   -- Chi-squared test для A/B теста
   -- Или посчитай вручную confidence interval
   ```

2. **Практическая значимость** (effect size)
   ```
   Плохо: "Красная кнопка конвертит на 0.01% лучше (p=0.03)"
          -> Статистически значимо, но бизнес-impact ничтожен

   Хорошо: "Красная кнопка +18.6% CTR (p=0.0004)"
           -> И статистически И практически значимо!
   ```

3. **Sample size** (достаточная выборка)
   ```
   Минимум:
   - A/B тест: 1,000+ observations на вариант
   - Корреляция: 30+ точек данных
   - Сравнение сегментов: 100+ в каждом
   ```

4. **Учёт confounding factors** (сопутствующие факторы)
   ```
   Пример:
   Гипотеза: "Email рассылка увеличила продажи на 15%"

   Проверь confounders:
   - Не было ли в тот же день акции?
   - Не был ли это пятничный paycheck day?
   - Не было ли релиза нового продукта?

   Если да -> корреляция не равно причинность!
   ```

---

## Baseline и сравнения

### ВСЕГДА сравнивай с baseline

**Плохо:**
```
"Продажи в понедельник: 2.3M руб"
```
Без контекста это ничего не значит.

**Хорошо:**
```
"Продажи в понедельник: 2.3M руб
 - vs прошлый понедельник: +12%
 - vs средний понедельник (за 12 недель): +8%
 - vs вторник-воскресенье: -15% (понедельник всегда ниже)"
```

### Учёт сезонности

```sql
-- Правильное сравнение год к году
SELECT
  DATE_TRUNC('month', date) as month,
  SUM(amount) as revenue,
  LAG(SUM(amount), 12) OVER (ORDER BY month) as year_ago,
  ROUND((revenue - year_ago) / year_ago * 100, 2) as yoy_growth
FROM sales
GROUP BY month
```

**НЕ сравнивай:**
- Январь vs декабрь (сезонность!)
- Понедельник vs воскресенье (день недели!)
- Летние месяцы vs зимние (сезон!)

**СРАВНИВАЙ:**
- Январь 2025 vs январь 2024
- Понедельник vs средний понедельник
- Q4 2024 vs Q4 2023

---

## Формулирование рекомендаций (SMART framework)

Каждая рекомендация должна быть:

- **S**pecific (конкретная): НЕ "улучшить конверсию", А "добавить CTA кнопку на главную"
- **M**easurable (измеримая): указать ожидаемый эффект в цифрах
- **A**chievable (достижимая): реально выполнить за указанный срок
- **R**elevant (релевантная): решает найденную проблему
- **T**ime-bound (с дедлайном): конкретная дата

**Плохой пример:**
```
"Нужно улучшить маркетинг"
```

**Хороший пример:**
```
"Действие: Запустить email-кампанию для сегмента 'At Risk' (8,222 клиента)
 Дедлайн: до 15 февраля
 Ожидаемый эффект: вернуть 15% клиентов (1,233 чел) -> +1.8M руб revenue
 Ответственный: маркетинг
 Бюджет: 250K руб (ROI 7.2x)"
```

---

## Quantified Impact (обязательно!)

### ВСЕГДА оценивай impact в деньгах или времени

**Формула:**
```
Impact = (Изменение метрики) x (Денежная ценность метрики)

Примеры:
- +100 конверсий x 5,000 руб LTV = +500K руб
- -2 часа/день x 22 рабочих дня x 3,000 руб/час = -132K руб экономии
- +5% retention x 10,000 клиентов x 8,500 руб LTV = +4.25M руб
```

**Пример в выводе:**
```
"РЕКОМЕНДАЦИЯ: Оптимизировать скорость сайта до <2 сек

IMPACT:
- Текущий bounce rate при >3 сек: 67%
- Ожидаемый при <2 сек: 35% (benchmark)
- Разница: 32% пользователей остаются
- 100K визитов/месяц x 32% x 3.2% конверсия x 5,000 руб = +512K руб/месяц

ROI: 512K руб/месяц vs 300K руб стоимость оптимизации = окупается за 3 недели"
```

---

## Структура качественного вывода

### Шаблон (используй ВСЕГДА для Level 4)

```markdown
## [НАЗВАНИЕ АНАЛИЗА]

**Главная метрика:** [число] ([изменение] к [baseline])

### КЛЮЧЕВЫЕ НАБЛЮДЕНИЯ
- [наблюдение 1 с цифрами]
- [наблюдение 2 с цифрами]
- [наблюдение 3 с цифрами]

### ДРАЙВЕРЫ РОСТА
1. [фактор] — [вклад в %] ([объяснение])
2. [фактор] — [вклад в %] ([объяснение])
3. [фактор] — [вклад в %] ([объяснение])

### ЗОНЫ РИСКА
- [проблема] — [масштаб] ([последствия])
- [проблема] — [масштаб] ([последствия])

### ПРИОРИТЕТНЫЕ ДЕЙСТВИЯ

**[КРИТИЧНО]** [Действие 1]
   Дедлайн: [дата]
   Impact: [количественно]
   Ответственный: [команда/человек]

**[ВЫСОКИЙ]** [Действие 2]
   Дедлайн: [дата]
   Impact: [количественно]

**[СРЕДНИЙ]** [Действие 3]
   Дедлайн: [дата]
   Impact: [количественно]

### ПРОГНОЗ
[Что будет если выполнить рекомендации] -> [quantified outcome]
```

---

## Антипаттерны (чего избегать)

### Vanity metrics (метрики для красоты)

**Плохо:**
```
"У нас 1 миллион пользователей!"
```
Без контекста (активных? зарегистрированных? ботов?) это ничего не значит.

**Хорошо:**
```
"DAU: 156K (+12% м/м)
 Из них:
 - Активные (>1 действие/день): 89K (57%)
 - Engaged (>5 действий/день): 34K (22%)
 - Power users (>20 действий): 12K (8%)

 Рост обусловлен Engaged (+18% м/м) — качественный рост"
```

---

### Ложная корреляция

**Пример:**
```
"Продажи мороженого и количество утоплений коррелируют (r=0.89)
 -> Мороженое вызывает утопления?"
```

Correlation != Causation!

**Confounding factor:** Жаркая погода (лето)
- Жарко -> едят мороженое
- Жарко -> купаются -> тонут

---

### Simpson's Paradox (парадокс Симпсона)

**Пример:**
```
Общая конверсия:
- Вариант A: 40%
- Вариант B: 35%
-> A лучше?

По сегментам:
- Mobile: A=30%, B=35% (B лучше!)
- Desktop: A=45%, B=50% (B лучше!)

Парадокс: B лучше в КАЖДОМ сегменте, но хуже в общем!

Причина: У A больше desktop трафика (где конверсия выше).
```

**Вывод:** ВСЕГДА сегментируй данные перед выводами. Общая метрика может обманывать!

---

## Best Practices для выводов

### 1. Используй storytelling

**Плохо (просто факты):**
```
Продажи 156M. Рост 12%. Электроника +34%.
```

**Хорошо (история):**
```
"История роста 2024:

В начале года мы запустили новую линейку iPhone (январь).
Это дало +34% в категории Электроника, которая потянула
за собой весь рост (+12% общий).

Открытие 5 магазинов в Москве (март-май) добавило +28%
в регионе, компенсировав проблему в Одежде (-5% после
ухода Zara).

Итог: рост есть, но он хрупкий — зависит от одной категории.
Нужна диверсификация."
```

---

### 2. Приоритизируй рекомендации

**Используй MoSCoW:**
- **Must have** (критично): без этого бизнес страдает
- **Should have** (важно): заметный impact
- **Could have** (желательно): небольшой impact
- **Won't have** (не сейчас): низкий приоритет

**Или RICE Score:**
```
RICE = (Reach x Impact x Confidence) / Effort

Пример:
Рекомендация 1: Оптимизация сайта
- Reach: 100K визитов/месяц
- Impact: +32% останутся (vs bounce)
- Confidence: 80% (есть benchmark)
- Effort: 300K руб + 1 месяц

RICE = (100K x 0.32 x 0.8) / 300K = 85.3
```

---

### 3. Проверяй assumptions

**Перед выводом спроси себя:**

- [ ] Достаточно ли данных? (sample size >100)
- [ ] Учёл ли сезонность? (сравнил г/г, а не м/м)
- [ ] Нет ли outliers? (выбросы искажают среднее)
- [ ] Проверил ли confounders? (третьи факторы)
- [ ] Статистически значимо? (p < 0.05)
- [ ] Бизнес-значимо? (effect size > 10%)
- [ ] Actionable? (можно выполнить)

**Если хоть один ответ "нет" -> вывод слабый, улучшай!**

---

## Форматирование выводов

### Используй визуальную иерархию

**Хорошо:**
```html
<div style="background: linear-gradient(135deg, #e3f2fd, #bbdefb);
            padding: 20px;
            border-radius: 10px;
            border-left: 5px solid #1976d2;">

<h2 style="color: #0d47a1;">АНАЛИЗ ПРОДАЖ Q4 2024</h2>

<p><strong>Выручка:</strong> 156.7M руб (+12% г/г)</p>

<h3 style="color: #1565c0;">ДРАЙВЕРЫ РОСТА</h3>
<ul>
  <li><strong>Электроника</strong> — +34% (вклад 67%)</li>
  <li><strong>Москва</strong> — +28% (вклад 23%)</li>
</ul>

<h3 style="color: #c62828;">ЗОНЫ РИСКА</h3>
<ul>
  <li><strong>Одежда</strong> — -5% (потеря 2.3M руб)</li>
</ul>

<h3 style="color: #2e7d32;">РЕКОМЕНДАЦИИ</h3>
<ol>
  <li><strong>[КРИТИЧНО]</strong> Найти замену Газпром -> +5.2M руб/мес</li>
  <li><strong>[ВЫСОКИЙ]</strong> Расширить Электронику -> +3-4M руб</li>
</ol>

</div>
```

**Цвета по типу:**
- Нейтральная информация: синий (#1976d2)
- Позитив (рост): зелёный (#4caf50)
- Риск: оранжевый (#ff9800)
- Критично: красный (#f44336)

---

## Проверка корреляций

### Как правильно интерпретировать correlation coefficient

| r (Pearson) | Интерпретация | Действие |
|-------------|---------------|----------|
| 0.9 - 1.0 | Очень сильная | Почти наверняка есть связь |
| 0.7 - 0.9 | Сильная | Вероятно есть связь |
| 0.5 - 0.7 | Средняя | Возможно есть связь, проверь дальше |
| 0.3 - 0.5 | Слабая | Сомнительно, ищи другие факторы |
| 0.0 - 0.3 | Очень слабая/нет | Связи нет |

**Важно:**
- r = 0.89 НЕ значит "89% влияет"!
- r показывает силу ЛИНЕЙНОЙ связи (нелинейную не увидит)
- Всегда проверяй scatter plot (визуально)

---

## Quick Reference: Когда какой анализ

| Вопрос | Анализ | SQL Pattern |
|--------|--------|-------------|
| Что изменилось? | Trend | `ORDER BY date` |
| Почему изменилось? | Root Cause | Segmentation + correlation |
| Кто лучше/хуже? | Comparison | `GROUP BY segment` |
| Что будет? | Forecast | Time series + seasonality |
| Связаны ли X и Y? | Correlation | `CORR(x, y)` |
| Есть ли различия? | Statistical test | Chi-squared / t-test |
| Какие клиенты ценнее? | Segmentation | RFM, LTV |
| Где узкое место? | Funnel | Conversion по этапам |

---

## Чек-лист качественного вывода

Перед финализацией вывода проверь:

**Структура:**
- [ ] Есть главная метрика с контекстом
- [ ] Есть драйверы роста (топ-3)
- [ ] Есть зоны риска
- [ ] Есть приоритетные действия (3 шт)
- [ ] Есть прогноз impact

**Качество:**
- [ ] Все цифры подтверждены данными
- [ ] Рекомендации SMART (конкретные, измеримые, с дедлайном)
- [ ] Impact quantified (в деньгах/времени)
- [ ] Приоритеты расставлены (критично/высокий/средний)
- [ ] Нет общих фраз ("нужно улучшить", "следует рассмотреть")

**Статистика:**
- [ ] Sample size достаточен (>100)
- [ ] Сезонность учтена (г/г сравнение)
- [ ] Outliers проверены
- [ ] Статистическая значимость (если применимо)

**Презентация:**
- [ ] Визуальная иерархия (заголовки, списки)
- [ ] Цвета для акцентов
- [ ] HTML/CSS форматирование

---

## Cheat Sheet: Типовые выводы

### 1. Trend Analysis (тренд)

```
"[Метрика] показывает [направление] тренд: [число] ([изменение] к [baseline]).

Тренд [усиливается/ослабевает/стабилен].

Прогноз: при сохранении текущего темпа достигнем [цель] к [дата]."
```

### 2. Comparison Analysis (сравнение)

```
"Сравнение [A] vs [B]:

[A]: [метрика 1]
[B]: [метрика 2]
Разница: [число] ([%])

Причина: [объяснение]
Рекомендация: [действие для отстающего]"
```

### 3. Cohort Analysis (когорты)

```
"Retention анализ показывает:

Лучшая когорта: [месяц] (retention [%])
Худшая когорта: [месяц] (retention [%])

Паттерн: [описание]

Рекомендация: [как улучшить худшие когорты]"
```

### 4. Anomaly Detection (аномалии)

```
"НАЙДЕНА АНОМАЛИЯ: [дата/сегмент]

Отклонение: [число] (z-score: [значение])
Тип: [позитивная/негативная]

Root cause: [причина]

Действие:
- Если разовая -> мониторить
- Если паттерн -> [конкретное действие]"
```

### 5. A/B Test Results

```
"A/B ТЕСТ: [название]

Результаты:
- Вариант A: [метрика] ([sample size])
- Вариант B: [метрика] ([sample size])
- Разница: [%] (p-value: [число])

Статистическая значимость: [ДА/НЕТ]
Практическая значимость: [ДА/НЕТ]

Impact: [количественно]

Рекомендация: Раскатать вариант [A/B] на 100%"
```

---

## MCP контекст: AI генерирует вывод для дашборда

```python
# Промпт для Level 4 вывода
def generate_prescriptive_narrative(data: dict, chart_type: str) -> str:
    """
    Генерирует Level 4 вывод (prescriptive) из данных графика
    """
    prompt = f"""
    Ты senior business analyst с опытом 10+ лет.

    Данные графика: {json.dumps(data)}
    Тип: {chart_type}

    Проанализируй и дай Level 4 вывод (prescriptive analytics).

    ОБЯЗАТЕЛЬНАЯ СТРУКТУРА:

    1. ГЛАВНАЯ МЕТРИКА
       [Число] ([изменение] к [baseline])

    2. ДРАЙВЕРЫ РОСТА (топ-3 с % вклада)

    3. ЗОНЫ РИСКА (топ-2)

    4. ПРИОРИТЕТНЫЕ ДЕЙСТВИЯ (обязательно 3 шт!)
       [КРИТИЧНО] [Действие 1]
         Дедлайн: [конкретная дата]
         Impact: [количественно в деньгах/времени]

    5. ПРОГНОЗ
       [Что будет если выполнить] -> [quantified outcome]

    ТРЕБОВАНИЯ:
    - Все цифры должны быть из данных (не выдумывать!)
    - Рекомендации КОНКРЕТНЫЕ (не "улучшить", а "сделать X")
    - Impact QUANTIFIED (не "много", а "5.2M руб")
    - Дедлайны РЕАЛИСТИЧНЫЕ
    - Формат: HTML с gradient background
    """

    return llm.generate(prompt, temperature=0.3)
```

---

## Формулы для быстрых расчётов

### Growth rate (темп роста)
```
Growth % = ((New - Old) / Old) x 100
```

### Compound Annual Growth Rate (CAGR)
```
CAGR = ((End/Start)^(1/years) - 1) x 100
```

### Contribution % (вклад фактора)
```
Contribution = (Factor Growth / Total Growth) x 100
```

### Elasticity (эластичность)
```
Elasticity = (% Change in Demand) / (% Change in Price)

Интерпретация:
- E > 1: elastic (чувствительны к цене)
- E < 1: inelastic (не очень чувствительны)
```

---

*Используй этот skill для формирования качественных бизнес-выводов из данных*
