Nothing
## ----include = FALSE----------------------------------------------------------
# With the root.dir option below,
# this vignette runs the R code in a temporary directory
# so new files are written to temporary storage
# and not the user's file space.
knitr::opts_knit$set(root.dir = fs::dir_create(tempfile()))
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
skip <- identical(Sys.getenv("NOT_CRAN", unset = "false"), "false") ||
!requireNamespace("rjags", quietly = TRUE) ||
!requireNamespace("R2jags", quietly = TRUE)
if (skip) {
knitr::opts_chunk$set(eval = FALSE)
} else {
library(R2jags)
}
library(dplyr)
library(targets)
library(jagstargets)
## -----------------------------------------------------------------------------
lines <- "model {
for (i in 1:n) {
y[i] ~ dnorm(beta[1] + x[i] * beta[2], 1)
}
for (i in 1:2) {
beta[i] ~ dnorm(0, 1)
}
}"
writeLines(lines, "model.jags")
## ----echo = FALSE-------------------------------------------------------------
# Writes the _targets.R file shown in the next code chunk.
library(targets)
tar_script({
library(jagstargets)
options(crayon.enabled = FALSE)
tar_option_set(memory = "transient", garbage_collection = TRUE)
generate_data <- function(n = 10L) {
beta <- stats::rnorm(n = 2, mean = 0, sd = 1)
x <- seq(from = -1, to = 1, length.out = n)
y <- stats::rnorm(n, beta[1] + x * beta[2], 1)
.join_data <- list(beta = beta)
list(n = n, x = x, y = y, .join_data = .join_data)
}
list(
tar_jags_rep_summary(
model,
"model.jags",
data = generate_data(),
parameters.to.save = "beta",
batches = 5, # Number of branch targets.
reps = 4, # Number of model reps per branch target.
stdout = R.utils::nullfile(),
stderr = R.utils::nullfile(),
variables = "beta",
summaries = list(
~posterior::quantile2(.x, probs = c(0.025, 0.975))
)
)
)
})
## ----eval = FALSE-------------------------------------------------------------
# # _targets.R
# library(targets)
# library(jagstargets)
# options(crayon.enabled = FALSE)
# # Use computer memory more sparingly:
# tar_option_set(memory = "transient", garbage_collection = TRUE)
#
# generate_data <- function(n = 10L) {
# beta <- stats::rnorm(n = 2, mean = 0, sd = 1)
# x <- seq(from = -1, to = 1, length.out = n)
# y <- stats::rnorm(n, beta[1] + x * beta[2], 1)
# # Elements of .join_data get joined on to the .join_data column
# # in the summary output next to the model parameters
# # with the same names.
# .join_data <- list(beta = beta)
# list(n = n, x = x, y = y, .join_data = .join_data)
# }
#
# list(
# tar_jags_rep_summary(
# model,
# "model.jags",
# data = generate_data(),
# parameters.to.save = "beta",
# batches = 5, # Number of branch targets.
# reps = 4, # Number of model reps per branch target.
# variables = "beta",
# summaries = list(
# ~posterior::quantile2(.x, probs = c(0.025, 0.975))
# )
# )
# )
## -----------------------------------------------------------------------------
tar_visnetwork()
## ----output = FALSE, warning = FALSE------------------------------------------
tar_make()
## -----------------------------------------------------------------------------
tar_load(model)
model
## -----------------------------------------------------------------------------
library(dplyr)
model %>%
group_by(variable) %>%
dplyr::summarize(coverage = mean(q2.5 < .join_data & .join_data < q97.5))
## ----echo = FALSE-------------------------------------------------------------
# Writes the _targets.R file shown in the next code chunk.
library(targets)
tar_script({
library(jagstargets)
options(crayon.enabled = FALSE)
tar_option_set(
packages = "dplyr",
memory = "transient",
garbage_collection = TRUE
)
generate_data <- function(n = 10L) {
beta <- stats::rnorm(n = 2, mean = 0, sd = 1)
x <- seq(from = -1, to = 1, length.out = n)
y <- stats::rnorm(n, beta[1] + x * beta[2], 1)
# Elements of .join_data get joined on to the .join_data column
# in the summary output next to the model parameters
# with the same names.
.join_data <- list(beta = beta)
list(n = n, x = x, y = y, .join_data = .join_data)
}
list(
tar_jags_rep_summary(
model,
"model.jags",
data = generate_data(),
parameters.to.save = "beta",
batches = 5, # Number of branch targets.
reps = 4, # Number of model reps per branch target.
stdout = R.utils::nullfile(),
stderr = R.utils::nullfile(),
variables = "beta",
summaries = list(
~posterior::quantile2(.x, probs = c(0.025, 0.975))
)
),
tar_target(
coverage,
model %>%
group_by(variable) %>%
summarize(
coverage = mean(q2.5 < .join_data & .join_data < q97.5),
.groups = "drop"
)
)
)
})
## ----eval = FALSE-------------------------------------------------------------
# # _targets.R
# # packages needed to define the pipeline:
# library(targets)
# library(jagstargets)
#
# tar_option_set(
# packages = "dplyr", # packages needed to run the pipeline
# memory = "transient", # memory efficiency
# garbage_collection = TRUE # memory efficiency
# )
#
# generate_data <- function(n = 10L) {
# beta <- stats::rnorm(n = 2, mean = 0, sd = 1)
# x <- seq(from = -1, to = 1, length.out = n)
# y <- stats::rnorm(n, beta[1] + x * beta[2], 1)
# # Elements of .join_data get joined on to the .join_data column
# # in the summary output next to the model parameters
# # with the same names.
# .join_data <- list(beta = beta)
# list(n = n, x = x, y = y, .join_data = .join_data)
# }
#
# list(
# tar_jags_rep_summary(
# model,
# "model.jags",
# data = generate_data(),
# parameters.to.save = "beta",
# batches = 5, # Number of branch targets.
# reps = 4, # Number of model reps per branch target.
# variables = "beta",
# summaries = list(
# ~posterior::quantile2(.x, probs = c(0.025, 0.975))
# )
# ),
# tar_target(
# coverage,
# model %>%
# group_by(variable) %>%
# summarize(
# coverage = mean(q2.5 < .join_data & .join_data < q97.5),
# .groups = "drop"
# )
# )
# )
## -----------------------------------------------------------------------------
tar_visnetwork()
## ----output = FALSE, warning = FALSE------------------------------------------
tar_make()
## -----------------------------------------------------------------------------
tar_read(coverage)
## -----------------------------------------------------------------------------
lines <- "model {
for (i in 1:n) {
y[i] ~ dnorm(beta[1] + x[i] * x[i] * beta[2], 1) # Regress on x^2, not x.
}
for (i in 1:2) {
beta[i] ~ dnorm(0, 1)
}
}"
writeLines(lines, "model2.jags")
## ----echo = FALSE-------------------------------------------------------------
# Writes the _targets.R file shown in the next code chunk.
library(targets)
tar_script({
library(jagstargets)
options(crayon.enabled = FALSE)
tar_option_set(
packages = "dplyr",
memory = "transient",
garbage_collection = TRUE
)
generate_data <- function(n = 10L) {
beta <- stats::rnorm(n = 2, mean = 0, sd = 1)
x <- seq(from = -1, to = 1, length.out = n)
y <- stats::rnorm(n, beta[1] + x * beta[2], 1)
# Elements of .join_data get joined on to the .join_data column
# in the summary output next to the model parameters
# with the same names.
.join_data <- list(beta = beta)
list(n = n, x = x, y = y, .join_data = .join_data)
}
list(
tar_jags_rep_summary(
model,
c("model.jags", "model2.jags"), # another model
data = generate_data(),
parameters.to.save = "beta",
batches = 5,
reps = 4,
stdout = R.utils::nullfile(),
stderr = R.utils::nullfile(),
variables = "beta",
summaries = list(
~posterior::quantile2(.x, probs = c(0.025, 0.975))
)
),
tar_target(
coverage,
model %>%
group_by(.name) %>%
summarize(coverage = mean(q2.5 < .join_data & .join_data < q97.5))
)
)
})
## ----eval = FALSE-------------------------------------------------------------
# # _targets.R
# # packages needed to define the pipeline:
# library(targets)
# library(jagstargets)
#
# tar_option_set(
# packages = "dplyr", # packages needed to run the pipeline
# memory = "transient", # memory efficiency
# garbage_collection = TRUE # memory efficiency
# )
#
# generate_data <- function(n = 10L) {
# beta <- stats::rnorm(n = 2, mean = 0, sd = 1)
# x <- seq(from = -1, to = 1, length.out = n)
# y <- stats::rnorm(n, beta[1] + x * beta[2], 1)
# # Elements of .join_data get joined on to the .join_data column
# # in the summary output next to the model parameters
# # with the same names.
# .join_data <- list(beta = beta)
# list(n = n, x = x, y = y, .join_data = .join_data)
# }
#
# list(
# tar_jags_rep_summary(
# model,
# c("model.jags", "model2.jags"), # another model
# data = generate_data(),
# parameters.to.save = "beta",
# batches = 5,
# reps = 4,
# variables = "beta",
# summaries = list(
# ~posterior::quantile2(.x, probs = c(0.025, 0.975))
# )
# ),
# tar_target(
# coverage,
# model %>%
# group_by(.name) %>%
# summarize(coverage = mean(q2.5 < .join_data & .join_data < q97.5))
# )
# )
## -----------------------------------------------------------------------------
tar_visnetwork()
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.