이 모델로 코드를 만들어보자. 이 코드는 이전 코드와 매우 유사하다.
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