Смещённые 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 позволяют корректно визуализировать дискретные распределения, выравнивая столбцы гистограммы по целым значениям случайной величины.