Лабораторная работа 5. Корреляционный анализ данных

Цель работы: Изучить взаимосвязи между признаками внутри выделенных сегментов данных с помощью корреляционного анализа, научиться интерпретировать коэффициенты корреляции и выявлять мультиколлинеарность.


Введение

После завершения кластеризации мы получили кластеры и хотим понять, как различные признаки связаны между собой внутри этих сегментов. Корреляционный анализ позволяет выявить взаимосвязи между переменными.

Корреляция — это статистическая мера, показывающая степень и направление линейной связи между двумя переменными. Значение коэффициента корреляции изменяется от -1 до 1.


Теоретические основы корреляционного анализа

1. Коэффициент корреляции Пирсона

Назначение: Оценка линейной связи между двумя непрерывными переменными, распределенными нормально.

Интерпретация:

  • |r| < 0.3 — слабая связь
  • 0.3 ≤ |r| < 0.7 — умеренная связь
  • |r| ≥ 0.7 — сильная связь

Ограничения: Чувствителен к выбросам, требует нормального распределения, оценивает только линейные связи.

2. Ранговая корреляция Спирмена

Назначение: Оценка монотонной связи (не обязательно линейной) между переменными. Используется для порядковых данных или при нарушении нормальности распределения.

Преимущества: Не требует нормального распределения, устойчив к выбросам, работает с порядковыми данными.

3. Таблица корреляций (Correlation Matrix)

Квадратная матрица, где на пересечении строки i и столбца j находится коэффициент корреляции между признаками i и j.

4. Тепловая карта корреляций (Heatmap)

Визуализация корреляционной матрицы, где цветом кодируется сила и направление связи.

5. Мультиколлинеарность

Явление, при котором два или более признаков сильно коррелируют между собой. Диагностика выполняется с помощью VIF (Variance Inflation Factor). Значение VIF > 10 (или >5 при строгом подходе) указывает на проблему мультиколлинеарности.

Этапы выполнения работы

Задание 1. Подготовка данных для анализа
  1. Загрузите финальный датасет с метками кластеров, полученный в лабораторной работе 4.
  2. Убедитесь, что данные содержат как исходные (немаcштабированные) признаки, так и метки кластеров.
  3. Создайте отдельные датасеты для каждого кластера для внутрисегментного анализа.
Задание 2. Общая корреляционная матрица
  1. Выберите только числовые признаки для анализа (исключите идентификаторы и метки кластеров).
  2. Рассчитайте корреляционную матрицу Пирсона для всего датасета.
  3. Рассчитайте корреляционную матрицу Спирмена для всего датасета.
  4. Сравните результаты — есть ли существенные различия? Если да, то о чем это говорит?
Задание 3. Визуализация корреляций
  1. Постройте тепловую карту для корреляционной матрицы Пирсона.
  2. Добавьте на тепловую карту числовые значения коэффициентов.
  3. Используйте маску для верхней треугольной части (чтобы избежать дублирования).
  4. Проанализируйте, какие признаки наиболее сильно коррелируют.
Задание 4. Анализ значимости корреляций
  1. Для каждой пары признаков рассчитайте p-value, проверяя гипотезу о том, что истинная корреляция равна нулю.
  2. Выделите корреляции, значимые на уровне α = 0.05.
  3. Создайте матрицу значимости, где отмечены только статистически значимые корреляции.
Задание 5. Проверка на мультиколлинеарность
  1. Рассчитайте VIF для каждого признака.
  2. Определите признаки с высоким VIF (>10 или >5).
  3. Предложите стратегию обработки мультиколлинеарности (удаление одного из сильно коррелирующих признаков, использование PCA и т.д.).
Задание 6. Внутрикластерный корреляционный анализ

Для каждого кластера, полученного в предыдущей лабораторной работе (K-Means, DBSCAN, иерархическая кластеризация):

  1. Постройте отдельную корреляционную матрицу.
  2. Визуализируйте ее в виде тепловой карты.
  3. Сравните структуру корреляций между кластерами:
    • Какие связи усиливаются/ослабевают?
    • Появляются ли новые значимые корреляции?
    • Исчезают ли корреляции, характерные для всего датасета?
Задание 7. Интерпретация результатов

