Tren bekleme sürelerinin Bayesci modellenmesi: Model tanımı


12

Bu benim sık sık kamptan gelen ve Bayesci veri analizi yapmak için ilk denemem. A. Gelman'ın Bayesian Veri Analizinden bir dizi ders ve birkaç bölüm okudum.

Seçtiğim ilk az ya da çok bağımsız veri analizi örneği tren bekleme süreleridir. Kendi kendime sordum: bekleme sürelerinin dağılımı nedir?

Veri kümesi bir blogda sağlanmıştır ve PyMC dışında biraz farklı analiz edilmiştir.

Amacım, bu 19 veri girişi göz önüne alındığında beklenen tren bekleme sürelerini tahmin etmektir.

Yaptığım model şöyledir:

μN(μ^,σ^)

σ|N(0,σ^)|

λΓ(μ,σ)

ρPoisson(λ)

burada μ olan veriler ortalama ve σ 1000 ile çarpılır veriler standart sapmadır.μ^σ^

Beklenen bekleme süresini Poisson dağılımını kullanarak olarak modelledim . Bu dağılım için oran parametresi, Poisson dağılımına eşlenik dağılım olduğu için Gamma dağılımı kullanılarak modellenmiştir. Hiper önceki μ ve σ sırasıyla Normal ve Yarı-Normal dağılımları ile modellenmiştir. Standart sapma σ , mümkün olduğunca yaygın olmamak üzere mümkün olduğunca geniş hale getirildi.ρμσσ

Bir sürü sorum var

  • Bu model görev için uygun mu (modellemenin birkaç olası yolu?)?
  • Acemi hata yaptım mı?
  • Model basitleştirilebilir mi (basit şeyleri karmaşıklaştırma eğilimindeyim)?
  • Rate parametresi ( ) için posteriorun verilere uyup uymadığını nasıl doğrulayabilirim ?ρ
  • Örnekleri görmek için takılı Poisson dağılımından nasıl bazı örnekler alabilirim?

5000 Metropolis adımından sonraki posteriorlar şöyle görünür: İz grafikleri

Kaynak kodunu da gönderebilirim. Model montaj aşamasında, NUTS kullanarak ve σ parametreleri için adımlar yaparım . Sonra ikinci adımda ρ oran parametresi için Metropolis yapıyorum . Sonunda izi dahili araçları kullanarak çiziyorum.μσρ

Daha olasılıklı bir programlama yapmamı sağlayacak yorum ve yorumlar için çok minnettar olurum. Denemeye değer daha klasik örnekler olabilir mi?


İşte PyMC3 kullanarak Python'da yazdığım kod. Veri dosyasını burada bulabilirsiniz .

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()

Güzel bir soru, ancak başlığı düzenlemenizi öneririm: Sorularınız yazılıma oldukça agnostik ve modeli değerlendirmekle ilgili daha fazla görünüyor. Hatta ayrı, ilgili sorulara dilimlemek bile isteyebilirsiniz.
Sean Easter

@SeanEaster Teşekkürler! Başlığı kabul etmeme rağmen aslında yazılımla ilgili. Daha eksiksiz bir hikaye anlatırken aynı zamanda soruyu daha hantal ve potansiyel olarak daha kafa karıştırıcı hale getirebileceğinden, istek üzerine kaynak kodunu eklemeye hazırım. Aklıma daha genel bir şey gelmediği için başlığı düzenlemekten çekinmeyin.
Vladislavs Dovgalecs

Katılıyorum. Bence bunlar gerçekten iki soru. Modelleme sorularını yanıtlamaya çalıştım.
jaradniemi

Yanıtlar:


4

Önce size ne yapacağımı söyleyeceğim ve sonra sorularınıza cevap vereceğim.

Ne yaparım (en azından başlangıçta)

Postanızdan topladığım şey, 19 gözlem için eğitim bekleme süreniz var ve beklenen bekleme süresi hakkında çıkarım yapmak istiyorsunuz.

Wbenben=1,...,19benWbenR,+

Kullanılabilecek birkaç olası model varsayımı vardır ve 19 gözlemle hangi modelin daha makul olduğunu belirlemek zor olabilir. Bazı örnekler log-normal, gama, üstel, Weibull'dur.

Yben=günlük(Wben)

Yben~benndN-(μ,σ2).
μ|σ2~N-(m,σ2C)σ2~benG,(bir,b)
benG,p(μ,σ2)α1/σ2

E[Wben]=eμ+σ/2μσ2eμ+σ/2

Sorularınızı cevaplama

  • Bu model görev için uygun mu (modellemenin birkaç olası yolu?)?

λλ

  • Acemi hata yaptım mı?

Önceki yoruma bakın.

λ

Öncekiniz verilere bağlı olmamalıdır.

  • Model basitleştirilebilir mi (basit şeyleri karmaşıklaştırma eğilimindeyim)?

Evet ve olmalı. Modelleme yaklaşımımı görün.

  • Rate parametresi ( ρ ) için posteriorun verilere uyup uymadığını nasıl doğrulayabilirim ρ

ρλ

  • Örnekleri görmek için takılı Poisson dağılımından nasıl bazı örnekler alabilirim?

Posterior bir öngörü dağılımı istediğinize inanıyorum. MCMC'nizdeki her yineleme için, bu yinelemenin parametre değerlerini ekler ve bir örnek alırsınız.


Bir ton teşekkürler! Cevabınızı oldukça hızlı okudum. Sindirmek, bazı dağılımlar ve kavramlar için referanslar bulmak ve PyMC'de uygulamaya çalışmak için biraz zamana ihtiyacım olacak. Btw, sadece denemem için Python kodunu ekledim.
Vladislavs Dovgalecs
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.