Смещённые bins используют при построении гистограмм для дискретных данных, чтобы столбцы корректно соответствовали целым значениям, а не интервалам «между ними».
Проблема без смещения:
Если данные принимают целые значения (0, 1, 2, …) и использовать стандартные бины, то:
– значения попадают на границы интервалов
– столбцы визуально «съезжают»
– становится неочевидно, какой столбец какому значению соответствует
Решение — сдвинуть границы бинов на половину шага.
Типичный паттерн:
import numpy as np
import matplotlib.pyplot as plt
data = np.random.poisson(lam=3, size=1000)
bins = np.arange(data.min(), data.max() + 2) - 0.5
plt.hist(data, bins=bins, density=True)
plt.show()Что здесь важно:
– np.arange(data.min(), data.max() + 2) задаёт целочисленные уровни
– - 0.5 смещает границы так, что
каждый бин центрируется на целых значениях
– один столбец ↔ одно значение случайной величины
Как это выглядит концептуально:
– бин [-0.5, 0.5) → значение 0
– бин [0.5, 1.5) → значение 1
– бин [1.5, 2.5) → значение 2
Интерпретация:
– высота столбца ≈ P(X = k) при density=True
– форма гистограммы соответствует эмпирическому дискретному распределению
– удобно сравнивать с теоретическими PMF
Когда использовать:
– распределение Пуассона
– биномиальное распределение
– любые счётные величины
Когда не нужно:
– непрерывные данные
– большие дискретные диапазоны, где удобнее обычная гистограмма
Коротко:
смещённые bins позволяют корректно визуализировать дискретные распределения, выравнивая столбцы гистограммы по целым значениям случайной величины.