ट्रेन प्रतीक्षा समय की बायेसियन मॉडलिंग: मॉडल परिभाषा


12

बायसीयन डेटा विश्लेषण करने के लिए लगातार शिविर से आने वाले किसी व्यक्ति के लिए यह मेरा पहला प्रयास है। मैं ए जेलमैन द्वारा बायेसियन डेटा एनालिसिस से कई ट्यूटोरियल और कुछ अध्याय पढ़ता हूं।

पहले या कम स्वतंत्र डेटा विश्लेषण उदाहरण के रूप में मैंने उठाया ट्रेन प्रतीक्षा समय है। मैंने खुद से पूछा: प्रतीक्षा समय का वितरण क्या है?

डेटासेट एक ब्लॉग पर उपलब्ध कराया गया था और इसका विश्लेषण थोड़ा अलग और PyMC के बाहर किया गया था।

मेरा लक्ष्य उन 19 डेटा प्रविष्टियों को देखते हुए अपेक्षित ट्रेन प्रतीक्षा समय का अनुमान लगाना है।

मेरे द्वारा बनाया गया मॉडल निम्नलिखित है:

μN(μ^,σ^)

σ|N(0,σ^)|

λΓ(μ,σ)

ρPoisson(λ)

जहाँ डेटा माध्य है और डेटा मानक विचलन 1000 से गुणा है। σμ^σ^

मैंने पॉइज़न वितरण का उपयोग करके अपेक्षित प्रतीक्षा समय को रूप में निर्धारित किया है। इस वितरण के लिए दर पैरामीटर को गामा वितरण का उपयोग करके तैयार किया गया है क्योंकि यह पॉइसन वितरण के लिए संयुग्मित वितरण है। हाइपर- priors और क्रमशः सामान्य और आधा-सामान्य वितरण के साथ मॉडलिंग की गई थी। मानक विचलन जितना संभव हो उतना व्यापक बनाया गया था, जितना संभव हो उतना गैर-कम्यूटिकल ।।μ σ σρμσσ

मेरे पास सवालों का एक गुच्छा है

  • क्या यह मॉडल कार्य के लिए उचित है (मॉडल के कई संभावित तरीके?)
  • क्या मैंने कोई शुरुआत की है?
  • क्या मॉडल को सरल बनाया जा सकता है (मैं सरल चीजों को जटिल करता हूं)?
  • अगर रेट पैरामीटर ( ) वास्तव में डेटा फिटिंग कर रहा है तो मैं कैसे सत्यापित कर सकता हूं ?ρ
  • मैं नमूनों को देखने के लिए फिट पोइसन वितरण से कुछ नमूने कैसे खींच सकता हूं?

5000 महानगरों के बाद के पोस्टर्स इस तरह दिखते हैं: ट्रेस प्लॉट

मैं सोर्स कोड भी पोस्ट कर सकता हूं। मॉडल फिटिंग चरण में मैं NUTS का उपयोग करके पैरामीटर और लिए चरण करता हूं । फिर दूसरे चरण में मैं रेट पैरामीटर लिए मेट्रोपोलिस करता हूं । अंत में मैं इनबिल्ट टूल्स का उपयोग करके ट्रेस प्लॉट करता हूं।μσρ

मैं किसी भी टिप्पणी और टिप्पणियों के लिए बहुत आभारी रहूंगा जो मुझे अधिक संभावनावादी प्रोग्रामिंग को समझने में सक्षम करेगा। हो सकता है कि अधिक क्लासिक उदाहरण हैं जिनके साथ प्रयोग करने लायक हैं?


यहाँ कोड है जिसे मैंने 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()

एक अच्छा सवाल है, लेकिन मैं आपको शीर्षक संपादित करने का सुझाव देता हूं: आपके प्रश्न सॉफ्टवेयर के बजाय अज्ञेयवादी हैं, और मॉडल के मूल्यांकन के बारे में अधिक प्रतीत होते हैं। तुम भी इसे अलग, संबंधित सवालों में टुकड़ा करना चाहते हो सकता है।
शॉन ईस्टर

@ सीनियर धन्यवाद! यह वास्तव में सॉफ्टवेयर से संबंधित है, हालांकि मैं शीर्षक के बारे में सहमत हूं। मैं अनुरोध पर स्रोत कोड जोड़ने के लिए तैयार हूं क्योंकि यह अधिक संपूर्ण कहानी बताता है, लेकिन यह प्रश्न को अधिक डरावना और संभावित रूप से अधिक भ्रमित कर सकता है। शीर्षक को संपादित करने के लिए स्वतंत्र महसूस करें क्योंकि मेरे दिमाग में अधिक सामान्य कुछ भी नहीं आता है।
व्लादिस्लाव डोभालगस

मैं सहमत हूँ। मुझे लगता है कि ये वास्तव में दो प्रश्न हैं। मैंने मॉडलिंग के सवाल का जवाब देने की कोशिश की।
jaradniemi