Для каждого кластера опишите характерные взаимосвязи признаков. Пример интерпретации:

  • Кластер 0: "Сильная положительная связь между возрастом и доходом (r=0.82), что характерно для сегмента с профессиональным ростом"
  • Кластер 1: "Отрицательная связь между частотой покупок и суммой чека (r=-0.65) — клиенты либо покупают часто понемногу, либо редко, но крупно"
Задание 8. Сравнение методов кластеризации через призму корреляций

Для каждого алгоритма кластеризации (K-Means, DBSCAN, иерархический) оцените:

  • Насколько различаются корреляционные матрицы между кластерами?
  • В каком методе кластеры наиболее однородны по структуре связей?

Требования к отчету

Раздел 1. Общий корреляционный анализ
  • Таблица 1: Корреляционная матрица Пирсона (основные признаки)
  • Рисунок 1: Тепловая карта корреляций Пирсона
  • Рисунок 2: Тепловая карта корреляций Спирмена
  • Таблица 2: P-value для значимых корреляций
  • Вывод: Какие признаки наиболее связаны в целом по датасету?
Раздел 2. Мультиколлинеарность
  • Таблица 3: Значения VIF для всех признаков
  • Вывод: Есть ли проблема мультиколлинеарности? Какие признаки рекомендуется исключить?
Раздел 3. Внутрикластерный анализ

Для K-Means:

  • Рисунки 3-5: Тепловые карты для каждого кластера
  • Таблица 4: Сравнение корреляций по кластерам
  • Описание: Характерные связи для каждого сегмента

Для DBSCAN:

  • Рисунки 6-8: Тепловые карты для каждого кластера (исключая шум)
  • Таблица 5: Сравнение корреляций с учетом шумовых точек
  • Описание: Влияет ли исключение шума на структуру связей?

Для иерархической кластеризации:

  • Рисунки 9-11: Тепловые карты для каждого кластера
  • Таблица 6: Сравнение корреляций
  • Описание: Насколько устойчивы корреляции внутри иерархических кластеров?
Раздел 4. Сравнительный анализ методов
  • Таблица 7: Сводные метрики однородности кластеров
  • График: Сравнение средних корреляций внутри кластеров по методам
  • Вывод: Какой метод кластеризации дал наиболее интерпретируемые с точки зрения корреляций сегменты?
Раздел 5. Итоговые выводы
  1. Какие взаимосвязи признаков являются универсальными (проявляются во всех сегментах)?
  2. Какие взаимосвязи являются специфическими для отдельных сегментов?
  3. Как результаты корреляционного анализа дополняют выводы кластеризации?
  4. Практические рекомендации на основе выявленных взаимосвязей.

Контрольные вопросы для защиты

  1. В чем различие между корреляцией Пирсона и Спирмена? В каких случаях какой коэффициент использовать?
  2. Что означает p-value в контексте корреляционного анализа?
  3. Как интерпретировать отрицательную корреляцию?
  4. Почему корреляция не означает причинно-следственную связь?
  5. Что такое мультиколлинеарность и чем она опасна?
  6. Какой уровень корреляции считается высоким?
  7. Почему важно анализировать корреляции внутри кластеров, а не только в целом по датасету?
  8. Как выбросы влияют на коэффициент корреляции Пирсона?
  9. Может ли быть корреляция равна 0 при явной нелинейной зависимости? Приведите пример.
  10. Как корреляционный анализ помогает в построении маркетинговых стратегий?

Чек-лист для самопроверки

  • ☐ Построены корреляционные матрицы Пирсона и Спирмена
  • ☐ Созданы тепловые карты с подписями
  • ☐ Рассчитаны p-value для корреляций
  • ☐ Выполнен анализ VIF
  • ☐ Проведен внутрикластерный анализ для всех методов
  • ☐ Сравнены корреляционные структуры между кластерами
  • ☐ Сформулированы интерпретации выявленных взаимосвязей
  • ☐ Сделаны выводы и даны практические рекомендации
  • ☐ Отчет оформлен согласно требованиям

Справка по библиотекам Python для корреляционного анализа

Назначение: Данный справочный материал содержит информацию о библиотеках Python, необходимых для выполнения лабораторной работы по корреляционному анализу. Для каждой библиотеки указаны ее назначение и ключевые возможности применительно к задачам работы.


Введение

Для выполнения лабораторной работы по корреляционному анализу потребуется набор специализированных библиотек Python. Каждая из них выполняет определенные функции: от загрузки и обработки данных до статистических расчетов и визуализации. Ниже представлен обзор основных библиотек и их возможностей.


