2016-06-07 3 views
0

Я пытаюсь построить модель Emax с использованием pymc3 на основе модели данных и в этом видео .. (около 40mins в)Создание Emax модели в pymc3

https://www.youtube.com/watch?v=U9Nf-ZYHRQA&feature=youtu.be&list=PLvLDbH2lpyXNGV8mpBdF7EFK9LQJzGL-Y

Вот снимок экрана, показывающий модель ... enter image description here

Мой код здесь ...

pkpd_model = Model() 

with pkpd_model: 

# Hyperparameter Priors 
mu_e0 = Normal('mu_e0', mu=0, tau =1000) 
tau_e0 = Uniform('tau_e0', lower=0, upper =100) 

mu_emax = Normal('mu_emax', mu=0, tau =1000) 
tau_emax = Uniform('tau_emax', lower=0, upper =100) 

e0 = Lognormal('e0', mu = mu_e0, tau=tau_e0, shape =n_studies) 
emax= Lognormal('emax', mu = mu_emax, tau =tau_emax, shape =n_studies) 
ed50 = Lognormal('ed50', mu=1, tau = 1000) 

# Normalise sigma for sample size 
sigma = np.sqrt(np.square(Uniform('sigma', lower = 0, upper = 1000))/n) 


# Expected value of outcome 
resp_median = e0[study] + (emax[study]*dose)/(ed50+dose) 


# Likelihood (sampling distribution) of observations 
resp = Lognormal('resp', mu=resp_median, tau =sigma, observed =mean_response) 
resp_pred = Lognormal('resp_pred', mu=resp_median, tau =sigma, shape =len(dose)) 

модель г не подходит и подходит хорошо, его просто, что задние оценки для параметра модели не близки к тому, что я ожидаю. например, моя оценка emax составляет около 2, но вы можете ясно видеть, что из данных должно быть около 10. Поэтому я могу только предположить, что я сделал ошибку при построении модели, но я не могу, чтобы жизнь меня видна, что это является.

Вы можете помочь?

Благодаря

Все

ответ

0

После пересматривают модели, спецификации, я увидел, что на самом деле resp_median логарифм этого выражения. Так ...

esp_median = np.log(e0[study] + (emax[study]*dose)/(ed50+dose)) 

улучшает ситуацию. Однако я все еще не уверен, что я правильно определил дистрибутивы. Любые указатели?

Смежные вопросы