Open
Description
It looks like there are already tidiers in the broom package for rstanarm and stanfit objects, but I didn't see any for loo objects. So I wrote some. I could submit these to broom or they could be included here.
augment.loo <- function(x, data = NULL, ...) {
out <- as_tibble(x$pointwise)
names(out) <- paste0(".", names(out))
out$.pareto_k <- x$pareto_k
if (!is.null(data)) {
bind_cols(data, out)
} else {
out
}
}
glance.loo <- function(x, ...) {
out <- tibble::as_tibble(unclass(x[setdiff(names(x), c("pointwise", "pareto_k"))]))
out$n <- attr(x, "log_lik_dim")[2]
out$n_sims <- attr(x, "log_lik_dim")[1]
out
}
tidy.loo <- function(x, ...) {
elpd <- grep("^elpd_(loo|waic)$", names(x), value = TRUE)
p <- grep("^p_(loo|waic)$", names(x), value = TRUE)
ic <- grep("^(waic|looic)$", names(x), value = TRUE)
tibble::tibble(
param = c(elpd, p, ic),
estimate = c(x[[elpd]], x[[p]], x[[ic]]),
std.err = c(x[[paste0("se_", elpd)]],
x[[paste0("se_", p)]],
x[[paste0("se_", ic)]]))
}