Mô hình Bayes về thời gian chờ tàu: Định nghĩa mô hình


12

Đây là nỗ lực đầu tiên của tôi cho ai đó đến từ trại thường xuyên thực hiện phân tích dữ liệu Bayes. Tôi đã đọc một số hướng dẫn và một vài chương từ Phân tích dữ liệu Bayes của A. Gelman.

Như ví dụ phân tích dữ liệu độc lập ít nhiều đầu tiên tôi chọn là thời gian chờ tàu. Tôi tự hỏi: phân phối thời gian chờ đợi là gì?

Bộ dữ liệu được cung cấp trên một blog và được phân tích hơi khác và ngoài PyMC.

Mục tiêu của tôi là ước tính thời gian chờ tàu dự kiến ​​với 19 mục nhập dữ liệu đó.

Mô hình tôi xây dựng như sau:

μN(μ^,σ^)

σ|N(0,σ^)|

λΓ(μ,σ)

ρPoisson(λ)

nơi μ là dữ liệu có nghĩa và σ là dữ liệu chuẩn độ lệch nhân với 1000.μ^σ^

ρμσσ

Tôi có một loạt các câu hỏi

  • Mô hình này có hợp lý cho nhiệm vụ không (một số cách có thể để mô hình hóa?)?
  • Tôi đã phạm sai lầm mới bắt đầu?
  • Mô hình có thể được đơn giản hóa (tôi có xu hướng phức tạp hóa những điều đơn giản)?
  • ρ
  • Làm cách nào tôi có thể vẽ một số mẫu từ phân phối Poisson được trang bị để xem các mẫu?

Các hậu thế sau 5000 bước của Metropolis trông như thế này: Âm mưu

μσρ

Tôi sẽ rất biết ơn về bất kỳ nhận xét và nhận xét nào cho phép tôi nắm bắt được chương trình xác suất hơn. Có thể có nhiều ví dụ cổ điển đáng thử nghiệm hơn?


Đây là đoạn mã tôi đã viết bằng Python bằng PyMC3. Các tập tin dữ liệu có thể được tìm thấy ở đây .

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

Một câu hỏi hay, nhưng tôi khuyên bạn nên chỉnh sửa tiêu đề: Các câu hỏi của bạn khá không rõ ràng đối với phần mềm và có vẻ nhiều hơn về việc đánh giá mô hình. Bạn thậm chí có thể muốn cắt nó thành các câu hỏi liên quan, riêng biệt.
Sean Easter

@SeanEaster Cảm ơn! Nó thực sự liên quan đến phần mềm, mặc dù tôi đồng ý về tiêu đề. Tôi sẵn sàng thêm mã nguồn theo yêu cầu vì nó kể câu chuyện hoàn chỉnh hơn nhưng cũng có thể khiến câu hỏi trở nên cồng kềnh hơn và có khả năng gây nhầm lẫn hơn. Hãy thoải mái chỉnh sửa tiêu đề vì không có gì chung chung hơn trong tâm trí của tôi.
Vladislavs Dovgalecs

Tôi đồng ý. Tôi nghĩ rằng đây thực sự là hai câu hỏi. Tôi đã cố gắng trả lời (các) câu hỏi mô hình.
jaradniemi

Câu trả lời:


4

Tôi sẽ cho bạn biết trước tiên tôi sẽ làm gì và sau đó tôi sẽ trả lời các câu hỏi cụ thể mà bạn có.

Những gì tôi sẽ làm (ít nhất là ban đầu)

Đây là những gì tôi thu thập được từ bài viết của bạn, bạn có thời gian chờ đào tạo cho 19 quan sát và bạn quan tâm đến việc suy luận về thời gian chờ đợi dự kiến.

Wii=1,,19iWiR+

Có một số giả định mô hình có thể có thể được sử dụng và với 19 quan sát, có thể khó xác định mô hình nào hợp lý hơn. Một số ví dụ là log-normal, gamma, mũ, Weibull.

Yi=log(Wi)

YiindN(μ,σ2).
μ|σ2N(m,σ2C)σ2IG(a,b)
IGp(μ,σ2)1/σ2

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

Trả lời câu hỏi của bạn

  • Mô hình này có hợp lý cho nhiệm vụ không (một số cách có thể để mô hình hóa?)?

λλ

  • Tôi đã phạm sai lầm mới bắt đầu?

Xem bình luận trước.

λ

Trước của bạn không nên phụ thuộc vào dữ liệu.

  • Mô hình có thể được đơn giản hóa (tôi có xu hướng phức tạp hóa những điều đơn giản)?

Có và nó nên. Xem cách tiếp cận mô hình của tôi.

  • ρ

ρλ

  • Làm cách nào tôi có thể vẽ một số mẫu từ phân phối Poisson được trang bị để xem các mẫu?

Tôi tin rằng bạn muốn một phân phối dự báo sau. Đối với mỗi lần lặp trong MCMC của bạn, bạn cắm các giá trị tham số cho lần lặp đó và lấy một mẫu.


Cảm ơn rất nhiều! Tôi đọc câu trả lời của bạn khá nhanh. Tôi sẽ cần một chút thời gian để tiêu hóa nó, tìm các tài liệu tham khảo cho một số bản phân phối và khái niệm và cố gắng thực hiện nó trong PyMC. Btw, tôi vừa thêm mã Python cho thí nghiệm của mình.
Vladislavs Dovgalecs
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.