Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Package: bmstate
Type: Package
Title: Bayesian multistate modeling
Version: 0.2.6
Version: 0.2.7
Authors@R:
c(person(given = "Juho",
family = "Timonen",
Expand Down
11 changes: 11 additions & 0 deletions R/MultistateModel.R
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,17 @@ MultistateModel <- R6::R6Class("MultistateModel",
invisible(NULL)
},

#' @description Set assumed prior mean baseline hazard rates (side
#' effect) based on average hazards in data.
#' @param data A \code{\link{JointData}} or \code{\link{PathData}} object.
set_prior_mean_h0_data = function(data) {
if (inherits(data, "PathData")) {
data <- JointData$new(data, NULL)
}
checkmate::assert_class(data, "JointData")
df_ttype <- average_haz_per_ttype(data$paths) |> dplyr::arrange(.data$trans_idx)
self$set_prior_mean_h0(exp(df_ttype$log_h0_avg))
},

#' @description Create model
#'
Expand Down
37 changes: 22 additions & 15 deletions R/stan.R
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,10 @@ ensure_exposed_stan_functions <- function(...) {
#' @param model A \code{\link{MultistateModel}} object.
#' @param data A \code{\link{JointData}} or \code{\link{PathData}} object.
#' @param return_stanfit Return also the raw 'Stan' fit object?
#' @param set_auc_normalizers Set AUC normalization based on SS doses.
#' @inheritParams create_stan_model
#' @param set_normalizers Set covariate normalization automatically?
#' @param set_prior_h0 Set prior mean average baseline hazard levels based
#' on data?
#' @param max_conc_factor Factor to multiply observed max concentration by
#' to get concentration upper bound.
#' @param method Must be one of \code{"sample"} (default),
Expand All @@ -69,7 +71,8 @@ ensure_exposed_stan_functions <- function(...) {
#' @return A \code{\link{MultistateModelFit}} object.
#' @family Stan-related functions
fit_stan <- function(model, data,
set_auc_normalizers = TRUE,
set_normalizers = TRUE,
set_prior_h0 = TRUE,
filepath = NULL,
return_stanfit = FALSE,
max_conc_factor = 100,
Expand All @@ -82,20 +85,28 @@ fit_stan <- function(model, data,
checkmate::assert_choice(method, c("sample", "pathfinder", "optimize"))

checkmate::assert_logical(return_stanfit, len = 1)
checkmate::assert_logical(set_auc_normalizers, len = 1)
checkmate::assert_logical(set_normalizers, len = 1)
checkmate::assert_logical(set_prior_h0, len = 1)
prefit_checks(model, data)

# Get Stan model object
stan_model <- create_stan_model(filepath = filepath)

# Set normalizing locations and scales (side effect)
model$set_normalizers(data)
if (!is.null(data$dosing) && set_auc_normalizers) {
mu_CL <- exp(-2)
aaa <- data$dosing$dose_ss / mu_CL
loc <- mean(aaa)
sca <- stats::sd(aaa)
model$set_auc_normalizers(loc, sca)
# Set prior mean baseline hazard rates (side effect)
if (set_prior_h0) {
model$set_prior_mean_h0_data(data)
}

# Set covariate normalizing locations and scales (side effect)
if (set_normalizers) {
model$set_normalizers(data)
if (!is.null(data$dosing)) {
mu_CL <- exp(-2)
aaa <- data$dosing$dose_ss / mu_CL
loc <- mean(aaa)
sca <- stats::sd(aaa)
model$set_auc_normalizers(loc, sca)
}
}

# Set max PK concentration
Expand All @@ -106,10 +117,6 @@ fit_stan <- function(model, data,
model$pk_model$set_max_conc(MC)
}

# Set prior mean baseline hazard rates (side effect)
df_ttype <- average_haz_per_ttype(data$paths) |> dplyr::arrange(.data$trans_idx)
model$set_prior_mean_h0(exp(df_ttype$log_h0_avg))

# Create Stan input list
sd <- create_stan_data(model, data)

Expand Down
19 changes: 19 additions & 0 deletions man/MultiStateModel.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 6 additions & 2 deletions man/fit_stan.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.