더북(TheBook)

@pm.deterministic
def lambda_(tau=tau, lambda_1=lambda_1, lambda_2=lambda_2):
    out = np.zeros(n_count_data)
    out[:tau] = lambda_1  # lambda_1은 tau 이전 lambda다.
    out[tau:] = lambda_2  # lambda_2는 tau 이후 lambda다.
    return out

 

lambda_라는 새로운 함수를 생성한다. 그러나 우리는 이것을 이전의 확률변수 λ로 생각할 수 있다. lambda_1, lambda_2tau가 랜덤이므로 lambda_도 랜덤이 된다는 점에 주의하라. 아직 어느 변수도 고정하지 않았다.

@pm.deterministic은 PyMC에게 이것이 결정함수(deterministic function)라는 것을 알려주는 데코레이터(decorator)다. 만일 입력이 결정론적(deterministic)이라면 결과도 결정론적일 것이다.

 


observation = pm.Poisson(“obs”, lambda_, value=count_data, observed=True)
 
model = pm.Model([observation, lambda_1, lambda_2, tau])

 

observation 변수는 value 키워드로 데이터 변수인 count_data와 주어진 변수 lambda_, 그리고 우리가 구상한 데이터 생성 스키마를 합쳐 얻은 것이다. observed = True로 설정하여 PyMC에게 이 변수는 분석에서 고정되어야 한다는 것을 알려준다. 마지막으로 모든 관련 변수를 모아 Model 인스턴스를 만든다. 이렇게 하면 나중에 우리가 결과를 불러올 때 한층 일이 쉬워진다.

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