Байєсське моделювання часу очікування поїздів: Визначення моделі


12

Це моя перша спроба, щоб хтось із табору часто виявився для аналізу байєсівських даних. Я прочитав ряд навчальних посібників та декілька розділів з Байєсівського аналізу даних А. Гельмана.

Як перший, більш-менш незалежний приклад аналізу даних, який я вибрав, є час очікування поїздів. Я запитав себе: який розподіл часу очікування?

Набір даних був наданий у блозі та був проаналізований дещо інакше та поза PyMC.

Моя мета - оцінити очікувані терміни очікування поїздів, враховуючи ці 19 даних.

Модель, яку я побудувала, є наступною:

мкN(мк^,σ^)

σ|N(0,σ^)|

λΓ(мк,σ)

ρПоiссон(λ)

де - середнє значення даних, а - стандартне відхилення даних, помножене на 1000.мк^σ^

Я моделював передбачуваний час очікування , як , використовуючи розподіл Пуассона. Параметр швидкості для цього розподілу моделюється за допомогою розподілу Gamma, оскільки він є кон'югованим розподілом з розподілом Пуассона. Гіперприори та були змодельовані відповідно до нормальних та пів-нормальних розподілів. Стандартне відхилення було зроблено якомога ширше, щоб бути якомога більш некомерційним.ρмкσσ

У мене є маса питань

  • Чи обґрунтована ця модель для завдання (кілька можливих способів моделювання?)?
  • Чи робив я помилки початківців?
  • Чи можна спростити модель (я схильний до складних простих речей)?
  • Як я можу перевірити, чи задній параметр швидкості ( ) насправді відповідає даним?ρ
  • Як я можу намалювати деякі зразки з пристосованого розподілу Пуассона, щоб побачити зразки?

Плакати після 5000 кроків метрополії виглядають так: Слідові сюжети

Я також можу розмістити вихідний код. На етапі підгонки моделі я виконую кроки для параметрів та за допомогою NUTS. Потім на другому кроці я роблю Metropolis для параметра швидкості . Нарешті, я будувати трасування за допомогою вбудованих інструментів.мкσρ

Я був би дуже вдячний за будь-які зауваження та коментарі, які б дали мені змогу зрозуміти більш імовірнісне програмування. Можливо, є ще класичні приклади, з якими варто експериментувати?


Ось код, який я написав у Python за допомогою PyMC3. Файл даних можна знайти тут .

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import pymc3

from scipy import optimize

from pylab import figure, axes, title, show

from pymc3.distributions import Normal, HalfNormal, Poisson, Gamma, Exponential
from pymc3 import find_MAP
from pymc3 import Metropolis, NUTS, sample
from pymc3 import summary, traceplot

df = pd.read_csv( 'train_wait.csv' )

diff_mean = np.mean( df["diff"] )
diff_std = 1000*np.std( df["diff"] )

model = pymc3.Model()

with model:
    # unknown model parameters
    mu = Normal('mu',mu=diff_mean,sd=diff_std)
    sd = HalfNormal('sd',sd=diff_std)

    # unknown model parameter of interest
    rate = Gamma( 'rate', mu=mu, sd=sd )

    # observed
    diff = Poisson( 'diff', rate, observed=df["diff"] )

with model:
    step1 = NUTS([mu,sd])
    step2 = Metropolis([rate])
    trace = sample( 5000, step=[step1,step2] )

plt.figure()
traceplot(trace)
plt.savefig("rate.pdf")
plt.show()
plt.close()

Приємне запитання, але я пропоную вам відредагувати заголовок: Ваші запитання досить агресивні до програмного забезпечення та, здається, більше стосуються оцінки моделі. Ви навіть можете розрізати його окремими, пов'язаними питаннями.
Шон Пасха

@SeanEaster Дякую! Це насправді пов'язане з програмним забезпеченням, хоча я погоджуюся щодо назви. Я готовий додати вихідний код на запит, оскільки він розповідає більш повну історію, але може також зробити питання більш об'ємним та потенційно більш заплутаним. Не соромтесь редагувати заголовок, оскільки нічого більш загального не спадає на думку.
Владислав Довгалеч

Я згоден. Я думаю, це справді два питання. Я спробував відповісти на питання моделювання.
jaradniemi

Відповіді:


4

Я скажу тобі спершу, що я б робив, а потім відповім на конкретні запитання, які ти мав.

Що б я робив (принаймні спочатку)

Ось, що я збираю з вашої публікації, у вас є час очікування на 19 спостережень, і вас цікавить висновок про очікуваний час очікування.

Wii=1,,19iWiR+

Існує кілька можливих припущень щодо моделей, які можна використати, і з 19 спостережень може бути важко визначити, яка модель є більш розумною. Деякі приклади - це нормальний журнал, гамма, експонентність, Вейбул.

Yi=журнал(Wi)

YiiнгN(мк,σ2).
мк|σ2N(м,σ2С)σ2ЯГ(а,б)
ЯГp(мк,σ2)1/σ2

Е[Wi]=емк+σ/2мкσ2емк+σ/2

Відповідаючи на ваші запитання

  • Чи обґрунтована ця модель для завдання (кілька можливих способів моделювання?)?

λλ

  • Чи робив я помилки початківців?

Дивіться попередній коментар.

λ

Ваш попередній не повинен залежати від даних.

  • Чи можна спростити модель (я схильний до складних простих речей)?

Так і слід. Дивіться мій підхід до моделювання.

  • ρ

ρλ

  • Як я можу намалювати деякі зразки з пристосованого розподілу Пуассона, щоб побачити зразки?

Я вважаю, що ви хочете заднього прогнозного розподілу. Для кожної ітерації в MCMC ви підключаєте значення параметрів для цієї ітерації та берете вибірку.


Дякую тонну! Я читаю вашу відповідь досить швидко. Мені знадобиться певний час, щоб переварити його, знайти посилання на деякі дистрибутиви та концепції та спробувати реалізувати його в PyMC. До речі, я щойно додав код Python для свого експерименту.
Владислав Довгалець
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.