I reparametrized using Lognormal instead of Binomial, as I converted raw lethal cases to lethal cases per hospitalized patients. However now I receive SamplingError and I can’t figure out what’s wrong
import pymc3 as pm
pre_mu = pre_nzk.mean()
pre_sd = pre_nzk.std() * 2
post_mu = post_nzk.mean()
post_sd = post_nzk.std() * 2
alpha = 1
beta = 5
with pm.Model() as model:
pre_rrt_mean = pm.Normal("pre_mean", mu=pre_mu, sigma=pre_sd)
post_rrt_mean = pm.Normal("post_mean", mu=post_mu, sigma=post_sd)
pre_std = pm.Gamma("pre_std", alpha=alpha, beta=beta)
post_std = pm.Gamma("post_std", alpha=alpha, beta=beta)
diff_of_means = pm.Deterministic("difference of means", pre_mean - post_mean)
diff_of_stds = pm.Deterministic("difference of stds", pre_std - post_std)
effect_size = pm.Deterministic(
"effect size", diff_of_means / np.sqrt((pre_std ** 2 + post_std ** 2) / 2)
)
group1 = pm.Lognormal("pre", mu=pre_mean, sigma=pre_std, observed=pre_nzk)
group2 = pm.Lognormal("post", mu=post_mean, sigma=post_std, observed=post_nzk)
trace = pm.sample(5000, target_accept=0.99)
And the error is:
SamplingError: Initial evaluation of model at starting point failed!
Starting values:
{'pre_mean': array(3.67540805), 'post_mean': array(2.31661707), 'pre_std_log__': array(-1.60943791), 'post_std_log__': array(-1.60943791)}
Initial evaluation results:
pre_mean -2.58
post_mean -1.99
pre_std_log__ -1.00
post_std_log__ -1.00
pre NaN
post -144.00
Name: Log-probability of test_point, dtype: float64