Description Usage Arguments Examples
Sample outcomes from a fitted model (via sample_outcomes()
) or calculate a
confidence band for the fitted model (via confidence_band()
). Currently,
sampling of fitted models is only implemented for generalized additive models
fitted with mgcv::gam()
.
1 2 3 4 5 6 7 8 9 10 11 | sample_outcomes(model, newdata, times = 20, key = ".draw", ...)
## S3 method for class 'gam'
sample_outcomes(model, newdata, times = 20,
key = ".draw", unconditional = FALSE, ...)
confidence_band(model, newdata, level = 0.95, ...)
## S3 method for class 'gam'
confidence_band(model, newdata, level = 0.95,
unconditional = FALSE, ...)
|
model |
The fitted model to use for generating outcomes or calculating a confidence band. |
newdata |
A data frame containing the values of the model covariates at
which outcomes or confidence values should be calculated, as in
|
times |
Number of times outcomes should be drawn. |
key |
Character vector holding the name of the column indicating
separate outcome draws. Default is |
... |
Other arguments. |
unconditional |
Bool indicating whether the smoothing parameter uncertainty
corrected covariance matrix is used ( |
level |
Confidence level. Default is 95%. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | library(mgcv)
library(ggplot2)
# gam spline fit
fit <- gam(mpg ~ s(disp), data = mtcars, method = "REML")
newdata <- data.frame(
disp = seq(
min(mtcars$disp), max(mtcars$disp),
length.out = 100
)
)
sample_df <- sample_outcomes(fit, newdata, 10, unconditional = TRUE)
conf <- confidence_band(fit, newdata, unconditional = TRUE)
ggplot(mtcars, aes(disp, mpg)) +
geom_ribbon(data = conf, aes(ymin = lo, ymax = hi), fill="#80808040", color = NA) +
geom_point(color = "grey30", size = 0.5) +
geom_line(data = sample_df, aes(group = .draw), color = "#0072B2", size = 0.3) +
geom_line(data = conf, size = 1, color = "darkred") +
theme_bw()
# logistic regression fit
fit <- gam(vs ~ disp, data = mtcars, family = "binomial")
sample_df <- sample_outcomes(fit, newdata, 20)
conf <- confidence_band(fit, newdata)
ggplot(mtcars, aes(disp, vs)) +
geom_ribbon(data = conf, aes(ymin = lo, ymax = hi), fill="#80808040", color = NA) +
geom_point(color = "black", size = 3, shape = "|") +
geom_line(data = sample_df, aes(group = .draw), color = "#0072B2", size = 0.3) +
geom_line(data = conf, size = 1, color = "darkred") +
theme_bw()
# example in 2D
data(BlueJays, package = "Stat2Data")
fit <- gam(Skull ~ s(BillDepth, BillWidth), data = BlueJays, method = "REML")
newdata <- expand.grid(
BillWidth = seq(min(BlueJays$BillWidth), max(BlueJays$BillWidth), length.out = 20),
BillDepth = seq(min(BlueJays$BillDepth), max(BlueJays$BillDepth), length.out = 20)
)
sample_df <- sample_outcomes(fit, newdata, 9, unconditional = TRUE)
ggplot(BlueJays, aes(BillDepth, BillWidth)) +
geom_tile(data = sample_df, aes(fill = Skull), alpha = 0.5, color = NA) +
geom_contour(data = sample_df, aes(z = Skull), color = "black", size = 0.3, binwidth = 0.2) +
geom_point(aes(color = Skull), size = 1.5) +
scale_fill_viridis_c(
name = "skull, modeled (mm)",
option = "D",
guide = guide_legend(
title.position = "top",
order = 2,
override.aes = list(alpha = 0.5)
)
) +
scale_color_viridis_c(
name = "skull, observed (mm)",
option = "D",
guide = guide_legend(title.position = "top", order = 1)
) +
coord_cartesian(expand = FALSE) +
xlab("bill depth (mm)") +
ylab("bill width (mm)") +
ggtitle("Variability in 2d spline model fitted to blue jay data") +
facet_wrap(~.draw, labeller = as_labeller(function(x) paste0("posterior sample ", x))) +
theme_bw() +
theme(
legend.direction = "horizontal",
legend.position = "bottom",
legend.justification = "right",
legend.title.align = 0.5
)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.