Гистограмма

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

Компоненты гистограммы

Гистограмма состоит из нескольких ключевых компонентов:

  1. Интервалы (или корзины):
    • Интервалы — это диапазоны, которые группируют данные в отдельные сегменты. Каждый интервал представляет диапазон значений, и частота данных в каждом интервале отображается. Выбор размера интервала может значительно повлиять на представление данных.
  2. Частота:
    • Частота относится к количеству точек данных в каждом интервале. Высота каждого столбца в гистограмме соответствует частоте точек данных в этом интервале.
  3. Оси:
    • Ось X представляет диапазон значений, разделенный на интервалы.
    • Ось Y представляет частоту точек данных в каждом интервале.

Создание гистограмм

Шаги для создания гистограммы

  1. Сбор данных:
    • Соберите непрерывные данные, которые вы хотите проанализировать.
  2. Выбор количества интервалов:
    • Определите количество интервалов или диапазонов для разделения данных. Общие методы выбора размера интервала включают правило Стерджеса, правило Райса и правило Фридмана-Диакониса.
  3. Разделение данных:
    • Отсортируйте данные в выбранные интервалы.
  4. Подсчет частот:
    • Подсчитайте количество точек данных в каждом интервале.
  5. Построение графика:
    • Нарисуйте столбцы для каждого интервала с высотами, представляющими частоты.

Пример создания гистограммы в Python

Вот пример того, как создать гистограмму, используя библиотеку Matplotlib Python:

import matplotlib.pyplot as plt

# Примерные данные
data = [22, 23, 19, 21, 18, 22, 23, 25, 21, 19, 23, 22, 24, 18, 21]

# Создание гистограммы
plt.hist(data, bins=5, edgecolor='black')

# Добавление заголовков и меток
plt.title('Пример гистограммы')
plt.xlabel('Значение')
plt.ylabel('Частота')

# Отображение гистограммы
plt.show()

Применения гистограмм

Визуализация данных

Гистограммы являются важными инструментами в визуализации данных, позволяя аналитикам:

Статистический анализ

Гистограммы играют жизненно важную роль в статистическом анализе:

Машинное обучение

В машинном обучении гистограммы используются для:

Продвинутые концепции

1. Оценка плотности ядра

Хотя гистограммы полезны для визуализации распределения данных, они иногда могут давать грубое представление, особенно при неадекватных размерах интервалов. Оценка плотности ядра (KDE) предлагает более усовершенствованный подход, сглаживая распределение с использованием ядер. В отличие от гистограмм, KDE не требует группировки данных и может предоставить непрерывную функцию плотности вероятности.

2. Двумерные гистограммы

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

Пример двумерной гистограммы:

import numpy as np
import matplotlib.pyplot as plt

# Примерные данные
x = np.random.randn(1000)
y = np.random.randn(1000)

# Создание двумерной гистограммы
plt.hist2d(x, y, bins=[30, 30], cmap=plt.cm.BuGn_r)

# Добавление заголовков и меток
plt.title('Пример двумерной гистограммы')
plt.xlabel('Значения X')
plt.ylabel('Значения Y')
plt.colorbar(label='Частота')

# Отображение двумерной гистограммы
plt.show()

3. Кумулятивная гистограмма

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

Пример кумулятивной гистограммы:

import matplotlib.pyplot as plt

# Примерные данные
data = [22, 23, 19, 21, 18, 22, 23, 25, 21, 19, 23, 22, 24, 18, 21]

# Создание кумулятивной гистограммы
plt.hist(data, bins=5, edgecolor='black', cumulative=True)

# Добавление заголовков и меток
plt.title('Пример кумулятивной гистограммы')
plt.xlabel('Значение')
plt.ylabel('Кумулятивная частота')

# Отображение кумулятивной гистограммы
plt.show()

4. Нормализованная гистограмма

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

Пример нормализованной гистограммы:

import matplotlib.pyplot as plt

# Примерные данные
data = [22, 23, 19, 21, 18, 22, 23, 25, 21, 19, 23, 22, 24, 18, 21]

# Создание нормализованной гистограммы
plt.hist(data, bins=5, edgecolor='black', density=True)

# Добавление заголовков и меток
plt.title('Пример нормализованной гистограммы')
plt.xlabel('Значение')
plt.ylabel('Пропорция')

# Отображение нормализованной гистограммы
plt.show()

Гистограммы в алгоритмической торговле

Важность гистограмм в алгоритмической торговле

В алгоритмической торговле гистограммы играют важную роль в понимании распределения и поведения финансовых данных. Некоторые применения включают:

Использование гистограмм для технического анализа

Гистограммы часто используются в сочетании с другими инструментами технического анализа для выявления торговых сигналов:

Пример расчета гистограммы MACD:

import pandas as pd
import matplotlib.pyplot as plt

# Примерные данные (дневные цены закрытия)
data = pd.Series([310, 312, 315, 320, 323, 319, 325, 327, 330, 335])

# Расчет MACD и сигнальной линии
short_window = 2
long_window = 5
signal_window = 3
macd = data.ewm(span=short_window, adjust=False).mean() - data.ewm(span=long_window, adjust=False).mean()
signal = macd.ewm(span=signal_window, adjust=False).mean()

# Расчет гистограммы MACD
macd_histogram = macd - signal

# Построение гистограммы MACD
plt.bar(macd_histogram.index, macd_histogram, color='lightgreen')
plt.axhline(0, color='gray', linewidth=1)
plt.title('Пример гистограммы MACD')
plt.xlabel('Время')
plt.ylabel('Гистограмма MACD')

# Отображение гистограммы MACD
plt.show()

Использование гистограмм для анализа производительности

Гистограммы используются для оценки производительности торговых алгоритмов путем анализа распределения доходности, просадок и других метрик производительности. Это помогает понять общее поведение алгоритма и выявить области для улучшения.

Пример гистограммы распределения доходности:

import numpy as np
import matplotlib.pyplot as plt

# Симулированные данные доходности
returns = np.random.normal(loc=0.001, scale=0.02, size=1000)

# Создание гистограммы распределения доходности
plt.hist(returns, bins=30, edgecolor='black')

# Добавление заголовков и меток
plt.title('Гистограмма распределения доходности')
plt.xlabel('Доходность')
plt.ylabel('Частота')

# Отображение гистограммы распределения доходности
plt.show()

Заключение

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