我是PyMC3
的新手,試圖找到一組適合實驗數據的參數。我的問題是,我的可能性功能是以參與者以前的答覆爲條件的。pymc3條件確定性似然函數
的數據具有以下矩陣形式:
participant | trial0 | trial1 | ... | trialn
p0 | x | x | ... | x
....
p1 | x | x | ... | x
其中X編纂了參與者在該試驗的反應,與0, 1, or 2
值。現在,我有興趣推斷每位參與者的可能參數p。爲簡單起見,假設參加者可以是三種類型之一,T1,T2,T3的,並且有一第三參數升橫跨保持這些類型的常量。我想推斷在整個實驗中給定她的行爲的每個參與者的可能類型,參與者類型的一般分佈以及最適合於l。
問題:我的似然函數,叫它lhs,是確定性的;插入參與者類型(t = {1,2,3}),值爲l,以及參與者的過去響應,它會給你觀察到的數據的概率x = {0, 1,2}在目前的審判。我的問題是,我不知道如何告訴PyMC3模型,對於每個響應(0,1或2)在試驗n,似然函數取決於直到n的試驗中的響應順序。我需要這個,因爲在每次試用後,lhs更新了試驗的價值(參與者在實驗中學習,所以他們顯示特定響應的可能性也會改變。
我假設有一種聰明的方法來編碼每次試驗的反應,以便模型在試驗n > 0
處遞歸地計算每個反應的似然函數,或者有一種功能可以告訴它數據依賴於先前的數據。唉,我有沒有找到任何想法如何工作的任何例子。
這是我有什麼:
import numpy as np
import pymc3 as pm
#data is a pandas dataframe where each row
#is a participant, each column a trial, and
#each cell has value 0,1, or 2.
with pm.Model() as model:
#Priors
l = pm.Gamma('lam',10,1.0/0.5) #my prior for the value of l
p_tau = pm.Dirichlet('p_tau',np.ones(3)) #unbiased prior over types
tau = pm.Categorical('tau', p=p_tau, shape=3) #distr. over types I want to infer
#data likelihood function
lhs = ... #likelihood function; takes l, tau,
#and sequentially observed data up to trial n-1
#to compute the likelihood of the response of trial n
#Here's the issue. data would be 0,1,2
#But lhs should depend on previous trials
pm.Categorical('obs', p=lhs, observed=data)
關於模型的建議,數據編碼或具有類似特徵的已實施PyMC3
模型的示例將不勝感激。
我遺漏了未指定的可能性,因爲相當長。