@@ -292,9 +292,9 @@ msmfit_covariate_effects <- function(fit) {
292292 df <- rbind(df , df_j )
293293 }
294294 if (fit $ model $ has_pk()) {
295- rv <- as.vector(fit $ get_draws(" beta_auc " )[1 , 1 , ])
295+ rv <- as.vector(fit $ get_draws(" beta_xpsr " )[1 , 1 , ])
296296 df_j <- data.frame (
297- covariate = " ss_auc " , beta = rv ,
297+ covariate = " xpsr " , beta = rv ,
298298 target_state_idx = fit $ model $ target_states()
299299 )
300300 df <- rbind(df , df_j )
@@ -344,9 +344,11 @@ mat2list <- function(mat) {
344344# ' @param oos Out-of-sample mode? If \code{FALSE}, the possible subject-specific
345345# ' fitted parameters are used. If \code{TRUE}, acting
346346# ' as if the subjects are new.
347+ # ' @param log Get logarithm of params?
347348# ' @return A list with length equal to number of draws.
348- msmfit_pk_params <- function (fit , oos = FALSE , data = NULL ) {
349+ msmfit_pk_params <- function (fit , oos = FALSE , data = NULL , log = FALSE ) {
349350 check_oos(oos , data )
351+ checkmate :: assert_logical(log , len = 1 )
350352 sd <- msmfit_stan_data(fit , data )
351353 S <- fit $ num_draws()
352354
@@ -372,9 +374,9 @@ msmfit_pk_params <- function(fit, oos = FALSE, data = NULL) {
372374 # Call exposed Stan function for each draw (not optimal)
373375 out <- list ()
374376 for (s in seq_len(S )) {
375- theta <- NULL
377+ log_theta <- NULL
376378 if (sd $ do_pk == 1 ) {
377- theta <- compute_theta_pk (
379+ log_theta <- compute_log_theta_pk (
378380 mat2list(t(log_z [s , 1 , , ])),
379381 log_mu [s , 1 , ],
380382 log_sig [s , 1 , ],
@@ -386,6 +388,11 @@ msmfit_pk_params <- function(fit, oos = FALSE, data = NULL) {
386388 mat2list(t(sd $ x_V2 ))
387389 )
388390 }
391+ if (log ) {
392+ theta <- log_theta
393+ } else {
394+ theta <- exp(log_theta )
395+ }
389396 out [[s ]] <- theta
390397 }
391398 out
@@ -400,18 +407,18 @@ msmfit_exposure <- function(fit, oos = FALSE, data = NULL) {
400407
401408 # Get draws
402409 sd <- msmfit_stan_data(fit , data )
403- pkpar <- msmfit_pk_params(fit , oos , data )
410+ log_pkpar <- msmfit_pk_params(fit , oos , data , log = TRUE )
404411
405412 # Call exposed Stan function
406413 S <- fit $ num_draws()
407414 out <- list ()
408415 for (s in seq_len(S )) {
409416 if (sd $ do_pk == 1 ) {
410- x_auc <- sd $ dose_ss / ( pkpar [[ s ]][, 2 ] * pkpar [[s ]][, 3 ] ) # D/(CL*V2)
417+ x_xpsr <- log_ss_area_under_conc( sd $ dose_ss , log_pkpar [[s ]]) # log D/(CL*V2)
411418 } else {
412- x_auc <- NULL
419+ x_xpsr <- NULL
413420 }
414- out [[s ]] <- x_auc
421+ out [[s ]] <- x_xpsr
415422 }
416423 out
417424}
@@ -445,16 +452,16 @@ msmfit_log_hazard_multipliers <- function(fit, oos = FALSE, data = NULL) {
445452
446453 # Get draws
447454 sd <- msmfit_stan_data(fit , data )
448- auc <- msmfit_exposure(fit , oos , data )
455+ xpsr <- msmfit_exposure(fit , oos , data )
449456 S <- fit $ num_draws()
450457 beta_oth <- fit $ get_draws_of(" beta_oth" )
451458 if (is.null(beta_oth )) {
452459 beta_oth <- array (0 , dim = c(S , 1 , 0 , sd $ N_trans_types ))
453460 }
454461 if (sd $ do_pk == 1 ) {
455- beta_auc <- fit $ get_draws_of(" beta_auc " )
462+ beta_xpsr <- fit $ get_draws_of(" beta_xpsr " )
456463 } else {
457- beta_auc <- array (0 , dim = c(S , 1 , 0 , sd $ N_trans_types ))
464+ beta_xpsr <- array (0 , dim = c(S , 1 , 0 , sd $ N_trans_types ))
458465 }
459466
460467 # Create x_haz_long (long version of hazard covariates vector)
@@ -465,14 +472,14 @@ msmfit_log_hazard_multipliers <- function(fit, oos = FALSE, data = NULL) {
465472 } else {
466473 x_haz_long <- array (0 , dim = c(0 , sd $ N_int ))
467474 }
468- an <- fit $ model $ get_auc_normalizers ()
475+ an <- fit $ model $ get_xpsr_normalizers ()
469476
470477 # Call exposed Stan function for each draw (not optimal)
471478 out <- list ()
472479 for (s in seq_len(S )) {
473480 if (sd $ do_pk == 1 ) {
474- ba <- list (beta_auc [s , 1 , 1 , ])
475- aa <- list (auc [[s ]][sd $ idx_sub ])
481+ ba <- list (beta_xpsr [s , 1 , 1 , ])
482+ aa <- list (xpsr [[s ]][sd $ idx_sub ])
476483 } else {
477484 ba <- NULL
478485 aa <- NULL
0 commit comments