コード例 #1
0
    }
"""

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))
コード例 #2
0
ファイル: air.py プロジェクト: waternk/bugs
        }
        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)