| generate.bru | R Documentation |
Takes a fitted bru object produced by the function bru() and produces
samples given a new set of values for the model covariates or the original
values used for the model fit. The samples can be based on any R expression
that is valid given these values/covariates and the joint posterior of the
estimated random effects. Called via the generics::generate() generic.
## S3 method for class 'bru'
generate(
x,
newdata = NULL,
formula = NULL,
n.samples = 100,
seed = 0L,
num.threads = NULL,
used = NULL,
options = NULL,
...,
include = deprecated(),
exclude = deprecated()
)
In addition to the component names (that give the effect of each component
evaluated for the input data), the suffix _latent variable name can be used
to directly access the latent state for a component, and the suffix function
_eval can be used to evaluate a component at other input values than the
expressions defined in the component definition itself, e.g.
field_eval(cbind(x, y)) for a component that was defined with
field(coordinates, ...) (see also bru_comp_eval()).
For "iid" models with mapper = bm_index(n), rnorm() is used to
generate new realisations for indices greater than n, if accessed
via <name>_eval(...).
The form of the value returned by generate() depends on the data
class and prediction formula. Normally, a data.frame is returned, or a list
of data.frames (if the prediction formula generates a list)
predict.bru()
if (
bru_safe_inla() &&
requireNamespace("sn", quietly = TRUE)
) {
# Generate data for a simple linear model
input.df <- data.frame(x = cos(1:10))
input.df <- within(
input.df,
{
y <- 5 + 2 * cos(1:10) + rnorm(10, mean = 0, sd = 0.1)
}
)
# Fit the model
fit <- bru(
y ~ xeff(main = x, model = "linear"),
family = "gaussian",
data = input.df
)
summary(fit)
# Generate samples for some predefined x
df <- data.frame(x = seq(-4, 4, by = 0.1))
smp <- generate(fit, df, ~ xeff + Intercept, n.samples = 10)
# Plot the resulting realizations
plot(df$x, smp[, 1], type = "l")
for (k in 2:ncol(smp)) {
points(df$x, smp[, k], type = "l")
}
# We can also draw samples form the joint posterior
df <- data.frame(x = 1)
smp <- generate(fit, df, ~ data.frame(xeff, Intercept), n.samples = 10)
smp[[1]]
# ... and plot them
if (require(ggplot2, quietly = TRUE)) {
plot(do.call(rbind, smp))
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.