더북(TheBook)

이 모델로 코드를 만들어보자. 이 코드는 이전 코드와 매우 유사하다.

 


lambda_1 = pm.Exponential(“lambda_1”, alpha)
lambda_2 = pm.Exponential(“lambda_2”, alpha)
lambda_3 = pm.Exponential(“lambda_3”, alpha)
 
tau_1 = pm.DiscreteUniform(“tau_1”, lower=0, upper=n_count_data-1)
tau_2 = pm.DiscreteUniform(“tau_2”, lower=tau_1, upper=n_count_data)
 
@pm.deterministic
def lambda_(tau_1=tau_1, tau_2=tau_2,lambda_1=lambda_1, lambda_2=lambda_2, lambda_3 = lambda_3):
    out = np.zeros(n_count_data) # 데이터 포인트의 개수
    out[:tau_1] = lambda_1 # lambda_1은 tau 이전 lambda다. 
    out[tau_1:tau_2] = lambda_2
    out[tau_2:] = lambda_3 # lambda_2는 tau 이후 lambda다.
 
    return out
observation = pm.Poisson(“obs”, lambda_, value=count_data, observed=True)
model = pm.Model([observation, lambda_1, lambda_2, lambda_3, tau_1, tau_2])
mcmc = pm.MCMC(model)
mcmc.sample(40000, 10000)

 

 

결과

[—————–100%—————–] 40000 of 40000 complete in 19.5 sec

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.