在pymc3中创建Emax模型

时间:2016-06-07 13:20:14

标签: pymc3

我正在尝试根据此视频中的数据和模型使用pymc3构建Emax模型。 (约40分钟)

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左右。所以我只能假设我在构建模型时犯了错误,但我不能为我的生活看到它是什么是

你能帮忙吗?

由于

标记

1 个答案:

答案 0 :(得分:0)

重新检查模型规范后,我发现resp_median实际上是该表达式的日志。所以......

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

改善了一切。但是我仍然不确定我是否正确指定了分布。有人指点吗?