From 1008106f20c9d5df15eff7e1095fb88e35d6ef5f Mon Sep 17 00:00:00 2001 From: n-kall Date: Wed, 5 Jun 2024 13:42:03 +0300 Subject: [PATCH 1/9] Add functions for priorsense compatibility --- R/priorsense.R | 103 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 R/priorsense.R diff --git a/R/priorsense.R b/R/priorsense.R new file mode 100644 index 000000000..0cc106928 --- /dev/null +++ b/R/priorsense.R @@ -0,0 +1,103 @@ +#' Prior sensitivity: Create priorsense data +#' +#' The \code{create_priorsense_data.brmsfit} method can be used to +#' create the data structure needed by the \pkg{priorsense} package +#' for performing power-scaling sensitivity analysis. This method is +#' called automatically when performing powerscaling via +#' \code{\link[priorsense:powerscale]{powerscale}} or other related +#' functions, so you will rarely need to call it manually yourself. +#' +#' @param x A \code{brmsfit} object. +#' @param ... Unused. +#' +#' @return A \code{priorsense_data} object to be used in conjunction +#' with the \pkg{priorsense} package. +#' +#' @examples +#' \dontrun{ +#' # fit a simple model with non-uniform priors +#' fit <- brm(count ~ zAge + zBase * Trt, +#' data = epilepsy, family = poisson(), +#' prior = prior(normal(0, 1), class = "b")) +#' summary(fit) +#' +#' # The following code requires the 'priorsense' package to be installed: +#' library(priorsense) +#' +#' # perform powerscaling sensitivity checks +#' powerscale_sensitivity(fit) +#' +#' # create powerscaling sensitivity plots +#' powerscale_plot_dens(fit) +#' } +#' @exportS3Method priorsense::create_priorsense_data brmsfit +create_priorsense_data.brmsfit <- function(x, ...) { + + create_priorsense_data.default( + x = get_draws_brmsfit(x), + fit = x, + log_prior = log_prior_draws.brmsfit(x), + log_lik = log_lik_draws.brmsfit(x), + log_prior_fn = log_prior_draws, + log_lik_fn = log_lik_draws, + log_ratio_fn = powerscale_log_ratio_fun_brmsfit, + ... + ) +} + +##' @rdname log_lik_draws +##' @export +log_lik_draws.brmsfit <- function(x) { + log_lik <- log_lik(x) + log_lik <- posterior::as_draws_array(log_lik) + posterior::variables(log_lik) <- paste0("log_lik[", 1:nvariables(log_lik), "]") + + return(log_lik) +} + + +##' @rdname log_prior_draws +##' @export +log_prior_draws.brmsfit <- function(x, log_prior_name = "lprior") { + + log_prior <- posterior::subset_draws( + posterior::as_draws_array(x), + variable = log_prior_name + ) + + return(log_prior) +} + +get_draws_brmsfit <- function(x, variable = NULL, regex = FALSE, log_prior_name = "lprior") { + + excluded_variables <- c(log_prior_name, "lp__") + draws <- posterior::as_draws_df(x, regex = regex) + + if (is.null(variable)) { + # remove unnecessary variables + variable <- posterior::variables(x) + variable <- variable[!(variable %in% excluded_variables)] + + draws <- posterior::subset_draws(draws, variable = variable) + } + + return(draws) +} + +powerscale_log_ratio_fun_brmsfit <- function(draws, fit, alpha, component_fn) { + + component_draws <- component_fn(fit) + component_draws <- rowsums_draws(component_draws) + component_draws * (alpha - 1) + +} + +rowsums_draws <- function(x) { + posterior::draws_array( + sum = rowSums( + posterior::as_draws_array(x), + dims = 2 + ), + .nchains = posterior::nchains(x) + ) +} From 7dfa6771a144f363b8b1351d2e87c263b7cbe570 Mon Sep 17 00:00:00 2001 From: n-kall Date: Wed, 5 Jun 2024 14:39:14 +0300 Subject: [PATCH 2/9] Update docs for priorsense compatibility --- NAMESPACE | 3 ++ R/priorsense.R | 6 ++-- man/create_priorsense_data.brmsfit.Rd | 43 +++++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 4 deletions(-) create mode 100644 man/create_priorsense_data.brmsfit.Rd diff --git a/NAMESPACE b/NAMESPACE index e0a423d26..484e35628 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -251,6 +251,9 @@ S3method(prior_predictor,brmsframe) S3method(prior_predictor,default) S3method(prior_predictor,mvbrmsframe) S3method(prior_summary,brmsfit) +S3method(priorsense::create_priorsense_data,brmsfit) +S3method(priorsense::log_lik_draws,brmsfit) +S3method(priorsense::log_prior_draws,brmsfit) S3method(projpred::get_refmodel,brmsfit) S3method(psis,brmsfit) S3method(r_eff_log_lik,"function") diff --git a/R/priorsense.R b/R/priorsense.R index 0cc106928..843d07de8 100644 --- a/R/priorsense.R +++ b/R/priorsense.R @@ -45,8 +45,7 @@ create_priorsense_data.brmsfit <- function(x, ...) { ) } -##' @rdname log_lik_draws -##' @export +##' @exportS3Method priorsense::log_lik_draws brmsfit log_lik_draws.brmsfit <- function(x) { log_lik <- log_lik(x) log_lik <- posterior::as_draws_array(log_lik) @@ -56,8 +55,7 @@ log_lik_draws.brmsfit <- function(x) { } -##' @rdname log_prior_draws -##' @export +##' @exportS3Method priorsense::log_prior_draws brmsfit log_prior_draws.brmsfit <- function(x, log_prior_name = "lprior") { log_prior <- posterior::subset_draws( diff --git a/man/create_priorsense_data.brmsfit.Rd b/man/create_priorsense_data.brmsfit.Rd new file mode 100644 index 000000000..b6c2d9a96 --- /dev/null +++ b/man/create_priorsense_data.brmsfit.Rd @@ -0,0 +1,43 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/priorsense.R +\name{create_priorsense_data.brmsfit} +\alias{create_priorsense_data.brmsfit} +\title{Prior sensitivity: Create priorsense data} +\usage{ +\method{create_priorsense_data}{brmsfit}(x, ...) +} +\arguments{ +\item{x}{A \code{brmsfit} object.} + +\item{...}{Unused.} +} +\value{ +A \code{priorsense_data} object to be used in conjunction +with the \pkg{priorsense} package. +} +\description{ +The \code{create_priorsense_data.brmsfit} method can be used to +create the data structure needed by the \pkg{priorsense} package +for performing power-scaling sensitivity analysis. This method is +called automatically when performing powerscaling via +\code{\link[priorsense:powerscale]{powerscale}} or other related +functions, so you will rarely need to call it manually yourself. +} +\examples{ +\dontrun{ +# fit a simple model with non-uniform priors +fit <- brm(count ~ zAge + zBase * Trt, + data = epilepsy, family = poisson(), + prior = prior(normal(0, 1), class = "b")) +summary(fit) + +# The following code requires the 'priorsense' package to be installed: +library(priorsense) + +# perform powerscaling sensitivity checks +powerscale_sensitivity(fit) + +# create powerscaling sensitivity plots +powerscale_plot_dens(fit) +} +} From ffea82a0494c62a5d6fdb1c53aa1dbfa68a2049d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paul-Christian=20B=C3=BCrkner?= Date: Thu, 6 Jun 2024 11:54:04 +0200 Subject: [PATCH 3/9] minor cleaning and renaming of functions --- DESCRIPTION | 1 + NAMESPACE | 2 -- R/priorsense.R | 49 +++++++++++---------------- man/create_priorsense_data.brmsfit.Rd | 8 +++-- 4 files changed, 27 insertions(+), 33 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 8cdfd9570..e403dbd3f 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -52,6 +52,7 @@ Suggests: emmeans (>= 1.4.2), cmdstanr (>= 0.5.0), projpred (>= 2.0.0), + priorsense (>= 0.9.2), shinystan (>= 2.4.0), splines2 (>= 0.5.0), RWiener, diff --git a/NAMESPACE b/NAMESPACE index 484e35628..57ea2c48f 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -252,8 +252,6 @@ S3method(prior_predictor,default) S3method(prior_predictor,mvbrmsframe) S3method(prior_summary,brmsfit) S3method(priorsense::create_priorsense_data,brmsfit) -S3method(priorsense::log_lik_draws,brmsfit) -S3method(priorsense::log_prior_draws,brmsfit) S3method(projpred::get_refmodel,brmsfit) S3method(psis,brmsfit) S3method(r_eff_log_lik,"function") diff --git a/R/priorsense.R b/R/priorsense.R index 843d07de8..e1a61543b 100644 --- a/R/priorsense.R +++ b/R/priorsense.R @@ -8,7 +8,7 @@ #' functions, so you will rarely need to call it manually yourself. #' #' @param x A \code{brmsfit} object. -#' @param ... Unused. +#' @param ... Currently unused. #' #' @return A \code{priorsense_data} object to be used in conjunction #' with the \pkg{priorsense} package. @@ -24,70 +24,61 @@ #' # The following code requires the 'priorsense' package to be installed: #' library(priorsense) #' +#' # perform powerscaling of the prior +#' powerscale(fit, alpha = 1.5, component = "prior") +#' #' # perform powerscaling sensitivity checks #' powerscale_sensitivity(fit) #' #' # create powerscaling sensitivity plots #' powerscale_plot_dens(fit) #' } +#' #' @exportS3Method priorsense::create_priorsense_data brmsfit create_priorsense_data.brmsfit <- function(x, ...) { - - create_priorsense_data.default( - x = get_draws_brmsfit(x), + priorsense::create_priorsense_data.default( + x = get_draws_ps(x), fit = x, - log_prior = log_prior_draws.brmsfit(x), - log_lik = log_lik_draws.brmsfit(x), - log_prior_fn = log_prior_draws, - log_lik_fn = log_lik_draws, - log_ratio_fn = powerscale_log_ratio_fun_brmsfit, + log_prior = log_prior_ps(x), + log_lik = log_lik_ps(x), + log_prior_fn = log_prior_ps, + log_lik_fn = log_lik_ps, + log_ratio_fn = powerscale_log_ratio, ... ) } -##' @exportS3Method priorsense::log_lik_draws brmsfit -log_lik_draws.brmsfit <- function(x) { +log_lik_ps <- function(x) { log_lik <- log_lik(x) log_lik <- posterior::as_draws_array(log_lik) posterior::variables(log_lik) <- paste0("log_lik[", 1:nvariables(log_lik), "]") - - return(log_lik) + log_lik } - -##' @exportS3Method priorsense::log_prior_draws brmsfit -log_prior_draws.brmsfit <- function(x, log_prior_name = "lprior") { - - log_prior <- posterior::subset_draws( +log_prior_ps <- function(x, log_prior_name = "lprior") { + posterior::subset_draws( posterior::as_draws_array(x), variable = log_prior_name ) - - return(log_prior) } -get_draws_brmsfit <- function(x, variable = NULL, regex = FALSE, log_prior_name = "lprior") { - +get_draws_ps <- function(x, variable = NULL, regex = FALSE, + log_prior_name = "lprior") { excluded_variables <- c(log_prior_name, "lp__") draws <- posterior::as_draws_df(x, regex = regex) - if (is.null(variable)) { # remove unnecessary variables variable <- posterior::variables(x) variable <- variable[!(variable %in% excluded_variables)] - draws <- posterior::subset_draws(draws, variable = variable) } - - return(draws) + draws } -powerscale_log_ratio_fun_brmsfit <- function(draws, fit, alpha, component_fn) { - +powerscale_log_ratio <- function(draws, fit, alpha, component_fn) { component_draws <- component_fn(fit) component_draws <- rowsums_draws(component_draws) component_draws * (alpha - 1) - } rowsums_draws <- function(x) { diff --git a/man/create_priorsense_data.brmsfit.Rd b/man/create_priorsense_data.brmsfit.Rd index b6c2d9a96..9ef510ce9 100644 --- a/man/create_priorsense_data.brmsfit.Rd +++ b/man/create_priorsense_data.brmsfit.Rd @@ -4,12 +4,12 @@ \alias{create_priorsense_data.brmsfit} \title{Prior sensitivity: Create priorsense data} \usage{ -\method{create_priorsense_data}{brmsfit}(x, ...) +create_priorsense_data.brmsfit(x, ...) } \arguments{ \item{x}{A \code{brmsfit} object.} -\item{...}{Unused.} +\item{...}{Currently unused.} } \value{ A \code{priorsense_data} object to be used in conjunction @@ -34,10 +34,14 @@ summary(fit) # The following code requires the 'priorsense' package to be installed: library(priorsense) +# perform powerscaling of the prior +powerscale(fit, alpha = 1.5, component = "prior") + # perform powerscaling sensitivity checks powerscale_sensitivity(fit) # create powerscaling sensitivity plots powerscale_plot_dens(fit) } + } From ed35dbc40de48862fb62383880141267b79d9305 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paul-Christian=20B=C3=BCrkner?= Date: Thu, 6 Jun 2024 12:05:50 +0200 Subject: [PATCH 4/9] more cleaning --- R/priorsense.R | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/R/priorsense.R b/R/priorsense.R index e1a61543b..28d4b6f9e 100644 --- a/R/priorsense.R +++ b/R/priorsense.R @@ -36,7 +36,7 @@ #' #' @exportS3Method priorsense::create_priorsense_data brmsfit create_priorsense_data.brmsfit <- function(x, ...) { - priorsense::create_priorsense_data.default( + priorsense::create_priorsense_data( x = get_draws_ps(x), fit = x, log_prior = log_prior_ps(x), @@ -51,7 +51,8 @@ create_priorsense_data.brmsfit <- function(x, ...) { log_lik_ps <- function(x) { log_lik <- log_lik(x) log_lik <- posterior::as_draws_array(log_lik) - posterior::variables(log_lik) <- paste0("log_lik[", 1:nvariables(log_lik), "]") + nvars <- nvariables(log_lik) + posterior::variables(log_lik) <- paste0("log_lik[", seq_len(nvars), "]") log_lik } From 92a74282ff3c54652a5eb2ead3c6ab862a4a971a Mon Sep 17 00:00:00 2001 From: n-kall Date: Thu, 6 Jun 2024 14:34:05 +0300 Subject: [PATCH 5/9] export s3 methods needed for priorsense, update priorsense example --- NAMESPACE | 2 ++ R/priorsense.R | 30 ++++++++++++++------------- man/create_priorsense_data.brmsfit.Rd | 18 ++++++++-------- 3 files changed, 27 insertions(+), 23 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index 57ea2c48f..4701adb5f 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -157,7 +157,9 @@ S3method(logLik,brmsfit) S3method(log_lik,brmsfit) S3method(log_lik,brmsprep) S3method(log_lik,mvbrmsprep) +S3method(log_lik_draws,brmsfit) S3method(log_posterior,brmsfit) +S3method(log_prior_draws,brmsfit) S3method(loo,brmsfit) S3method(loo_R2,brmsfit) S3method(loo_compare,brmsfit) diff --git a/R/priorsense.R b/R/priorsense.R index 28d4b6f9e..2b8e2b6fd 100644 --- a/R/priorsense.R +++ b/R/priorsense.R @@ -15,23 +15,23 @@ #' #' @examples #' \dontrun{ -#' # fit a simple model with non-uniform priors -#' fit <- brm(count ~ zAge + zBase * Trt, -#' data = epilepsy, family = poisson(), -#' prior = prior(normal(0, 1), class = "b")) +#' # fit a model with non-uniform priors +#' fit <- brm(rating ~ treat + period + carry, +#' data = inhaler, family = sratio(), +#' prior = set_prior("normal(0, 0.5)")) #' summary(fit) #' #' # The following code requires the 'priorsense' package to be installed: #' library(priorsense) #' -#' # perform powerscaling of the prior +#' # perform power-scaling of the prior #' powerscale(fit, alpha = 1.5, component = "prior") #' -#' # perform powerscaling sensitivity checks +#' # perform power-scaling sensitivity checks #' powerscale_sensitivity(fit) #' -#' # create powerscaling sensitivity plots -#' powerscale_plot_dens(fit) +#' # create power-scaling sensitivity plots (for one variable) +#' powerscale_plot_dens(fit, variable = "b_treat") #' } #' #' @exportS3Method priorsense::create_priorsense_data brmsfit @@ -39,16 +39,17 @@ create_priorsense_data.brmsfit <- function(x, ...) { priorsense::create_priorsense_data( x = get_draws_ps(x), fit = x, - log_prior = log_prior_ps(x), - log_lik = log_lik_ps(x), - log_prior_fn = log_prior_ps, - log_lik_fn = log_lik_ps, + log_prior = log_prior_draws.brmsfit(x), + log_lik = log_lik_draws.brmsfit(x), + log_prior_fn = log_prior_draws.brmsfit, + log_lik_fn = log_lik_draws.brmsfit, log_ratio_fn = powerscale_log_ratio, ... ) } -log_lik_ps <- function(x) { +#' @exportS3Method +log_lik_draws.brmsfit <- function(x) { log_lik <- log_lik(x) log_lik <- posterior::as_draws_array(log_lik) nvars <- nvariables(log_lik) @@ -56,7 +57,8 @@ log_lik_ps <- function(x) { log_lik } -log_prior_ps <- function(x, log_prior_name = "lprior") { +#' @exportS3Method +log_prior_draws.brmsfit <- function(x, log_prior_name = "lprior") { posterior::subset_draws( posterior::as_draws_array(x), variable = log_prior_name diff --git a/man/create_priorsense_data.brmsfit.Rd b/man/create_priorsense_data.brmsfit.Rd index 9ef510ce9..1802ab9ba 100644 --- a/man/create_priorsense_data.brmsfit.Rd +++ b/man/create_priorsense_data.brmsfit.Rd @@ -4,7 +4,7 @@ \alias{create_priorsense_data.brmsfit} \title{Prior sensitivity: Create priorsense data} \usage{ -create_priorsense_data.brmsfit(x, ...) +\method{create_priorsense_data}{brmsfit}(x, ...) } \arguments{ \item{x}{A \code{brmsfit} object.} @@ -25,23 +25,23 @@ functions, so you will rarely need to call it manually yourself. } \examples{ \dontrun{ -# fit a simple model with non-uniform priors -fit <- brm(count ~ zAge + zBase * Trt, - data = epilepsy, family = poisson(), - prior = prior(normal(0, 1), class = "b")) +# fit a model with non-uniform priors +fit <- brm(rating ~ treat + period + carry, + data = inhaler, family = sratio(), + prior = set_prior("normal(0, 0.5)")) summary(fit) # The following code requires the 'priorsense' package to be installed: library(priorsense) -# perform powerscaling of the prior +# perform power-scaling of the prior powerscale(fit, alpha = 1.5, component = "prior") -# perform powerscaling sensitivity checks +# perform power-scaling sensitivity checks powerscale_sensitivity(fit) -# create powerscaling sensitivity plots -powerscale_plot_dens(fit) +# create power-scaling sensitivity plots (for one variable) +powerscale_plot_dens(fit, variable = "b_treat") } } From 97ca46ea548b892e81d4eee6dd2ddda5020ea64c Mon Sep 17 00:00:00 2001 From: n-kall Date: Thu, 6 Jun 2024 15:02:31 +0300 Subject: [PATCH 6/9] Add tests for priorsense support. --- tests/testthat/tests.priorsense.R | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 tests/testthat/tests.priorsense.R diff --git a/tests/testthat/tests.priorsense.R b/tests/testthat/tests.priorsense.R new file mode 100644 index 000000000..548a02547 --- /dev/null +++ b/tests/testthat/tests.priorsense.R @@ -0,0 +1,27 @@ +context("Tests for priorsense support") + +skip_on_cran() + +require(priorsense) + +fit1 <- rename_pars(brms:::brmsfit_example1) + +test_that("create_priorsense_data returns expected output structure", { + psd1 <- create_priorsense_data(fit1) + expect_s3_class(psd$draws, "draws") + expect_s3_class(psd$fit, "brmsfit") + expect_s3_class(psd$log_lik, "draws") + expect_s3_class(psd$log_prior, "draws") + expect_true(is.function(psd$log_lik_fn)) + expect_true(is.function(psd$log_prior_fn)) + expect_true(is.function(psd$log_ratio_fn)) +}) + +test_that("powerscale returns without error", { + expect_no_error(powerscale(fit1, component = "prior", alpha = 0.8)) + expect_no_error(powerscale(fit1, component = "likelihood", alpha = 1.1)) +}) + +test_that("powerscale_sensitivity returns without error", { + expect_no_error(powerscale_sensitivity(fit1)) +}) From 479837e8cfcac6218ab7901566e617045954a7ec Mon Sep 17 00:00:00 2001 From: n-kall Date: Thu, 6 Jun 2024 15:14:59 +0300 Subject: [PATCH 7/9] Fixes to S3 method exports for priorsense. --- R/priorsense.R | 4 ++-- man/create_priorsense_data.brmsfit.Rd | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/R/priorsense.R b/R/priorsense.R index 2b8e2b6fd..3353d52e9 100644 --- a/R/priorsense.R +++ b/R/priorsense.R @@ -48,7 +48,7 @@ create_priorsense_data.brmsfit <- function(x, ...) { ) } -#' @exportS3Method +#' @exportS3Method priorsense::log_lik_draws log_lik_draws.brmsfit <- function(x) { log_lik <- log_lik(x) log_lik <- posterior::as_draws_array(log_lik) @@ -57,7 +57,7 @@ log_lik_draws.brmsfit <- function(x) { log_lik } -#' @exportS3Method +#' @exportS3Method priorsense::log_prior_draws log_prior_draws.brmsfit <- function(x, log_prior_name = "lprior") { posterior::subset_draws( posterior::as_draws_array(x), diff --git a/man/create_priorsense_data.brmsfit.Rd b/man/create_priorsense_data.brmsfit.Rd index 1802ab9ba..4fe57d041 100644 --- a/man/create_priorsense_data.brmsfit.Rd +++ b/man/create_priorsense_data.brmsfit.Rd @@ -4,7 +4,7 @@ \alias{create_priorsense_data.brmsfit} \title{Prior sensitivity: Create priorsense data} \usage{ -\method{create_priorsense_data}{brmsfit}(x, ...) +create_priorsense_data.brmsfit(x, ...) } \arguments{ \item{x}{A \code{brmsfit} object.} From 69065e2560d2703eeb12983462ebb1321fb52f52 Mon Sep 17 00:00:00 2001 From: n-kall Date: Thu, 6 Jun 2024 15:15:26 +0300 Subject: [PATCH 8/9] Add priorsense compatibility to news and bump version number. --- DESCRIPTION | 4 ++-- NAMESPACE | 4 ++-- NEWS.md | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index e403dbd3f..d109a40a2 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -2,8 +2,8 @@ Package: brms Encoding: UTF-8 Type: Package Title: Bayesian Regression Models using 'Stan' -Version: 2.21.5 -Date: 2024-05-27 +Version: 2.21.6 +Date: 2024-06-06 Authors@R: c(person("Paul-Christian", "Bürkner", email = "paul.buerkner@gmail.com", role = c("aut", "cre")), diff --git a/NAMESPACE b/NAMESPACE index 4701adb5f..484e35628 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -157,9 +157,7 @@ S3method(logLik,brmsfit) S3method(log_lik,brmsfit) S3method(log_lik,brmsprep) S3method(log_lik,mvbrmsprep) -S3method(log_lik_draws,brmsfit) S3method(log_posterior,brmsfit) -S3method(log_prior_draws,brmsfit) S3method(loo,brmsfit) S3method(loo_R2,brmsfit) S3method(loo_compare,brmsfit) @@ -254,6 +252,8 @@ S3method(prior_predictor,default) S3method(prior_predictor,mvbrmsframe) S3method(prior_summary,brmsfit) S3method(priorsense::create_priorsense_data,brmsfit) +S3method(priorsense::log_lik_draws,brmsfit) +S3method(priorsense::log_prior_draws,brmsfit) S3method(projpred::get_refmodel,brmsfit) S3method(psis,brmsfit) S3method(r_eff_log_lik,"function") diff --git a/NEWS.md b/NEWS.md index 3ddffe64f..9b2af712b 100644 --- a/NEWS.md +++ b/NEWS.md @@ -3,6 +3,7 @@ ### New Features * Add method `loo_epred` thanks to Aki Vehtari. (#1641) +* Add priorsense support via `create_priorsense_data.brmsfit` thanks to Noa Kallioinen. (#1354) ### Bug Fixes From fcf90841c5ab0e7cd8ca52990bdbbcc9aca47625 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paul-Christian=20B=C3=BCrkner?= Date: Mon, 24 Jun 2024 09:55:31 +0200 Subject: [PATCH 9/9] bump priorsense version number --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index d109a40a2..442b7b566 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -52,7 +52,7 @@ Suggests: emmeans (>= 1.4.2), cmdstanr (>= 0.5.0), projpred (>= 2.0.0), - priorsense (>= 0.9.2), + priorsense (>= 1.0.0), shinystan (>= 2.4.0), splines2 (>= 0.5.0), RWiener,