जवाबों:


4

मैं आपको पहले बताऊंगा कि मैं क्या करूंगा और फिर मैं आपके द्वारा पूछे गए विशिष्ट प्रश्नों का उत्तर दूंगा।

मैं क्या करता (कम से कम शुरू में)

यहां मैं आपके पोस्ट से इकट्ठा हुआ हूं, आपके पास 19 टिप्पणियों के लिए प्रतीक्षा समय का प्रशिक्षण है और आप अपेक्षित प्रतीक्षा समय के बारे में निष्कर्ष निकालना चाहते हैं।

मैं परिभाषित करेगा के लिए ट्रेन के लिए इंतज़ार कर रहे समय होने के लिए । मुझे कोई कारण नहीं दिख रहा है कि ये प्रतीक्षा समय पूर्णांक होना चाहिए, इसलिए मैं कि वे सकारात्मक मात्रा में हैं, अर्थात । मैं मान रहा हूँ कि सभी प्रतीक्षा समय वास्तव में देखे गए हैं।Wii=1,,19iWiR+

कई संभावित मॉडल धारणाएं हैं जिनका उपयोग किया जा सकता है और 19 टिप्पणियों के साथ यह निर्धारित करना कठिन हो सकता है कि कौन सा मॉडल अधिक उचित है। कुछ उदाहरण लॉग-सामान्य, गामा, घातीय, वीबुल हैं।

पहले मॉडल के रूप में, मैं मॉडलिंग करने का सुझाव और फिर इस विकल्प के साथ, आपके पास मौजूद सामान्य सिद्धांत के धन तक पहुंच है, उदाहरण के लिए पहले एक संयुग्म। पूर्ववर्ती संयुग्म एक सामान्य-उलटा-गामा वितरण है, यानी जहाँ is the) उलटा गामा वितरण। वैकल्पिक रूप से, आप डिफ़ॉल्ट पूर्व उपयोग कर सकते हैं जिस स्थिति में पीछे एक सामान्य-उलटा-गामा वितरण भी है।Yi=log(Wi)

YiindN(μ,σ2).
मैं जी पी ( μ , σ 2 ) α 1 / σ 2
μ|σ2N(m,σ2C)σ2IG(a,b)
IGp(μ,σ2)1/σ2

चूंकि , हम उनके प्रतिवर्ती वितरण से और संयुक्त नमूने खींचकर अपेक्षित प्रतीक्षा समय के बारे में प्रश्नों का उत्तर दे सकते हैं , जो एक सामान्य-व्युत्क्रम है। -गामा वितरण, और फिर इनमें से प्रत्येक नमूने के लिए गणना । उम्मीद के इंतजार के समय के बाद से यह नमूने। μ σ 2 μ + σ / 2E[Wi]=eμ+σ/2μσ2eμ+σ/2

आपके सवालों का जवाब दे रहा हूं

  • क्या यह मॉडल कार्य के लिए उचित है (मॉडल के कई संभावित तरीके?)

एक Poisson डेटा के लिए उपयुक्त नहीं है जो गैर-पूर्णांक मूल्यवान हो सकता है। आपके पास केवल एक ही और इसलिए आप उस गामा वितरण के मापदंडों को नहीं सीख सकते जो आपने को सौंपा है । यह कहने का एक और तरीका यह है कि आपने एक पदानुक्रमित मॉडल बनाया है, लेकिन डेटा में कोई पदानुक्रमित संरचना नहीं है।λλλ

  • क्या मैंने कोई शुरुआत की है?

पिछली टिप्पणी देखें।

λ

आपका पूर्व डेटा पर निर्भर नहीं होना चाहिए।

  • क्या मॉडल को सरल बनाया जा सकता है (मैं सरल चीजों को जटिल करता हूं)?

हाँ और यह चाहिए। मेरे मॉडलिंग दृष्टिकोण को देखें।

  • ρ

ρλ

  • मैं नमूनों को देखने के लिए फिट पोइसन वितरण से कुछ नमूने कैसे खींच सकता हूं?

मेरा मानना ​​है कि आप एक पश्चवर्ती पूर्वानुमान वितरण चाहते हैं। आपके MCMC में प्रत्येक पुनरावृत्ति के लिए, आप उस पुनरावृत्ति के लिए पैरामीटर मानों में प्लग इन करते हैं और एक नमूना लेते हैं।


अनेक अनेक धन्यवाद! मैं आपके जवाब को जल्दी से पढ़ता हूं। मुझे इसे पचाने के लिए कुछ समय की आवश्यकता होगी, कुछ वितरण और अवधारणाओं के संदर्भ खोजें और इसे PyMC में लागू करने का प्रयास करें। Btw, मैंने सिर्फ अपने प्रयोग के लिए पायथन कोड जोड़ा है।
व्लादिस्लाव डोभालगस 18
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.