Skip to contents

Source :

set.seed(42)

case_study_config <- yaml::yaml.load_file(system.file("conf/case_studies/aprepitant.yml", package = "BExTE"))
format_case_study_config(case_study_config)
Case Study Configuration
Parameter Value
General
Name Aprepitant
Control Ondansetron
Summary Measure Likelihood binomial
Theta 0 0
Endpoint binary
Null Space left
Sampling Approximation FALSE
Target
Target Control 52
Target Treatment 57
Target Total 109
Target Responses (Control) 42
Target Responses (Treatment) 48
Target Treatment Effect 0.034412955465587
Target Standard Error 0.072936
Source
Source Control 280
Source Treatment 293
Source Total 573
Source Responses (Control) 154
Source Responses (Treatment) 184
Source Treatment Effect 0.0779863481228669
Source Standard Error 0.04100323

Generation of aggregate data

source_data <- SourceData$new(case_study_config)

drift <- 0.1
target_sample_size_per_arm <- 100

target_data <- TargetDataFactory$new()
target_data <- target_data$create(source_data = source_data, case_study_config = case_study_config, target_sample_size_per_arm = target_sample_size_per_arm, treatment_drift = drift, summary_measure_likelihood = source_data$summary_measure_likelihood)
n_replicates <- 10000
data <- target_data$generate(n_replicates = n_replicates)
print(data[1:10,])
##    sample_control_rate sample_treatment_rate sample_size_per_arm
## 1                 0.47                  0.67                 100
## 2                 0.48                  0.66                 100
## 3                 0.48                  0.75                 100
## 4                 0.51                  0.69                 100
## 5                 0.48                  0.71                 100
## 6                 0.63                  0.73                 100
## 7                 0.56                  0.70                 100
## 8                 0.59                  0.78                 100
## 9                 0.50                  0.71                 100
## 10                0.57                  0.70                 100
##    treatment_effect_estimate treatment_effect_standard_error standard_deviation
## 1                       0.20                      0.06857113          0.6857113
## 2                       0.18                      0.06884766          0.6884766
## 3                       0.27                      0.06611354          0.6611354
## 4                       0.18                      0.06810286          0.6810286
## 5                       0.23                      0.06749074          0.6749074
## 6                       0.10                      0.06558963          0.6558963
## 7                       0.14                      0.06755738          0.6755738
## 8                       0.19                      0.06430397          0.6430397
## 9                       0.21                      0.06752037          0.6752037
## 10                      0.13                      0.06746110          0.6746110
target_data$plot_sample(data)

Implementation details

read_function_code(sample_aggregate_binary_data)
## sample_aggregate_binary_data <- function (rate, n, n_replicates) 
## {
##     n_successes <- rbinom(n_replicates, n, rate)
##     return(n_successes/n)
## }
sample_treatment_rate <- sample_aggregate_binary_data(self$treatment_rate,
                                                              self$sample_size_per_arm,
                                                              n_replicates)

sample_control_rate <- sample_aggregate_binary_data(self$control_rate,
                                                    self$sample_size_per_arm,
                                                    n_replicates)

treatment_effect_standard_error <- sqrt(
  sample_treatment_rate * (1 - sample_treatment_rate) / self$sample_size_control + sample_control_rate * (1 - sample_control_rate) / self$sample_size_treatment
)

standard_deviation <- sqrt(
  sample_treatment_rate * (1 - sample_treatment_rate) + sample_control_rate * (1 - sample_control_rate)
)