1. Pandas — работа с данными

Назначение: Основная библиотека для загрузки, обработки и анализа табличных данных.

Ключевые возможности для лабораторной работы:

  • Загрузка данных из CSV-файлов
  • Выбор числовых признаков для анализа
  • Фильтрация данных по значениям кластеров
  • Расчет корреляционных матриц (Пирсона и Спирмена)
  • Группировка данных по кластерам и расчет статистик
  • Создание таблиц для представления результатов

2. NumPy — математические операции

Назначение: Библиотека для работы с многомерными массивами и математическими функциями.

Ключевые возможности для лабораторной работы:

  • Создание масок для визуализации (например, верхнего треугольника матрицы)
  • Статистические расчеты (средние, стандартные отклонения)
  • Работа с матрицами и массивами данных
  • Математические операции над массивами

3. SciPy — статистические тесты

Назначение: Библиотека для научных и статистических вычислений.

Ключевые возможности для лабораторной работы:

  • Расчет корреляции Пирсона с проверкой статистической значимости
  • Расчет ранговой корреляции Спирмена
  • Получение p-value для проверки гипотез о значимости связей
  • Дополнительные статистические тесты

4. Seaborn — визуализация корреляций

Назначение: Библиотека для статистической визуализации данных.

Ключевые возможности для лабораторной работы:

  • Построение тепловых карт корреляционных матриц
  • Настройка цветовых схем для отображения силы и направления связей
  • Отображение числовых значений коэффициентов на графиках
  • Создание матриц диаграмм рассеяния
  • Кластеризованные тепловые карты

5. Matplotlib — настройка графиков

Назначение: Базовая библиотека для создания и настройки графиков.

Ключевые возможности для лабораторной работы:

  • Настройка размеров и разрешения графиков
  • Добавление заголовков и подписей осей
  • Сохранение графиков в файлы
  • Управление цветовыми схемами и легендами
  • Создание составных рисунков из нескольких графиков

6. Statsmodels — анализ мультиколлинеарности

Назначение: Библиотека для статистического моделирования и диагностики.

Ключевые возможности для лабораторной работы:

  • Расчет VIF (Variance Inflation Factor) для выявления мультиколлинеарности
  • Диагностика регрессионных моделей
  • Статистические тесты и интервальные оценки

7. Scikit-learn — снижение размерности

Назначение: Библиотека для машинного обучения.

Ключевые возможности для лабораторной работы:

  • Метод главных компонент (PCA) для снижения размерности
  • Визуализация многомерных данных в 2D-пространстве
  • Подготовка данных для кластеризации и визуализации

8. Tabulate (опционально) — оформление таблиц

Назначение: Библиотека для форматирования таблиц в отчетах.

Ключевые возможности:

  • Создание красиво оформленных таблиц для отчета
  • Экспорт таблиц в различные форматы

Таблица соответствия библиотек заданиям

Задание Основные библиотеки
Загрузка и подготовка данных Pandas
Расчет корреляционных матриц Pandas, SciPy
Проверка значимости (p-value) SciPy
Визуализация корреляций Seaborn, Matplotlib
Анализ мультиколлинеарности (VIF) Statsmodels, Pandas
Внутрикластерный анализ Pandas, Seaborn
Снижение размерности для визуализации Scikit-learn
Оформление результатов Pandas, Tabulate

Установка библиотек

Все необходимые библиотеки устанавливаются через менеджер пакетов pip:

pip install pandas numpy scipy seaborn matplotlib statsmodels scikit-learn tabulate

Для работы в Jupyter Notebook рекомендуется также установить:

pip install jupyter ipykernel

Импорт библиотек (стандартные псевдонимы)

При написании кода принято использовать следующие сокращения:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats
from statsmodels.stats.outliers_influence import variance_inflation_factor
from sklearn.decomposition import PCA

Документация

Официальная документация библиотек:

  • Pandas: https://pandas.pydata.org/docs/
  • NumPy: https://numpy.org/doc/
  • SciPy: https://docs.scipy.org/doc/scipy/
  • Seaborn: https://seaborn.pydata.org/
  • Matplotlib: https://matplotlib.org/stable/contents.html
  • Statsmodels: https://www.statsmodels.org/stable/index.html
  • Scikit-learn: https://scikit-learn.org/stable/documentation.html

Последнее изменение: вторник, 17 марта 2026, 13:54