Skip to content

Instantly share code, notes, and snippets.

@goldingn
Created May 6, 2017 14:53
Show Gist options
  • Save goldingn/b0b8d800ba914f9d1d5218ff3c34e7f5 to your computer and use it in GitHub Desktop.
Save goldingn/b0b8d800ba914f9d1d5218ff3c34e7f5 to your computer and use it in GitHub Desktop.
library(greta)
# to be overwritten with correct method
greta_here <- function ()
invisible(NULL)
# create an environment, and define the model there
greta_model <- function (model_expression,
parameters = list()) {
env <- new.env()
expr <- substitute(model_expression)
# make sure the greta nodes are placed evaluated here
local(greta_here(), envir = env)
local(eval(expr), envir = env)
# define and return the model object
define_text <- paste('define_model(',
paste(parameters, collapse = ','),
')')
m <- local(eval(parse(text = define_text)),
envir = env)
m$defining_environment <- env
m
}
model <- greta_model({
intercept = normal(0, 5)
coefficient = normal(0, 3)
sd = lognormal(0, 3)
mean <- intercept + coefficient * iris$Petal.Length
likelihood(iris$Sepal.Length) = normal(mean, sd)
}, parameters = list('intercept', 'coefficient', 'sd'))
mcmc(model, n_samples = 100, warmup = 1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment