From 41ca20d55f2fa08cd86acb256ac16df75f969835 Mon Sep 17 00:00:00 2001 From: pengguanya Date: Thu, 13 Jun 2024 22:24:30 +0200 Subject: [PATCH] 801 cleanup pseudo dual simulations (#819) * update code and test * update doc * [skip style] [skip vbump] Restyle files * update var * fix methods * fix par names * trigger checks * trigger checks * trigger checks --------- Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- NAMESPACE | 1 + R/Design-methods.R | 48 +++---- R/Simulations-class.R | 159 +++++++++++------------- R/Simulations-methods.R | 18 +-- R/Simulations-validity.R | 10 +- man/GeneralSimulations-class.Rd | 10 +- man/PseudoDualSimulations-class.Rd | 70 +++++++---- man/PseudoDualSimulations.Rd | 43 ------- man/v_pseudo_simulations.Rd | 6 +- tests/testthat/test-Simulations-class.R | 113 ++++++++++++++++- 10 files changed, 279 insertions(+), 199 deletions(-) delete mode 100644 man/PseudoDualSimulations.Rd diff --git a/NAMESPACE b/NAMESPACE index 997302dc8..378bb6b3a 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -387,6 +387,7 @@ export(OneParExpPrior) export(OneParLogNormalPrior) export(ProbitLogNormal) export(ProbitLogNormalRel) +export(PseudoDualSimulations) export(PseudoSimulations) export(Quantiles2LogisticNormal) export(RuleDesign) diff --git a/R/Design-methods.R b/R/Design-methods.R index a76559369..7642d502b 100644 --- a/R/Design-methods.R +++ b/R/Design-methods.R @@ -2878,17 +2878,17 @@ setMethod("simulate", final_td_target_end_of_trial_at_dose_grid = TDtargetEndOfTrialDoseGridList, final_cis = CIList, final_ratios = ratioList, - FinalGstarEstimates = GstarList, - FinalGstarAtDoseGrid = GstarAtDoseGridList, - FinalGstarCIs = CIGstarList, - FinalGstarRatios = ratioGstarList, + final_gstar_estimates = GstarList, + final_gstar_at_dose_grid = GstarAtDoseGridList, + final_gstar_cis = CIGstarList, + final_gstar_ratios = ratioGstarList, final_tdeot_cis = CITDEOTList, final_tdeot_ratios = ratioTDEOTList, - FinalOptimalDose = OptimalDoseList, - FinalOptimalDoseAtDoseGrid = OptimalDoseAtDoseGridList, + final_optimal_dose = OptimalDoseList, + final_optimal_dose_at_dose_grid = OptimalDoseAtDoseGridList, fit = fitDLEList, - fitEff = fitEffList, - sigma2est = sigma2Estimates, + fit_eff = fitEffList, + sigma2_est = sigma2Estimates, stop_reasons = stopReasons, stop_report = stop_report, seed = RNGstate @@ -3431,17 +3431,17 @@ setMethod("simulate", final_td_target_end_of_trial_at_dose_grid = TDtargetEndOfTrialDoseGridList, final_cis = CIList, final_ratios = ratioList, - FinalGstarEstimates = GstarList, - FinalGstarAtDoseGrid = GstarAtDoseGridList, - FinalGstarCIs = CIGstarList, - FinalGstarRatios = ratioGstarList, + final_gstar_estimates = GstarList, + final_gstar_at_dose_grid = GstarAtDoseGridList, + final_gstar_cis = CIGstarList, + final_gstar_ratios = ratioGstarList, final_tdeot_cis = CITDEOTList, final_tdeot_ratios = ratioTDEOTList, - FinalOptimalDose = OptimalDoseList, - FinalOptimalDoseAtDoseGrid = OptimalDoseAtDoseGridList, + final_optimal_dose = OptimalDoseList, + final_optimal_dose_at_dose_grid = OptimalDoseAtDoseGridList, fit = fitDLEList, - fitEff = fitEffList, - sigma2est = sigma2Estimates, + fit_eff = fitEffList, + sigma2_est = sigma2Estimates, sigma2betaWest = sigma2betaWEstimates, stop_reasons = stopReasons, stop_report = stop_report, @@ -3904,17 +3904,17 @@ setMethod("simulate", final_td_target_end_of_trial_at_dose_grid = TDtargetEndOfTrialDoseGridList, final_cis = CIList, final_ratios = ratioList, - FinalGstarEstimates = GstarList, - FinalGstarAtDoseGrid = GstarAtDoseGridList, - FinalGstarCIs = CIGstarList, - FinalGstarRatios = ratioGstarList, + final_gstar_estimates = GstarList, + final_gstar_at_dose_grid = GstarAtDoseGridList, + final_gstar_cis = CIGstarList, + final_gstar_ratios = ratioGstarList, final_tdeot_cis = CITDEOTList, final_tdeot_ratios = ratioTDEOTList, - FinalOptimalDose = OptimalDoseList, - FinalOptimalDoseAtDoseGrid = OptimalDoseAtDoseGridList, + final_optimal_dose = OptimalDoseList, + final_optimal_dose_at_dose_grid = OptimalDoseAtDoseGridList, fit = fitDLEList, - fitEff = fitEffList, - sigma2est = sigma2Estimates, + fit_eff = fitEffList, + sigma2_est = sigma2Estimates, stop_reasons = stopReasons, stop_report = stop_report, seed = RNGstate diff --git a/R/Simulations-class.R b/R/Simulations-class.R index 076fe65af..90eeaa981 100644 --- a/R/Simulations-class.R +++ b/R/Simulations-class.R @@ -8,10 +8,7 @@ NULL ## class ---- -#' `GeneralSimulations` -#' -#' @description `r lifecycle::badge("stable")` -#' +#' `GeneralSimulations` @description `r lifecycle::badge("stable")` #' This class captures trial simulations. #' Here also the random generator state before starting the simulation is #' saved, in order to be able to reproduce the outcome. For this just use @@ -612,112 +609,100 @@ PseudoSimulations <- function(fit, stop("Class PseudoSimulations cannot be instantiated directly. Please use one of its subclasses instead.") } -# nolint start -## =============================================================================== -## ------------------------------------------------------------------------------- -## Class for Pseudo simulation using DLE and efficacy responses (Pseudo models except 'EffFlexi' model) -## ----------------------------------------------------------------------------------- +# PseudoDualSimulations ---- -##' Class `PseudoDualSimulations` -##' -##' This is a class which captures the trial simulations design using both the -##' DLE and efficacy responses. The design of model from \code{\linkS4class{ModelTox}} -##' class and the efficacy model from \code{\linkS4class{ModelEff}} class -##' (except \code{\linkS4class{EffFlexi}} class). It contains all slots from -##' \code{\linkS4class{GeneralSimulations}} and \code{\linkS4class{PseudoSimulations}} object. -##' In comparison to the parent class \code{\linkS4class{PseudoSimulations}}, -##' it contains additional slots to -##' capture the dose-efficacy curve and the sigma2 estimates. -##' -##' @slot fitEff list of the final values. If DLE and efficacy samples are generated, it contains the -##' final fitted values. If no DLE and efficacy samples are used, it contains the modal estimates of the -##' parameters in the two models and the posterior estimates of the probabilities of the occurrence of a -##' DLE and the expected efficacy responses. -##' @slot FinalGstarEstimates a vector of the final estimates of Gstar at the end of each simulations. -##' @slot FinalGstarAtDoseGrid is a vector of the final estimates of Gstar at dose Grid at the end of each simulations -##' @slot FinalGstarCIs is the list of all 95% credibility interval of the final estimates of Gstar -##' @slot FinalGstarRatios is the vector of the ratios of the CI, the ratio of the upper to the lower 95% credibility interval -##' of the final estimates of Gstar -##' @slot FinalOptimalDose is the vector of the final optimal dose, the minimum of the final TDtargetEndOfTrial estimates and Gstar -##' estimates -##' @slot FinalOptimalDoseAtDoseGrid is the vector of the final optimal dose, the minimum of the final TDtargetEndOfTrial estimates -##' and Gstar estimates at dose Grid -##' @slot sigma2est the vector of the final posterior mean sigma2 estimates -##' -##' @export +## class ---- + +#' `PseudoDualSimulations` +#' +#' @description `r lifecycle::badge("stable")` +#' This class conducts trial simulations for designs using both the +#' DLE and efficacy responses. It defines final values for +#' efficacy fit and DLE, estimates of Gstar, optimal dose and sigma2. +#' +#' @slot fit_eff (`list`)\cr final values of efficacy fit. +#' @slot final_gstar_estimates (`numeric`)\cr final Gstar estimates. +#' @slot final_gstar_at_dose_grid (`numeric`)\cr final Gstar estimates at dose grid. +#' @slot final_gstar_cis (`list`)\cr list of 95% confidence interval for Gstar estimates. +#' @slot final_gstar_ratios (`numeric`)\cr ratios of confidence intervals for Gstar estimates. +#' @slot final_optimal_dose (`numeric`)\cr final optimal dose. +#' @slot final_optimal_dose_at_dose_grid (`numeric`)\cr final optimal dose at dose grid. +#' @slot sigma2_est (`numeric`)\cr final sigma2 estimates. +#' +#' @aliases PseudoDualSimulations +#' @export .PseudoDualSimulations <- setClass( Class = "PseudoDualSimulations", - representation( - fitEff = "list", - FinalGstarEstimates = "numeric", - FinalGstarAtDoseGrid = "numeric", - FinalGstarCIs = "list", - FinalGstarRatios = "numeric", - FinalOptimalDose = "numeric", - FinalOptimalDoseAtDoseGrid = "numeric", - sigma2est = "numeric" + slots = c( + fit_eff = "list", + final_gstar_estimates = "numeric", + final_gstar_at_dose_grid = "numeric", + final_gstar_cis = "list", + final_gstar_ratios = "numeric", + final_optimal_dose = "numeric", + final_optimal_dose_at_dose_grid = "numeric", + sigma2_est = "numeric" ), - prototype( - FinalGstarEstimates = c(0.1, 0.1), - FinalGstarAtDoseGrid = c(0.1, 0.1), - FinalGstarCIs = list( - c(0.1, 0.2), - c(0.1, 0.2) - ), - FinalGstarRatios = c(0.01, 0.01), - FinalOptimalDose = c(0.01, 0.01), - FinalOptimalDoseAtDoseGrid = c(0.01, 0.01), - sigma2est = c(0.001, 0.002) + prototype = prototype( + final_gstar_estimates = c(0.1, 0.1), + final_gstar_at_dose_grid = c(0.1, 0.1), + final_gstar_cis = list(c(0.1, 0.2), c(0.1, 0.2)), + final_gstar_ratios = c(0.01, 0.01), + final_optimal_dose = c(0.01, 0.01), + final_optimal_dose_at_dose_grid = c(0.01, 0.01), + sigma2_est = c(0.001, 0.002) ), contains = "PseudoSimulations", validity = v_pseudo_dual_simulations ) -validObject(.PseudoDualSimulations()) - -##' Initialization function for 'DualPseudoSimulations' class -##' @param fitEff please refer to \code{\linkS4class{PseudoDualSimulations}} class object -##' @param FinalGstarEstimates please refer to \code{\linkS4class{PseudoDualSimulations}} class object -##' @param FinalGstarAtDoseGrid please refer to \code{\linkS4class{PseudoDualSimulations}} class object -##' @param FinalGstarCIs please refer to \code{\linkS4class{PseudoDualSimulations}} class object -##' @param FinalGstarRatios please refer to \code{\linkS4class{PseudoDualSimulations}} class object -##' @param FinalOptimalDose please refer to \code{\linkS4class{PseudoDualSimulations}} class object -##' @param FinalOptimalDoseAtDoseGrid please refer to \code{\linkS4class{PseudoDualSimulations}} class object -##' @param sigma2est please refer to \code{\linkS4class{PseudoDualSimulations}} class object -##' @param \dots additional parameters from \code{\linkS4class{PseudoSimulations}} -##' @return the \code{\linkS4class{PseudoDualSimulations}} object -PseudoDualSimulations <- function(fitEff, - FinalGstarEstimates, - FinalGstarAtDoseGrid, - FinalGstarCIs, - FinalGstarRatios, - FinalOptimalDose, - FinalOptimalDoseAtDoseGrid, - sigma2est, +## constructor ---- + +#' @rdname PseudoDualSimulations-class +#' +#' @param fit_eff (`list`)\cr see slot definition. +#' @param final_gstar_estimates (`numeric`)\cr see slot definition. +#' @param final_gstar_at_dose_grid (`numeric`)\cr see slot definition. +#' @param final_gstar_cis (`list`)\cr see slot definition. +#' @param final_gstar_ratios (`numeric`)\cr see slot definition. +#' @param final_optimal_dose (`numeric`)\cr see slot definition. +#' @param final_optimal_dose_at_dose_grid (`numeric`)\cr see slot definition. +#' @param sigma2_est (`numeric`)\cr see slot definition. +#' @param \dots additional parameters from [`PseudoSimulations`] +#' @export +PseudoDualSimulations <- function(fit_eff, + final_gstar_estimates, + final_gstar_at_dose_grid, + final_gstar_cis, + final_gstar_ratios, + final_optimal_dose, + final_optimal_dose_at_dose_grid, + sigma2_est, ...) { start <- PseudoSimulations(...) .PseudoDualSimulations(start, - fitEff = fitEff, - FinalGstarEstimates = FinalGstarEstimates, - FinalGstarAtDoseGrid = FinalGstarAtDoseGrid, - FinalGstarCIs = FinalGstarCIs, - FinalGstarRatios = FinalGstarRatios, - FinalOptimalDose = FinalOptimalDose, - FinalOptimalDoseAtDoseGrid = FinalOptimalDoseAtDoseGrid, - sigma2est = sigma2est + fit_eff = fit_eff, + final_gstar_estimates = final_gstar_estimates, + final_gstar_at_dose_grid = final_gstar_at_dose_grid, + final_gstar_cis = final_gstar_cis, + final_gstar_ratios = final_gstar_ratios, + final_optimal_dose = final_optimal_dose, + final_optimal_dose_at_dose_grid = final_optimal_dose_at_dose_grid, + sigma2_est = sigma2_est ) } ## default constructor ---- #' @rdname PseudoDualSimulations-class -#' @note Typically, end users will not use the `.DefaultPseudoDualSimulations()` function. +#' @note Do not use the `.DefaultPseudoDualSimulations()` function. #' @export .DefaultPseudoDualSimulations <- function() { - stop(paste0("Class PseudoDualSimulations cannot be instantiated directly. Please use one of its subclasses instead.")) + stop("Class PseudoDualSimulations cannot be instantiated directly. Please use a subclass.") } +# nolint start # PseudoDualFlexiSimulations ---- ## class ---- diff --git a/R/Simulations-methods.R b/R/Simulations-methods.R index 9a3a892bf..dccaa4285 100644 --- a/R/Simulations-methods.R +++ b/R/Simulations-methods.R @@ -2304,7 +2304,7 @@ setMethod("plot", ## save the plot plotList[[plotIndex <- plotIndex + 1L]] <- qplot(factor(0), - y = y, data = data.frame(y = x@sigma2est), geom = "boxplot", + y = y, data = data.frame(y = x@sigma2_est), geom = "boxplot", xlab = "", ylab = "Efficacy variance estimates" ) + coord_flip() + scale_x_discrete(breaks = NULL) @@ -2504,26 +2504,26 @@ setMethod("summary", } ## A summary for all final Gstar obtained - GstarSummary <- summary(object@FinalGstarEstimates) - ratioGstarSummary <- summary(object@FinalGstarRatios) + GstarSummary <- summary(object@final_gstar_estimates) + ratioGstarSummary <- summary(object@final_gstar_ratios) - FinalDoseRecSummary <- summary(object@FinalOptimalDose) + FinalDoseRecSummary <- summary(object@final_optimal_dose) FinalRatioSummary <- summary(object@final_ratios) ## find names in the fit efficacy list (check it is with or without samples) - FitNames <- sapply(object@fitEff, names) + FitNames <- sapply(object@fit_eff, names) if ("ExpEff" %in% FitNames) { ## fitted efficacy level at dose most often selected EffFitAtDoseMostSelected <- sapply( - object@fitEff, + object@fit_eff, function(f) { f$ExpEff[xMostSelected] } ) meanEffFitMatrix <- sapply( - object@fitEff, + object@fit_eff, "[[", "ExpEff" ) @@ -2536,7 +2536,7 @@ setMethod("summary", } else { ## fitted efficacy level at dose most often selected EffFitAtDoseMostSelected <- sapply( - object@fitEff, + object@fit_eff, function(f) { f$middle[xMostSelected] } @@ -2546,7 +2546,7 @@ setMethod("summary", ## at each dose level ## (this is required for plotting) meanEffFitMatrix <- sapply( - object@fitEff, + object@fit_eff, "[[", "middle" ) diff --git a/R/Simulations-validity.R b/R/Simulations-validity.R index 8f3439593..31c219f8e 100644 --- a/R/Simulations-validity.R +++ b/R/Simulations-validity.R @@ -123,16 +123,16 @@ v_pseudo_simulations <- function(object) { } #' @describeIn v_pseudo_simulations validates that the [`PseudoDualSimulations`] object -#' contains valid `fitEff`, `FinalGstarEstimates` , `FinalGstarAtDoseGrid`, -#' `FinalGstarCIs` , `FinalGstarRatios`, `FinalOptimalDose`, `FinalOptimalDoseAtDoseGrid` -#' object and valid `sigma2est` simulations. +#' contains valid `fit_eff`, `final_gstar_estimates` , `final_gstar_at_dose_grid`, +#' `final_gstar_cis` , `final_gstar_ratios`, `final_optimal_dose`, `final_optimal_dose_at_dose_grid` +#' object and valid `sigma2_est` simulations. v_pseudo_dual_simulations <- function(object) { v <- Validate() nSims <- length(object@data) v$check( - identical(length(object@sigma2est), nSims), - "sigma2est has to have same length as data" + identical(length(object@sigma2_est), nSims), + "sigma2_est has to have same length as data" ) v$result() } diff --git a/man/GeneralSimulations-class.Rd b/man/GeneralSimulations-class.Rd index f943c010b..ef9959986 100644 --- a/man/GeneralSimulations-class.Rd +++ b/man/GeneralSimulations-class.Rd @@ -6,7 +6,12 @@ \alias{.GeneralSimulations} \alias{GeneralSimulations} \alias{.DefaultGeneralSimulations} -\title{\code{GeneralSimulations}} +\title{\code{GeneralSimulations} @description \ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#stable}{\figure{lifecycle-stable.svg}{options: alt='[Stable]'}}}{\strong{[Stable]}} +This class captures trial simulations. +Here also the random generator state before starting the simulation is +saved, in order to be able to reproduce the outcome. For this just use +\code{\link{set.seed}} with the \code{seed} as argument before running +\code{\link{simulate,Design-method}}.} \usage{ GeneralSimulations(data, doses, seed) @@ -20,8 +25,7 @@ GeneralSimulations(data, doses, seed) \item{seed}{(\code{integer})\cr see slot definition.} } \description{ -\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#stable}{\figure{lifecycle-stable.svg}{options: alt='[Stable]'}}}{\strong{[Stable]}} - +\code{GeneralSimulations} @description \ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#stable}{\figure{lifecycle-stable.svg}{options: alt='[Stable]'}}}{\strong{[Stable]}} This class captures trial simulations. Here also the random generator state before starting the simulation is saved, in order to be able to reproduce the outcome. For this just use diff --git a/man/PseudoDualSimulations-class.Rd b/man/PseudoDualSimulations-class.Rd index 83a19a59d..388cb2db6 100644 --- a/man/PseudoDualSimulations-class.Rd +++ b/man/PseudoDualSimulations-class.Rd @@ -4,47 +4,69 @@ \name{PseudoDualSimulations-class} \alias{PseudoDualSimulations-class} \alias{.PseudoDualSimulations} +\alias{PseudoDualSimulations} \alias{.DefaultPseudoDualSimulations} -\title{Class \code{PseudoDualSimulations}} +\title{\code{PseudoDualSimulations}} \usage{ +PseudoDualSimulations( + fit_eff, + final_gstar_estimates, + final_gstar_at_dose_grid, + final_gstar_cis, + final_gstar_ratios, + final_optimal_dose, + final_optimal_dose_at_dose_grid, + sigma2_est, + ... +) + .DefaultPseudoDualSimulations() } +\arguments{ +\item{fit_eff}{(\code{list})\cr see slot definition.} + +\item{final_gstar_estimates}{(\code{numeric})\cr see slot definition.} + +\item{final_gstar_at_dose_grid}{(\code{numeric})\cr see slot definition.} + +\item{final_gstar_cis}{(\code{list})\cr see slot definition.} + +\item{final_gstar_ratios}{(\code{numeric})\cr see slot definition.} + +\item{final_optimal_dose}{(\code{numeric})\cr see slot definition.} + +\item{final_optimal_dose_at_dose_grid}{(\code{numeric})\cr see slot definition.} + +\item{sigma2_est}{(\code{numeric})\cr see slot definition.} + +\item{\dots}{additional parameters from \code{\link{PseudoSimulations}}} +} \description{ -This is a class which captures the trial simulations design using both the -DLE and efficacy responses. The design of model from \code{\linkS4class{ModelTox}} -class and the efficacy model from \code{\linkS4class{ModelEff}} class -(except \code{\linkS4class{EffFlexi}} class). It contains all slots from -\code{\linkS4class{GeneralSimulations}} and \code{\linkS4class{PseudoSimulations}} object. -In comparison to the parent class \code{\linkS4class{PseudoSimulations}}, -it contains additional slots to -capture the dose-efficacy curve and the sigma2 estimates. +\ifelse{html}{\href{https://lifecycle.r-lib.org/articles/stages.html#stable}{\figure{lifecycle-stable.svg}{options: alt='[Stable]'}}}{\strong{[Stable]}} +This class conducts trial simulations for designs using both the +DLE and efficacy responses. It defines final values for +efficacy fit and DLE, estimates of Gstar, optimal dose and sigma2. } \section{Slots}{ \describe{ -\item{\code{fitEff}}{list of the final values. If DLE and efficacy samples are generated, it contains the -final fitted values. If no DLE and efficacy samples are used, it contains the modal estimates of the -parameters in the two models and the posterior estimates of the probabilities of the occurrence of a -DLE and the expected efficacy responses.} +\item{\code{fit_eff}}{(\code{list})\cr final values of efficacy fit.} -\item{\code{FinalGstarEstimates}}{a vector of the final estimates of Gstar at the end of each simulations.} +\item{\code{final_gstar_estimates}}{(\code{numeric})\cr final Gstar estimates.} -\item{\code{FinalGstarAtDoseGrid}}{is a vector of the final estimates of Gstar at dose Grid at the end of each simulations} +\item{\code{final_gstar_at_dose_grid}}{(\code{numeric})\cr final Gstar estimates at dose grid.} -\item{\code{FinalGstarCIs}}{is the list of all 95\% credibility interval of the final estimates of Gstar} +\item{\code{final_gstar_cis}}{(\code{list})\cr list of 95\% confidence interval for Gstar estimates.} -\item{\code{FinalGstarRatios}}{is the vector of the ratios of the CI, the ratio of the upper to the lower 95\% credibility interval -of the final estimates of Gstar} +\item{\code{final_gstar_ratios}}{(\code{numeric})\cr ratios of confidence intervals for Gstar estimates.} -\item{\code{FinalOptimalDose}}{is the vector of the final optimal dose, the minimum of the final TDtargetEndOfTrial estimates and Gstar -estimates} +\item{\code{final_optimal_dose}}{(\code{numeric})\cr final optimal dose.} -\item{\code{FinalOptimalDoseAtDoseGrid}}{is the vector of the final optimal dose, the minimum of the final TDtargetEndOfTrial estimates -and Gstar estimates at dose Grid} +\item{\code{final_optimal_dose_at_dose_grid}}{(\code{numeric})\cr final optimal dose at dose grid.} -\item{\code{sigma2est}}{the vector of the final posterior mean sigma2 estimates} +\item{\code{sigma2_est}}{(\code{numeric})\cr final sigma2 estimates.} }} \note{ -Typically, end users will not use the \code{.DefaultPseudoDualSimulations()} function. +Do not use the \code{.DefaultPseudoDualSimulations()} function. } diff --git a/man/PseudoDualSimulations.Rd b/man/PseudoDualSimulations.Rd deleted file mode 100644 index 1c323c1a8..000000000 --- a/man/PseudoDualSimulations.Rd +++ /dev/null @@ -1,43 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/Simulations-class.R -\name{PseudoDualSimulations} -\alias{PseudoDualSimulations} -\title{Initialization function for 'DualPseudoSimulations' class} -\usage{ -PseudoDualSimulations( - fitEff, - FinalGstarEstimates, - FinalGstarAtDoseGrid, - FinalGstarCIs, - FinalGstarRatios, - FinalOptimalDose, - FinalOptimalDoseAtDoseGrid, - sigma2est, - ... -) -} -\arguments{ -\item{fitEff}{please refer to \code{\linkS4class{PseudoDualSimulations}} class object} - -\item{FinalGstarEstimates}{please refer to \code{\linkS4class{PseudoDualSimulations}} class object} - -\item{FinalGstarAtDoseGrid}{please refer to \code{\linkS4class{PseudoDualSimulations}} class object} - -\item{FinalGstarCIs}{please refer to \code{\linkS4class{PseudoDualSimulations}} class object} - -\item{FinalGstarRatios}{please refer to \code{\linkS4class{PseudoDualSimulations}} class object} - -\item{FinalOptimalDose}{please refer to \code{\linkS4class{PseudoDualSimulations}} class object} - -\item{FinalOptimalDoseAtDoseGrid}{please refer to \code{\linkS4class{PseudoDualSimulations}} class object} - -\item{sigma2est}{please refer to \code{\linkS4class{PseudoDualSimulations}} class object} - -\item{\dots}{additional parameters from \code{\linkS4class{PseudoSimulations}}} -} -\value{ -the \code{\linkS4class{PseudoDualSimulations}} object -} -\description{ -Initialization function for 'DualPseudoSimulations' class -} diff --git a/man/v_pseudo_simulations.Rd b/man/v_pseudo_simulations.Rd index fa5bba1b4..33fcbdaa4 100644 --- a/man/v_pseudo_simulations.Rd +++ b/man/v_pseudo_simulations.Rd @@ -34,9 +34,9 @@ contains valid \code{fit}, \code{FinalTDtargetEndOfTrialEstimates} , object and valid \code{stopReasons} simulations. \item \code{v_pseudo_dual_simulations()}: validates that the \code{\link{PseudoDualSimulations}} object -contains valid \code{fitEff}, \code{FinalGstarEstimates} , \code{FinalGstarAtDoseGrid}, -\code{FinalGstarCIs} , \code{FinalGstarRatios}, \code{FinalOptimalDose}, \code{FinalOptimalDoseAtDoseGrid} -object and valid \code{sigma2est} simulations. +contains valid \code{fit_eff}, \code{final_gstar_estimates} , \code{final_gstar_at_dose_grid}, +\code{final_gstar_cis} , \code{final_gstar_ratios}, \code{final_optimal_dose}, \code{final_optimal_dose_at_dose_grid} +object and valid \code{sigma2_est} simulations. \item \code{v_pseudo_dual_flex_simulations()}: validates that the \code{\link{PseudoDualFlexiSimulations}} object contains valid \code{sigma2betaWest} vector of the final posterior mean diff --git a/tests/testthat/test-Simulations-class.R b/tests/testthat/test-Simulations-class.R index 0bf3a3988..1e468bb58 100644 --- a/tests/testthat/test-Simulations-class.R +++ b/tests/testthat/test-Simulations-class.R @@ -274,7 +274,7 @@ test_that("DualSimulationsSummary generator function works as expected", { expect_valid(result, "DualSimulations") }) -# PseudoSimulations-class +# PseudoSimulations-class ---- test_that("PseudoSimulations generator function works as expected", { result <- expect_silent(.PseudoSimulations()) expect_valid(result, "PseudoSimulations") @@ -368,3 +368,114 @@ test_that(".DefaultPseudoSimulations cannot be instantiated directly", { fixed = FALSE ) }) + +# PseudoDualSimulations-class ---- +test_that("PseudoDualSimulations generator does not throw error and validates", { + result <- expect_silent(.PseudoDualSimulations()) + expect_valid(result, "PseudoDualSimulations") +}) + +test_that("PseudoDualSimulations object can be created with the user constructor", { + fit <- list(c(0.1, 0.2), c(0.3, 0.4)) + + fit_eff <- list( + c(0.1, 0.2), + c(0.3, 0.4) + ) + + final_gstar_estimates <- c(0.05, 0.06) + final_gstar_at_dose_grid <- c(0.07, 0.08) + final_gstar_cis <- list( + c(0.1, 0.2), + c(0.2, 0.3) + ) + final_gstar_ratios <- c(0.2, 0.2) + final_optimal_dose <- c(1, 2) + final_optimal_dose_at_dose_grid <- c(3, 4) + sigma2_est <- c(0.001, 0.002) + + final_td_target_during_trial_estimates <- c(0.1, 0.2) + final_td_target_end_of_trial_estimates <- c(0.1, 0.2) + + final_td_target_during_trial_at_dose_grid <- c(0.1, 0.2) + final_td_target_end_of_trial_at_dose_grid <- c(0.1, 0.2) + + final_tdeot_cis <- list(c(0.1, 0.2), c(0.1, 0.2)) + final_tdeot_ratios <- c(0.1, 0.2) + + final_cis <- list(c(0.1, 0.2), c(0.1, 0.2)) + final_ratios <- c(0.1, 0.2) + + stop_report <- matrix(TRUE, nrow = 2) + stop_reasons <- list("A", "B") + + data <- list( + Data( + x = 1:2, + y = 0:1, + doseGrid = 1:2, + ID = 1L:2L, + cohort = 1L:2L + ), + Data( + x = 3:4, + y = 0:1, + doseGrid = 3:4, + ID = 1L:2L, + cohort = 1L:2L + ) + ) + + doses <- c(1, 2) + + seed <- as.integer(123) + + result <- expect_silent( + PseudoDualSimulations( + fit = fit, + data = data, + doses = doses, + fit_eff = fit_eff, + final_gstar_estimates = final_gstar_estimates, + final_gstar_at_dose_grid = final_gstar_at_dose_grid, + final_gstar_cis = final_gstar_cis, + final_gstar_ratios = final_gstar_ratios, + final_optimal_dose = final_optimal_dose, + final_optimal_dose_at_dose_grid = final_optimal_dose_at_dose_grid, + final_td_target_during_trial_estimates = final_td_target_during_trial_estimates, + final_td_target_end_of_trial_estimates = final_td_target_end_of_trial_estimates, + final_td_target_during_trial_at_dose_grid = final_td_target_during_trial_at_dose_grid, + final_td_target_end_of_trial_at_dose_grid = final_td_target_end_of_trial_at_dose_grid, + final_tdeot_cis = final_tdeot_cis, + final_tdeot_ratios = final_tdeot_ratios, + final_cis = final_cis, + final_ratios = final_ratios, + stop_report = stop_report, + stop_reasons = stop_reasons, + sigma2_est = sigma2_est, + seed = seed + ) + ) + + expect_valid(result, "PseudoDualSimulations") + expect_identical(result@fit_eff, fit_eff) + expect_identical(result@final_gstar_estimates, final_gstar_estimates) + expect_identical(result@final_gstar_at_dose_grid, final_gstar_at_dose_grid) + expect_identical(result@final_gstar_cis, final_gstar_cis) + expect_identical(result@final_gstar_ratios, final_gstar_ratios) + expect_identical(result@final_optimal_dose, final_optimal_dose) + expect_identical(result@final_optimal_dose_at_dose_grid, final_optimal_dose_at_dose_grid) + expect_identical(result@sigma2_est, sigma2_est) +}) + +test_that("PseudoDualSimulations user constructor argument names are as expected", { + expect_function( + PseudoDualSimulations, + args = c( + "fit_eff", "final_gstar_estimates", "final_gstar_at_dose_grid", "final_gstar_cis", + "final_gstar_ratios", "final_optimal_dose", "final_optimal_dose_at_dose_grid", + "sigma2_est", "..." + ), + ordered = TRUE + ) +})