2014-10-16 4 views
4

저는 PyMC를 사용하여 모델 매개 변수를 추정하려고합니다. 특히 관측 된 데이터는 두 개의 서로 다른 확률 변수의 합으로 모델링됩니다 : 음 이항 및 포아송.PyMC가 임의 변수의 합계에 대한 데이터를 관찰했습니다.

PyMC에서 임의 변수의 대수 조합은 "결정 론적"객체로 설명됩니다. 관측 된 데이터를이 결정론 적 객체에 할당 할 수 있습니까?

가능한 경우 우리는 여전히 합계의 PDF가 구성 요소의 PDF의 회선임을 알고 있습니다. 이 컨볼 루션을 효율적으로 계산하는 트릭이 있습니까?

답변

5

PyMC2에서 deterministic 노드를 볼 수는 없지만 컨볼 루션의 한 부분을 잠정적 변수로 만들면 동일한 모델을 얻을 수 있습니다. 다음은 작은 예입니다.

def model(values): 
    # priors for model parameters 
    mu_A = pm.Exponential('mu_A', beta=1, value=1) 
    alpha_A = pm.Exponential('alpha_A', beta=1, value=1) 
    mu_B_minus_A = pm.Uninformative('mu_B_minus_A', value=1) 

    # latent variable for negative binomial 
    A = pm.NegativeBinomial('A', mu=mu_A, alpha=alpha_A, value=0) 

    # observed variable for conditional poisson 
    B = pm.Poisson('B', mu=mu_B_minus_A+A, value=values, observed=True) 

    return locals() 

여기에 a notebook that tests it out입니다. 모델 매개 변수에 대한 추가 정보 없이는 적합하지 않은 것처럼 보입니다. 아마도 관측 된 확률 론적으로 사용할 수있는 NB와 포아송의 컨볼 루션을 계산하거나 근사하는 영리한 방법이있을 것입니다.