diff --git a/DESCRIPTION b/DESCRIPTION index bfc79d7..ba02323 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: bmstate Type: Package Title: Bayesian multistate modeling -Version: 0.3.1 +Version: 0.3.3 Authors@R: c(person(given = "Juho", family = "Timonen", diff --git a/R/MultistateModel.R b/R/MultistateModel.R index 3a357a9..020b4e1 100644 --- a/R/MultistateModel.R +++ b/R/MultistateModel.R @@ -47,7 +47,7 @@ MultistateModel <- R6::R6Class("MultistateModel", categorical = NULL, normalizer_locations = NULL, normalizer_scales = NULL, - xpsr_normalizer_loc = 7.5, + xpsr_normalizer_loc = 5.5, # corresponds to about dose=30 xpsr_normalizer_scale = 0.5, n_grid = NULL, simulate_log_hazard_multipliers = function(df_subjects, beta) { diff --git a/R/MultistateModelFit.R b/R/MultistateModelFit.R index 6a8f654..c16d01c 100644 --- a/R/MultistateModelFit.R +++ b/R/MultistateModelFit.R @@ -414,7 +414,7 @@ msmfit_exposure <- function(fit, oos = FALSE, data = NULL) { out <- list() for (s in seq_len(S)) { if (sd$do_pk == 1) { - x_xpsr <- log_ss_area_under_conc(sd$dose_ss, log_pkpar[[s]]) # log D/(CL*V2) + x_xpsr <- log_ss_area_under_conc(sd$dose_ss, log_pkpar[[s]]) # log D/CL } else { x_xpsr <- NULL } diff --git a/R/PKModel.R b/R/PKModel.R index 96bec24..dac6723 100644 --- a/R/PKModel.R +++ b/R/PKModel.R @@ -110,11 +110,9 @@ PKModel <- R6::R6Class("PKModel", #' @return A numeric value compute_xpsr = function(theta, dose) { CL <- theta[2] - V2 <- theta[3] checkmate::assert_number(CL, lower = 0) - checkmate::assert_number(V2, lower = 0) checkmate::assert_number(dose, lower = 0) - log(dose) - log(CL) - log(V2) + log(dose) - log(CL) }, #' @description Simulate data with many subjects diff --git a/R/stan.R b/R/stan.R index 00cb5b6..0403066 100644 --- a/R/stan.R +++ b/R/stan.R @@ -102,8 +102,7 @@ fit_stan <- function(model, data, model$set_normalizers(data) if (!is.null(data$dosing)) { log_mu_CL <- -2 # should match msm.stan - log_mu_V2 <- -2 # should match msm.stan - aaa <- log(data$dosing$dose_ss) - log_mu_CL - log_mu_V2 + aaa <- log(data$dosing$dose_ss) - log_mu_CL loc <- mean(aaa) sca <- stats::sd(aaa) model$set_xpsr_normalizers(loc, sca) diff --git a/inst/stan/msm.stan b/inst/stan/msm.stan index 2ae604b..389dd88 100644 --- a/inst/stan/msm.stan +++ b/inst/stan/msm.stan @@ -2,7 +2,7 @@ functions { // log SS AUC vector log_ss_area_under_conc(vector dose_ss, matrix log_theta_pk){ - return(log(dose_ss) - log_theta_pk[:,2] - log_theta_pk[:,3]) ; // log D/(CL*V2) + return(log(dose_ss) - log_theta_pk[:,2]) ; // log D/CL } // log of hazard multiplier @@ -448,7 +448,7 @@ model { if(do_haz == 1){ if(nc_haz > 0){ for(k in 1:nc_haz){ - beta_oth[1, k] ~ normal(0, 2); + beta_oth[1, k] ~ normal(0, 1); } } if(I_xpsr==1){ diff --git a/vignettes/analysis.Rmd b/vignettes/analysis.Rmd index 7c49921..eb683fb 100644 --- a/vignettes/analysis.Rmd +++ b/vignettes/analysis.Rmd @@ -142,7 +142,7 @@ mod$get_knots() We fit the model by optimizing. ```{r} -fit <- fit_stan(mod, data = pd, method = "optimize") +fit <- fit_stan(mod, data = pd, method = "optimize", init = 0.1) ``` ## Inferred baseline hazards