} """ from bumps.names import * from bugs.parse import load, define_pars from bugs.model import logit, probit, cloglog, inverse, dnorm_llf, dbin_llf # data: N=8, x[N],n[N],r[N] vars = "x n r N".split() _, data = load('../examples/Beetlesdata.txt') x, n, r, N = (data[p] for p in vars) xbar = np.mean(x) # init: alpha.star, beta pars = 'alpha.star,beta'.split(',') _, init = load('../examples/Beetlesinits.txt') p0, labels = define_pars(init, pars) model_name = sys.argv[1] if len(sys.argv) > 1 else 'logit' available_models = { 'logit': logit, 'probit': probit, 'cloglog': cloglog, } inv_p_model = inverse[available_models[model_name]] def nllf(pars): cost = 0 alpha_star, beta = pars p = np.array([inv_p_model(alpha_star + beta * (xi - xbar)) for xi in x]) cost += np.sum(dbin_llf(r, p, n))
} theta[1] ~ dnorm(0.0, 0.001) theta[2] ~ dnorm(0.0, 0.001) } """ from bumps.names import * from bugs.parse import load, define_pars from bugs.model import dbin_llf, dnorm_llf, logit, inverse # J=3, y[J], n[J], Z[J], tau, alpha, beta _, data = load('../examples/Airdata.txt') # J = data["J"] # theta[2], X[J] _, init = load('../examples/Airinits.txt') p0, labels = define_pars(init, ("theta", "X")) def nllf(pars): theta, X = pars[0:2], pars[2:] p = np.array([inverse[logit](theta[0] + theta[1] * Xj) for Xj in X]) mu = data["alpha"] + data["beta"] * data["Z"] cost = 0 cost += np.sum(dbin_llf(data["y"], p, data["n"])) cost += np.sum(dnorm_llf(X, mu, data["tau"])) cost += dnorm_llf(theta[0], 0.0, 0.001) cost += dnorm_llf(theta[1], 0.0, 0.001) return -cost problem = DirectProblem(nllf, p0, labels=labels, dof=1)