2013-07-28 3 views
0

저는 PyMC (https://github.com/pymc-devs/pymc)의 초보자이며 모델이 생성 될 때마다 작은 구성의 상미 분 방정식 (ODE)을 근본적으로 해결하는 동적 구성 요소를 사용하여 모델을 구성하려고합니다. 라는.PyMC의 동적 (ODE 기반) 모델

나는 여기에 구글과 내 능력의 최고의 모델 구조 (pk_model.py) 및 발신자 (pk_fit.py)와 온에 (사용되지 않음) PyMC 메일 링리스트를 검색 한 :

https://gist.github.com/gyromagnetic/6097271

pk_fit을 실행하면 처음에는 작동하지만 ODE 해결사와 관련된 많은 오류 메시지가 덤프됩니다. ODE 및 솔버 (PyMC 코드와 통합되지 않음)의 독립 실행 형 버전이 정상적으로 작동합니다.

다양한 인쇄 문을 사용하면 코드가 처음 작동하지만 일부 지점에서는 알려지지 않은 매개 변수 인수 (kcp, kpc, ke)가 스칼라에서 numpy.ndarrays로 변경됩니다. 이것은 문제의 일부인 것처럼 보입니다.

PyMC로 신생아이기 때문에 나는 분명히 잘못된 것을하고 있다고 생각합니다.

나는 이것에 대한 도움을 크게 주시면 감사하겠습니다.

답변

2

맞습니다. PyMC는 확률적인 매개 변수 값을 모델에 numpy.ndarrays로 제공하므로 미분 계산 전에 파이썬 스칼라 (첫 번째 항목 가져 오기)로 다시 변환하면됩니다. 예를 들어

, 코드에서 : 당신이 관찰 된 데이터의 큰 배열을 처리하는 경우 또한

dcc_dt = k1.item() * y_cp - (k2.item() + k3.item()) * y_cc 
dcp_dt = k2.item() * y_cc - k1.item() * y_cp 

, 난 당신이 사이 썬, Boost.Python를 사용하여 파이썬 확장으로 ODE 모델을 변환 조사 제안 또는 유사합니다. MCMC에서 수천 번 샘플링해야하는 경우 솔루션의 속도가 현저히 빨라집니다. 나는 후자를 odeint 라이브러리와 함께 사용하여 ODE 모델을 작성했으며 순수 Python 버전보다 150 배 빠른 속도를 얻을 수있었습니다.