2016-05-23 43 views
1

我無法找到這樣的例子兩個人的結合,或者我沒有看到類似我的問題:模型中的分佈是

我試着多態分佈,看起來就好像它是模型由兩個卡方分佈的總和定義(儘管可以採用任何分佈組合)。

現在我不知道如何「嫁」的分佈。我期待這樣的事情,但它不會以這種方式工作:

從pymc3進口型號,HalfNormal,find_MAP,樣品,traceplot,ChiSquared,確定性 basic_model =模型()

with basic_model: 
    nu1 = HalfNormal("nu1", sd = 1) 
    nu2 = HalfNormal("nu2", sd = 1) 
    cs1 = ChiSquared("cs1", nu = nu1) 
    cs2 = ChiSquared("cs2", nu = nu2) 
    # this is wrong, but it shows what I would like to achieve: 
    Y_obs = Deterministic("Y_obs", cs1, cs2, observed = tx) 
    start = find_MAP(model = basic_model) 
    trace = sample(2000, start = start) 

traceplot(trace) 

我會怎麼做?新的函數應該像這個模型的東西:

enter image description here

回答

1

檢查下面的模型,該模型假定你的數據是二卡方分佈的混合。這種型號的名稱是混合物型號。這裏,分類分佈用於將每個數據點分配給兩個卡方分佈中的一個。你可能需要適應你的問題,但我認爲這是一個好的開始。

with pm.Model() as model: 
    nus = pm.HalfCauchy('nus', beta=10, shape=2) 

    category = pm.Categorical('category', p=[0.5, 0.5], shape=len(x)) 

    obs = pm.ChiSquared('obs', nu=nus[category], observed=x) 

    step = pm.ElemwiseCategorical(vars=[category], values=[0, 1]) 
    trace = pm.sample(1000, step) 
+0

謝謝!我現在正在嘗試。文檔中缺少'ElemwiseCategorical'?我無法在任何地方找到那個。 – Xiphias

+0

啊,[這裏](https://github.com/pymc-devs/pymc3/blob/master/pymc3/step_methods/gibbs.py)它是在代碼。但是沒有文檔,對吧? – Xiphias

+0

文檔中有一些最近的變化,我也在'ElewiseCategorical'函數中考慮過。 – aloctavodia