# Руководство: Рабочий процесс статистического анализа > 💡 **Для кого это руководство?** > > Этот документ предназначен для аналитиков и разработчиков, которые хотят научиться применять статистические методы для проверки (валидации) торговых гипотез и анализа данных с помощью `bquant`. ## 1. От Наблюдения к Доказательству Основная цель количественного анализа — не просто найти интересные закономерности, а доказать, что они не являются случайностью. Модуль `bquant.analysis.statistical` предоставляет инструменты для этого второго, критически важного шага. Если `analyze_zones` помогает **найти и описать** паттерны, то `bquant.analysis.statistical` помогает **проверить и доказать** их значимость. ## 2. Ключевые компоненты В основе модуля лежат два основных класса: - **`StatisticalAnalyzer`**: Универсальный инструмент для "разведки" данных. Он отвечает за описательную статистику, анализ распределений, тесты на нормальность и корреляционный анализ. - **`HypothesisTestSuite`**: Специализированный набор тестов для быстрой проверки распространенных торговых гипотез. Например: "Приносят ли бычьи зоны статистически значимую прибыль?" или "Зависит ли доходность зоны от ее длительности?". --- ## 3. Типичный рабочий процесс Статистический анализ — это последовательный процесс, где каждый шаг строится на предыдущем. ### Шаг 1: Описательная статистика ("Первый взгляд") Прежде чем строить сложные модели, необходимо понять "характер" ваших данных. - **Что делаем?** С помощью `StatisticalAnalyzer.descriptive_statistics()` получаем ключевые метрики: среднее, медиану, стандартное отклонение, асимметрию, эксцесс. - **Зачем это нужно?** Чтобы получить общее представление о масштабе и разбросе данных. Например, аномально высокое стандартное отклонение может говорить о выбросах, а ненулевая асимметрия — о несимметричности распределения доходностей. ### Шаг 2: Анализ распределения ("Какова природа данных?") Многие статистические тесты (например, t-тест) предполагают, что данные распределены нормально. Это предположение необходимо проверить. - **Что делаем?** Используем `StatisticalAnalyzer.normality_test()`, который применяет тесты Шапиро-Уилка и Колмогорова-Смирнова. - **Зачем это нужно?** Если данные не являются нормальными, для сравнения выборок следует использовать непараметрические тесты (например, тест Манна-Уитни), которые более устойчивы к выбросам и ненормальным распределениям. ### Шаг 3: Корреляционный анализ ("Что с чем связано?") Этот шаг помогает найти взаимосвязи между различными переменными. - **Что делаем?** Рассчитываем корреляционную матрицу и проверяем значимость каждой корреляции. - **Зачем это нужно?** Чтобы найти потенциальные предикторы для будущих моделей. Например, если вы обнаружили сильную корреляцию между объемом и волатильностью, объем можно использовать как одну из переменных в регрессионной модели для предсказания волатильности. ### Шаг 4: Проверка гипотез ("Это реально или случайность?") Это ядро всего процесса. На этом этапе мы проверяем конкретные торговые идеи. - **Что делаем?** Используем `HypothesisTestSuite` для проверки заранее определенных гипотез. Например, `test_bull_bear_asymmetry_hypothesis()` проверяет, есть ли статистически значимая разница в средних характеристиках (например, доходности или длительности) между бычьими и медвежьими зонами. - **Зачем это нужно?** Чтобы получить объективный, основанный на p-value, ответ на вопрос, работает ли ваша торговая идея. Если p-value < 0.05, вы можете с 95% уверенностью утверждать, что наблюдаемый эффект (например, более высокая доходность в бычьих зонах) реален. --- ## 4. Связь с анализом зон Пайплайн `analyze_zones` является идеальным поставщиком данных для статистического анализа. Словарь `zone.features`, который генерируется для каждой зоны, содержит множество готовых метрик (`duration`, `price_return`, `volatility_score` и т.д.), которые можно напрямую подавать в `HypothesisTestSuite` для проверки гипотез. **Пример:** 1. С помощью `analyze_zones` вы получаете список зон с их характеристиками. 2. Вы передаете этот список в `HypothesisTestSuite.test_zone_duration_hypothesis()`. 3. Тест автоматически сравнивает доходности длинных и коротких зон и сообщает вам, есть ли между ними статистически значимая разница. --- ## 🔗 См. также - **[Справочник API (statistical.md)](../api/analysis/statistical.md)**: Полный список классов, методов и примеры синтаксиса.