PyMC3 - Пуассон работает с точкой переключения, экспоненциальный - нет

Следующая модель (взятая из Байесовских методов для хакеров) работает с Пуассоном.

count_data = np.loadtxt("data/txtdata.csv")
n_count_data = len(count_data) 

with pm.Model() as model:
alpha = 1.0/count_data.mean()  # Recall count_data is the
                               # variable that holds our txt counts
lambda_1 = pm.Exponential("lambda_1", alpha)
lambda_2 = pm.Exponential("lambda_2", alpha)

tau = pm.DiscreteUniform("tau", lower=0, upper=n_count_data - 1)

idx = np.arange(n_count_data) # Index
lambda_ = pm.math.switch(tau >= idx, lambda_1,lambda_2)

observation = pm.Poisson("obs", lambda_, observed=count_data)

step = [pm.Metropolis(), pm.NUTS()]
trace = pm.sample(10000, tune=5000,step=step)
pm.traceplot(trace, ['lambda_1', 'lambda_2', 'tau'])
plt.show()

С распределением Пуассона:

С распределением Пуассона

Однако при использовании экспоненциальной случайной величины в этой модели:

observation = pm.Exponential("obs", lambda_, observed=count_data)

Я получил:

С экспоненциальным распределением: С экспоненциальным распределением

Причина, по которой я хочу использовать экспоненциальное распределение, заключается в использовании нецелых чисел.

Я не уверен, связана ли проблема с определением lambda_ или с чем-то еще (для этого необходим сэмплер).


person Amit Wolfenfeld    schedule 10.05.2017    source источник


Ответы (1)


Модели распределения Пуассона имеют значение.

Его также можно использовать в таких вещах, как сети очередей, для моделирования времени прибытия отдельных клиентов. Обратите внимание, что ожидаемое время между прибытиями клиентов будет обратным параметру скорости (обычно лямбда).

Можно подавать данные в процесс Пуассона в виде подсчетов за фиксированный выборочный интервал времени, например. сколько клиентов вы получили в день.

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

Распределение Пуассона используется для моделирования дискретных данных и дискретных подсчетов, которые имеют экспоненциальное распределение времени между последовательными подсчетами.

Они очень похожи внешне, но разные по характеру.

Вполне вероятно, что данные подсчета, которые были введены в экспоненциальное распределение, запутали весь процесс.

Другими словами, экспоненциальное распределение не является подходящей моделью, поскольку оно не может понять данные.

person Dylan Solms    schedule 15.08.2019