Exemplo n.º 1
0
# Parameters relating to youth data
model.add_node(bd.Node("offset", bd.Normal(0.0, 1.0)))
model.add_node(bd.Node("policy_effect", bd.Cauchy(0.0, 0.1)))
model.add_node(bd.Node("L2", bd.LogUniform(1E-2, 1E2)))
model.add_node(bd.Node("beta2", bd.LogUniform(1E-3, 1E3)))
model.add_node(bd.Node("alpha2", bd.Delta("exp(-1.0/L2)")))
model.add_node(bd.Node("sigma2", bd.Delta("beta2/sqrt(1.0 - alpha2*alpha2)")))

for i in range(0, data["N"]):
    name = "youth{i}".format(i=i)
    mean = "adult{i} + offset + ((t{i} >= 90.0)?(policy_effect):(0.0))"\
                                                                .format(i=i)
    sd = "sigma2"
    if i > 0:
        ar1_mean = "{mean} + alpha2*(youth{k} - ({mean}))".format(mean=mean,\
                                    k=(i-1))
        mean = ar1_mean
        sd = "beta2"

    dist = bd.Normal(mean, sd)
    model.add_node(bd.Node(name, dist, observed=True))

# Create the C++ code
bd.generate_h(model, data)
bd.generate_cpp(model, data)

# Compile the C++ code so it's ready to go
import os
os.system("make")

Exemplo n.º 2
0
data = {"x": np.array([1.0, 2.0, 3.0, 4.0, 5.0]),\
        "y": np.array([1.0, 2.0, 3.0, 3.9, 5.1]),\
        "N": 5}

# Create the model
model = bd.Model()

# Slope and intercept
model.add_node(bd.Node("m", bd.Uniform(-100.0, 100.0)))
model.add_node(bd.Node("b", bd.Uniform(-100.0, 100.0)))

# Noise standard deviation
model.add_node(bd.Node("log_sigma", bd.Uniform(-10.0, 10.0)))
model.add_node(bd.Node("sigma", bd.Delta("exp(log_sigma)")))

# p(data | parameters)
for i in range(0, data["N"]):
    name = "y{index}".format(index=i)
    mean = "m*x{index} + b".format(index=i)
    model.add_node(bd.Node(name, bd.Normal(mean, "sigma"), observed=True))

# Create the C++ code
bd.generate_h(model, data)
bd.generate_cpp(model, data)

# Compile the C++ code so it's ready to go
import os
os.system("make")