Skip to contents

Primary analysis

This vignette demonstrates Monte Carlo simulation for evaluating the EC-IPW and EC-AIPW weighting estimators proposed in Zhou et al. (2024) for the primary (placebo-controlled) phase.

1 Simulate a list of datasets for primary analysis

1.1 Create basic setup

# Initialize an empty data list
set.seed(2023)

data_matrix_list_null <- list()
data_matrix_list_alt <- list()
ntrial <- 3

# Specify the significance level alpha
alpha <- 0.05

# Specify the true effect size at the end of the study
true_effect <- 0
alt_effect <- 2.0 # tune this

# Specify column names
covariates_col_name <- c("x1", "x2", "x3", "x4", "x5")
outcome_col_name <- c("y1", "y2")
treatment_col_name <- "A"
trial_status_col_name <- "S"

1.2 Generate simulation data list for null hypothesis

# Sequentially adding in datasets
for (trial_iter in 1:ntrial) {
  # simulate 300 sample
  normal <- copula::normalCopula(param = c(0.8), dim = 4, dispstr = "ar1")

  # ========== generate internal covariates =============
  X_int <- simulate_X_copula(
    n = 200,
    p = 4,
    cp = normal, # copula
    margins = c("binom", "binom", "binom", "exp"), # specify marginal distributions
    paramMargins = list(
      list(size = 1, prob = 0.7), # specify parameters for marginals
      list(size = 1, prob = 0.9),
      list(size = 1, prob = 0.3),
      list(rate = 1 / 10)
    )
  )

  X_int$x4 <- round(X_int$x4) + 1
  X_int$x5 <- 30 + 10 * X_int$x1 + (7) * X_int$x2 + (-6) * X_int$x3 + (-0.5) * X_int$x4 + rnorm(200, mean = 0, sd = 10)

  varnames <- c("1", paste0("x", 1:5))

  # ============ generate external covariates ==============
  X_ext <- simulate_X_copula(
    n = 100,
    p = 4,
    cp = normal, # copula
    margins = c("binom", "binom", "binom", "exp"), # specify marginal distributions
    paramMargins = list(
      list(size = 1, prob = 0.7), # specify parameters for marginals
      list(size = 1, prob = 0.9),
      list(size = 1, prob = 0.3),
      list(rate = 1 / 10)
    )
  )

  X_ext$x4 <- round(X_ext$x4) + 1
  X_ext$x5 <- 50 + 10 * X_ext$x1 + (2) * X_ext$x2 + (-1) * X_ext$x3 + (-0.3) * X_ext$x4 + rnorm(100, mean = 0, sd = 10)

  varnames <- c("1", paste0("x", 1:5))

  # ============ Specify outcome models ==============
  model_form_x_t1 <- setNames(c(10.0, 0.05, -1.5, -1.0, -0.2, -0.1), varnames) # 1.5*A, sigma = 4.0
  model_form_x_t2 <- setNames(c(6.0, 0.5, -0.5, -1.0, -0.3, -0.06), varnames) # 1.8*A, sigma = 4.0
  # model_form_x_t3 = setNames(c(5.0, 1.9, 1.4, -1.3, -0.4, -0.15), varnames) # 1.6*A, sigma = 4.0
  # model_form_x_t4 = setNames(c(1.2, 1.0, 2.0, -0.5, -0.4, -0.10), varnames) # 2.5*A, sigma = 5.0

  outcome_model_specs <- list(
    list(
      effect = 0, model_form_x = model_form_x_t1, # from data: true_effect = 1.5
      noise_mean = 0, noise_sd = 4
    ), # model form for the first time point, given by model_form1
    list(
      effect = true_effect, model_form_x = model_form_x_t2, # from data: true_effect = 1.8
      noise_mean = 0, noise_sd = 4
    ) # model form for the second time point, given by model_form2
  )

  # =========== generate trial data ============
  Data <- simulate_trial(X_int,
    X_ext,
    num_treated = 100,
    OLE_flag = FALSE,
    T_cross = 2,
    outcome_model_specs
  )

  data_matrix_list_null[[trial_iter]] <- Data
}


print(data_matrix_list_null[[1]])
#>     x1 x2 x3 x4          x5 A S            y1           y2
#> 1    0  0  0  2  37.5603081 1 1   3.075203642   7.45621850
#> 2    1  1  0 15  32.1146653 0 1   0.381477734   1.42373454
#> 3    1  1  0  5  29.6587853 1 1  -2.130905759   4.81962650
#> 4    1  1  0 14  48.5637699 1 1  -0.799045928  -3.66426849
#> 5    1  1  1 21  15.3740131 1 1   1.754322822  -0.51657158
#> 6    1  1  1 13  23.4719849 1 1  -2.133593495  -4.05330445
#> 7    0  0  0  2  50.7202315 0 1   5.962476866  -4.54171259
#> 8    1  1  1 38   2.6471921 1 1  -7.191029833  -6.24260229
#> 9    0  1  0  3  15.9047730 0 1  16.514041795   4.59707834
#> 10   1  1  1 15  41.7453103 1 1   1.199888278 -10.72581032
#> 11   1  1  1  9  62.1601058 1 1  -0.830153061  -7.05515174
#> 12   1  1  1 41  37.6820580 0 1  -3.685376633  -5.04604142
#> 13   1  1  0  5  30.0277076 0 1   7.946195020   3.06339072
#> 14   1  1  1 61  11.9858260 0 1  -2.721134439  -8.13413788
#> 15   0  1  0 10  38.7797178 1 1   0.696826361   1.52657345
#> 16   1  1  0  1  32.6633519 0 1   8.825422542  -0.34872182
#> 17   1  1  1  9  38.9149324 1 1   2.831337282   4.75986552
#> 18   1  1  0  3  47.3929214 0 1   7.689814398   3.98255977
#> 19   1  1  0  8  33.3032491 0 1   1.846732978   4.06533880
#> 20   1  1  0  2  40.3086754 1 1   5.048769526   7.57812377
#> 21   1  1  1 17  35.8673310 1 1   1.408072606  -6.52927481
#> 22   1  1  1  8  35.5738624 0 1   2.355902619   1.48923500
#> 23   0  0  0  3  36.4871818 1 1  14.221294669  10.04524564
#> 24   1  1  0 21  43.6444015 0 1   1.504631451  -4.48904761
#> 25   0  0  0  1  39.0939825 1 1   5.791261825   3.38649296
#> 26   1  1  1 22  34.4696395 1 1   5.169686536  -8.45002855
#> 27   1  1  0  9  42.5600600 0 1   5.178442878  -0.00574162
#> 28   1  1  1 12  25.4530562 1 1   6.033407556   6.51891931
#> 29   1  1  0  7  37.0078510 1 1   4.317151782   4.21681855
#> 30   1  1  1 48  13.3659760 1 1  -2.529625799 -10.10212520
#> 31   1  1  0 11  53.3449732 0 1  -1.268245457   0.42579792
#> 32   1  1  0  6  62.5674984 0 1  -0.035132127   3.73896813
#> 33   1  1  1 46  29.5398281 1 1  -7.232475830 -16.75129079
#> 34   1  1  1 25  34.1611966 1 1  -6.310601723  -6.24973287
#> 35   0  1  0  9  50.5697458 0 1  -0.940042283  -2.09208922
#> 36   1  1  0  2  59.2844278 1 1  -2.381938000   0.69958573
#> 37   1  1  1 12  26.7502103 1 1  -3.124249415   3.72682864
#> 38   1  1  1 48   8.4188701 1 1   0.021994764 -11.89391092
#> 39   0  1  0 14  31.5817246 1 1  -1.774609729   1.02601889
#> 40   1  1  1 33  35.5539803 0 1   7.287270087  -6.31798116
#> 41   1  1  1 24  31.4864937 0 1   2.582841580  -3.27331014
#> 42   0  1  0  6  41.8732525 1 1   3.538229831  -1.88630130
#> 43   1  1  1 13  34.9407762 0 1  -0.904686460   1.30916105
#> 44   0  0  0  2  24.7275346 0 1   8.458858952   5.73576881
#> 45   1  1  0 17  33.2005973 0 1  -0.144114624  -1.99432668
#> 46   1  1  1 14  24.5751342 1 1   4.600735296  -1.33123954
#> 47   1  1  0 14  41.3675116 1 1   1.280984300  -0.02149687
#> 48   1  1  0  6  35.3607367 1 1   3.014727397   4.92354245
#> 49   0  1  0 15  39.2538158 1 1   0.902976356  -1.51170530
#> 50   1  1  1 26  27.3968577 1 1   4.880239084  -9.75745142
#> 51   0  1  1 44   5.7430797 0 1   2.833011329  -4.83340592
#> 52   1  1  1 13  31.9376438 1 1   1.060765267  -3.47340652
#> 53   1  1  0  4  42.2355042 1 1  16.309419757   1.30724037
#> 54   0  1  0  3  49.1288583 0 1   7.873948344   0.76088083
#> 55   0  0  0 16  27.6019738 1 1   3.565313746  -0.40002555
#> 56   0  0  0  1  46.2540922 1 1   7.464643345   1.08132156
#> 57   0  0  0  2  27.9749729 0 1  11.954805960  11.04427109
#> 58   0  0  0  4  25.3115246 1 1   9.841692801   4.23263144
#> 59   0  0  0  1  13.0255130 0 1  14.135784963   4.37819036
#> 60   1  1  0 14  35.9372737 1 1  -3.091712751  -4.70379163
#> 61   1  1  1 12  34.1645138 0 1   7.226973304  -2.28704193
#> 62   1  1  0  6  38.6438845 0 1   8.757476773  -0.53951007
#> 63   0  0  0  1  24.7505475 0 1   3.969988925  -0.76164336
#> 64   1  1  0 16  26.8920055 0 1  -4.829597498  -1.97152291
#> 65   0  1  0  2  38.2065929 1 1   6.141742699   0.76003508
#> 66   1  1  0  3  48.0203115 1 1  -1.484896308   2.43057383
#> 67   1  1  0  3  50.6571361 1 1  -2.283192349  -7.91324278
#> 68   1  1  1 22  51.0384836 0 1   4.279950429 -12.58826958
#> 69   0  1  0  6  18.4636806 1 1   3.227434053  -0.03468554
#> 70   1  1  1 55 -12.2207630 0 1  -4.104989145  -3.51922221
#> 71   0  1  1 14  17.0680297 0 1   9.102903468   4.40232222
#> 72   1  1  0 10  42.0852768 0 1  -0.004508644  -0.85792673
#> 73   1  1  1 40  25.7495427 0 1  -2.578962842  -8.23788435
#> 74   1  1  0  9  40.1091723 1 1   6.476537129  -0.45297852
#> 75   1  1  0  6  52.5575380 1 1   3.902718001   3.15459318
#> 76   1  1  1  8  23.1863185 1 1   3.960243627   2.83576160
#> 77   1  1  0  8  25.2787604 1 1   3.707312698   6.99831174
#> 78   0  1  0  6  37.3064287 1 1   3.503436266  -0.82577066
#> 79   0  1  0  2  46.5617539 0 1   0.815870248   1.94562025
#> 80   1  1  1  8  22.5175890 1 1   2.386857080   2.29523603
#> 81   1  1  1 24  18.8015337 0 1   2.433449269  -0.10860873
#> 82   1  1  0 16  33.6566603 0 1  -0.442065218  -1.65898891
#> 83   1  1  0  2  36.9100071 1 1   0.885519416   5.71096317
#> 84   1  1  1  6  29.1342888 0 1   0.117629145  -1.72846878
#> 85   0  0  0  5  25.8840624 0 1  -1.964567148   3.34356731
#> 86   1  1  1 47   0.4941219 0 1  -2.044523138 -12.02973333
#> 87   1  1  0  9  22.1768281 0 1   0.184333776   5.62510080
#> 88   0  1  0  1  25.7304073 1 1  -0.274078414  -1.29641996
#> 89   0  1  0  8  13.1727646 0 1   3.429263138   1.87306518
#> 90   0  1  0  2  39.3949488 1 1   6.997448035   5.66485801
#> 91   0  1  0  7  33.2833402 1 1   4.451467329   2.48833785
#> 92   1  1  0  6  31.0281153 1 1   6.413842388   4.02607795
#> 93   0  1  1 19  23.8078732 0 1   3.715873386  -1.27874880
#> 94   1  1  1 10  33.3401347 1 1   7.110065710   3.77366200
#> 95   1  1  1 13  60.4682105 0 1   3.356686793  -2.97256977
#> 96   1  1  0  7  49.1908291 1 1   0.195708517   1.07293001
#> 97   1  1  1 12  13.2143940 0 1   9.101006089   4.81478162
#> 98   0  1  0  7  30.1483068 1 1   3.017075765   2.17750360
#> 99   1  0  0  2  42.0689923 0 1  12.720019563  11.34614747
#> 100  1  1  1 15  43.4054394 1 1  -3.157330317  -3.24539008
#> 101  1  1  0 26  48.2014307 0 1  -1.959882880  -7.58337968
#> 102  1  1  0  3  32.4666566 1 1   8.255496441   6.78130947
#> 103  1  1  0  4  45.5942012 0 1  -7.875398612   5.25596408
#> 104  0  1  0 13  17.4348667 1 1  10.475257130  -0.70969219
#> 105  0  1  0  3  38.7404466 0 1   5.556020405  -1.45240496
#> 106  1  1  0  2  47.1532808 1 1   2.831671251   2.35375288
#> 107  1  1  0 14  52.6285927 1 1   7.142784932   3.24429987
#> 108  0  1  0  4  16.9215457 1 1   6.778488529   4.71895259
#> 109  1  1  1  7  34.1396317 0 1  -0.970407475   7.41244086
#> 110  1  1  0  8  30.8521686 0 1   3.485029489  -0.04034831
#> 111  0  1  0  4  47.8908514 0 1  -0.701769628   3.54101531
#> 112  0  1  0  2  45.0043439 0 1   3.372541565   0.51694324
#> 113  1  1  1 20  32.0353028 0 1   0.849642183  -3.00784305
#> 114  1  1  0  2  45.5335809 0 1   9.018807311  -3.17656358
#> 115  1  1  1 45  34.5291411 1 1   0.451938348  -3.65866749
#> 116  1  1  1 14  19.3837289 1 1   6.179901877  -2.86997779
#> 117  1  1  0 13  44.3030014 0 1   2.672997338  -0.25144967
#> 118  1  1  0  7  33.9558948 1 1   0.124018346  -2.43331256
#> 119  1  1  0  4  34.4755776 0 1   5.455743994   4.50471343
#> 120  1  1  0 18  39.0194021 0 1  -0.264483084   3.25230901
#> 121  0  0  0  6  16.2678315 0 1   8.973651803   2.42011559
#> 122  1  1  0  2  61.1177034 0 1   0.397484106   0.47560136
#> 123  1  1  0 13  33.2198611 1 1   2.411084218  -5.16544508
#> 124  0  0  0  1  11.9306468 1 1   3.874149609   5.37588814
#> 125  0  1  0  9  32.9802806 1 1   3.930314252  -4.12687935
#> 126  1  1  1 39  19.0729522 0 1  -6.442307758  -5.36285584
#> 127  1  1  0  3  36.4321415 0 1   4.501506208   5.16902758
#> 128  1  1  0 11  47.5347132 0 1   0.808219399  -4.98571898
#> 129  0  1  0 12  30.4011158 0 1   5.605023923   0.46510354
#> 130  1  1  0  4  38.2891327 0 1   0.899017294   1.31508289
#> 131  0  0  0  2  41.8918274 0 1   0.506068724   1.64951044
#> 132  0  0  0  1  32.3466843 0 1   8.866848390   6.24132404
#> 133  1  1  1 12  31.8448497 1 1   3.946398340  -0.41130701
#> 134  1  1  1 17  45.2523503 1 1   1.047137966  -0.30446564
#> 135  1  1  0 14  53.6106454 1 1  -0.241653619   9.53564341
#> 136  0  1  1 15  21.2571883 0 1   4.447186968  -3.34806309
#> 137  0  1  0  9  38.3872327 0 1   8.596404961   3.22393463
#> 138  1  1  0  9  45.8138906 0 1  -2.227486872  -2.28137765
#> 139  1  1  0 14  45.8708825 0 1  -1.561372385  -2.86792555
#> 140  1  1  0  4  36.2898825 0 1   1.299902169   7.60841100
#> 141  1  1  1  6  40.9606946 1 1   1.960107852   0.61466452
#> 142  1  1  1 31  21.4016916 1 1  -2.538158979  -7.32179997
#> 143  1  1  1 17  41.4513162 1 1  -2.425483211   0.35857204
#> 144  1  1  0  7  39.8775720 0 1   6.499808475   1.29344926
#> 145  0  1  0  5  43.8650397 0 1   3.618236835   1.10949922
#> 146  1  1  0  5  46.4908690 1 1  -1.798058167   4.46131596
#> 147  0  1  0  3  21.1972585 0 1   4.742926399   4.83834356
#> 148  0  1  0  5  24.8993021 0 1   3.358159587   9.59492210
#> 149  1  1  0 18  38.6337062 0 1  -6.187297190  -0.41732823
#> 150  1  1  0  1  45.9840515 1 1   6.146320366  -0.98154531
#> 151  1  1  0  7  50.3456633 0 1  -5.584796795  -2.09989060
#> 152  1  1  1  7  41.1768084 1 1   0.501850659  -0.29843918
#> 153  1  1  0  6  56.5627229 1 1   0.360288491  -1.15335184
#> 154  1  1  1 22  25.7522474 1 1   0.240935562  -6.83717136
#> 155  1  0  0  2  28.7304987 1 1   5.205924601   6.86351502
#> 156  1  0  0  3  35.0132978 0 1   4.395808059  -2.88725410
#> 157  0  0  0  7  31.8890214 1 1   5.503212863  -1.51667575
#> 158  0  1  1 12  29.3771704 1 1   2.218541205  -1.07763848
#> 159  0  0  0  1  30.6882627 0 1   9.483555733   4.66514501
#> 160  1  1  1 46  19.9025923 0 1  -5.169762651  -9.60454508
#> 161  0  1  0  2  42.4725001 0 1   6.356233934  -0.48218216
#> 162  0  1  0  2  28.5852672 0 1   4.595356931   3.98118541
#> 163  1  1  1 23  23.3866153 1 1  -3.498122471  -2.75990811
#> 164  0  1  0 29  20.3282278 1 1  -3.718587010  -7.10006186
#> 165  1  1  1 15  41.6775239 0 1  -0.809392218  -1.03785256
#> 166  1  1  0 20  36.0221293 0 1  -3.082310627   0.33652664
#> 167  1  1  1 20  24.1303190 0 1  -1.381555075  -4.97636808
#> 168  1  0  0  1  70.9466396 0 1   1.625106095   0.58454296
#> 169  0  1  0  8  18.7778262 0 1   6.691733264  -1.42982192
#> 170  1  1  1 16  31.8843699 1 1  10.604740708  -5.03686887
#> 171  0  0  0  1  36.5714578 0 1   9.343093547   4.36004667
#> 172  0  0  0  1  25.1194737 1 1   4.418592486   2.34014833
#> 173  1  1  0  4  63.6633988 1 1   0.093453200  -2.50118685
#> 174  0  1  0  5  33.8398871 1 1   0.346727263   1.69985813
#> 175  1  1  0  5  45.9588836 1 1   7.878192986   1.83214978
#> 176  1  1  1 38  14.6665157 0 1  -3.419124591  -6.72980828
#> 177  0  1  0  6  51.6144203 1 1  -2.198424752  -0.12239560
#> 178  0  1  1 22   5.9955172 1 1   5.083166955  -3.84894908
#> 179  0  1  0  2  31.1788443 1 1   8.215530010   6.29555630
#> 180  0  0  0  1  26.5685717 0 1  10.821503811   7.54052459
#> 181  1  1  0  4  48.3884763 1 1  -1.311741075   0.46511282
#> 182  1  1  1  5  35.3934581 1 1   9.592036076  -0.32793975
#> 183  0  0  0  1  42.9569732 0 1  10.361030771   0.59581139
#> 184  0  1  0  5  25.3945511 1 1   4.777217092  -2.51484526
#> 185  0  1  1 29  11.9691693 1 1   2.820150167  -8.06754314
#> 186  1  1  1 10  30.7630154 0 1  -8.314911956   3.87746810
#> 187  1  1  0  9  41.2177491 0 1   3.657733552  -3.57149593
#> 188  1  1  0 10  35.3378391 1 1   1.111448397   4.21638139
#> 189  1  1  1 28  38.4179197 0 1  -1.622783508  -7.72900380
#> 190  1  1  0  5  48.8763655 1 1   4.252398849   1.43914640
#> 191  1  1  0  5  39.7744593 1 1   7.153678607  10.07220279
#> 192  0  1  0  3  21.4320087 0 1   8.458354484   1.64644222
#> 193  1  1  0 11  26.0721352 0 1  -4.245121377  -3.97672340
#> 194  1  1  0 13  24.6338933 0 1   9.968325845  -0.94484221
#> 195  0  0  0  3  42.9386900 1 1   7.720257840   5.23752984
#> 196  1  1  0  4  34.0509556 1 1   4.623901255   0.79051517
#> 197  1  1  1 47  42.5215659 0 1  -3.209677453 -15.95963515
#> 198  0  0  0 13  18.7326432 0 1   4.715168038  -2.19951576
#> 199  1  1  1 15  30.9626611 0 1  -1.952325112  -5.36231784
#> 200  1  1  1  7  31.9620581 1 1   1.237580727  -3.91531277
#> 201  1  1  0 20  63.1965348 0 0  -2.444298536  -7.29624901
#> 202  1  1  1 46  57.6653637 0 0 -12.207023370 -12.85619462
#> 203  1  1  0  4  77.1027243 0 0   4.006991997  -2.73118773
#> 204  1  1  0  4  53.1286322 0 0   3.621213753   0.85043730
#> 205  0  1  0  1  37.9229870 0 0  -0.276341841   0.33794536
#> 206  0  1  1 20  44.2027760 0 0   2.043458800  -5.36421079
#> 207  1  1  0  4  52.2181566 0 0   4.437677316  -2.93761168
#> 208  1  1  0  5  57.9917084 0 0  -0.363418765  -2.62310292
#> 209  1  1  0  5  70.7165076 0 0  -2.179194184  -2.80896649
#> 210  0  0  0  2  53.0343987 0 0   8.335053104   3.92286377
#> 211  1  1  0  2  58.7571253 0 0   3.659601659   5.31659079
#> 212  0  1  0 11  75.6343374 0 0  -3.535379262  -7.97235419
#> 213  1  1  0  8  63.0743024 0 0  -0.111930981  -5.47466777
#> 214  1  1  0 16  58.8544585 0 0   0.948732569  -1.93567604
#> 215  0  1  0 21  51.2075613 0 0   0.222697442  -9.05090531
#> 216  0  1  1 22  33.1623543 0 0   0.749079440  -8.31277001
#> 217  1  1  1 41  53.5087749 0 0  -7.534471008 -14.58945199
#> 218  1  1  1  9  60.4359544 0 0  -8.126199710  -7.51163316
#> 219  0  1  0  2  41.0180698 0 0   1.021457738   1.37975433
#> 220  0  1  0  6  15.0761720 0 0  10.898856675  -1.84168727
#> 221  0  0  0  5  28.4446940 0 0   4.307244584   1.88834349
#> 222  1  1  0 21  73.4465890 0 0  -2.078290560  -0.53833381
#> 223  0  1  0  2  43.7708876 0 0   0.559037936   2.28192711
#> 224  0  0  0  2  63.6230895 0 0   5.966953408   7.17252969
#> 225  1  1  0 11  59.8030919 0 0   2.532957992   1.32623618
#> 226  1  1  0 12  60.5887267 0 0  -6.181094581  -1.37821406
#> 227  0  1  0  4  57.9056095 0 0   8.367747309  -1.38591080
#> 228  1  1  0  8  63.8449283 0 0   1.012991275  -3.90546157
#> 229  0  1  0 10  44.9315741 0 0   2.382958148  -3.78948552
#> 230  0  1  0  4  45.3027053 0 0   5.392342399   2.66052756
#> 231  0  0  0  1  51.5390682 0 0   5.148661538   3.46363558
#> 232  1  1  0  4  56.9472354 0 0   4.475234214   5.92835022
#> 233  1  1  1 25  50.3778185 0 0   0.172788219 -10.84998123
#> 234  1  1  1 18  42.3671845 0 0  -8.112540902   0.28091227
#> 235  0  1  0 21  44.0855040 0 0   9.029575420   1.59547486
#> 236  1  1  1  6  75.1275465 0 0  -8.160574993  -0.41628672
#> 237  1  1  0 13  61.0621704 0 0   0.851140808   1.14958964
#> 238  1  1  1 23  30.4159586 0 0  -8.781369221  -2.51427976
#> 239  1  1  0 22  69.0255484 0 0  -1.703878926  -1.48389741
#> 240  0  0  0  4  45.5890032 0 0   0.601643048   6.32686700
#> 241  1  1  0  4  64.7496858 0 0   0.577035720   5.08481337
#> 242  1  1  0 11  51.4372758 0 0   0.509589398  -1.73241030
#> 243  1  1  0  5  86.7691152 0 0  -5.932143970   4.64159871
#> 244  1  1  1 10  57.4790367 0 0   1.072779332   2.40782878
#> 245  1  1  0 15  59.0601175 0 0   3.605957091  -2.29447519
#> 246  1  1  0 15  45.1830906 0 0   1.052370011  -0.85663807
#> 247  1  1  0  1  78.4350451 0 0  -2.604111890 -10.16229559
#> 248  0  0  0  2  60.9647516 0 0   0.449859071   6.64007631
#> 249  1  1  0 34  39.3957131 0 0   0.728027683  -2.49460354
#> 250  1  1  1 14  56.5739291 0 0   2.277809332  -2.71039178
#> 251  1  1  1 11  56.0442344 0 0  -0.499873593   1.99349235
#> 252  1  1  1 31  58.3228659 0 0  -4.011933496  -2.73883825
#> 253  0  1  0 10  53.0719040 0 0  -7.557560637  -4.20763811
#> 254  1  1  1  4  86.0092815 0 0  -0.818019685   0.79766561
#> 255  1  1  0  7  62.3726806 0 0   1.950563641   2.41669326
#> 256  1  1  0 15  34.8199036 0 0   4.270444367  -2.43645361
#> 257  1  1  1  6  59.5523464 0 0  -0.932827936  -1.77962178
#> 258  1  1  0 10  56.1689677 0 0  -8.249337934   0.12545600
#> 259  1  1  1 20  47.3884400 0 0   0.535175566  -3.68847725
#> 260  0  1  0  5  50.9371848 0 0   4.716750639  -0.16226102
#> 261  0  1  0  9  51.6879265 0 0   2.746664790   1.81720560
#> 262  1  1  1 36  50.1160484 0 0  -4.443971784 -12.10342551
#> 263  0  1  0  6  41.8281244 0 0   5.652235233  -3.61615541
#> 264  1  1  1 34  47.9582504 0 0  -6.230636660 -14.88327803
#> 265  1  1  0  6  48.3344133 0 0   4.821840501  -8.44777578
#> 266  1  1  1 12  50.4778184 0 0  -3.526596551   5.46747036
#> 267  1  1  0 13  71.7342798 0 0  -3.285930622  -0.82070231
#> 268  1  1  0 12  50.7578611 0 0  -2.589446496  -2.98981515
#> 269  1  1  1 37  64.7104672 0 0 -12.309920468  -2.66240764
#> 270  1  1  0 12  63.4989082 0 0   2.636784107   0.74373463
#> 271  1  1  1 16  66.1763359 0 0   3.291501245  -0.89272932
#> 272  1  1  0  7  42.6529820 0 0   3.409993586   9.33705848
#> 273  1  1  0 12  53.4023140 0 0   1.711409411 -10.30126800
#> 274  1  1  0 22  54.6985525 0 0  -6.728632465  -2.38562884
#> 275  1  1  1 22  61.6196111 0 0   2.994381694  -2.42029920
#> 276  1  1  0  5  60.6770611 0 0   1.246957421   4.27014620
#> 277  1  1  1 24  55.3123860 0 0  -1.644267140 -10.83516007
#> 278  1  1  1 10  48.9057230 0 0  -1.744191468   3.43764148
#> 279  1  1  1 19  57.7143632 0 0  -2.173513206   0.14071492
#> 280  0  1  0  2  42.1102266 0 0   4.979981925  -1.18530447
#> 281  0  1  0  2  37.2667303 0 0   9.379075635  -2.46586133
#> 282  0  0  0  3  43.9881339 0 0  -0.258646620   5.01505822
#> 283  0  1  0  2  47.7276168 0 0   8.084957836   2.81210917
#> 284  0  1  0 15  48.8734056 0 0   0.711032962  -7.98474270
#> 285  1  1  0  7  72.6454219 0 0   3.672367962  -4.30472468
#> 286  1  1  1 16  59.3650670 0 0   0.847882940  -5.13275941
#> 287  1  1  0  9  53.9955659 0 0  -1.032226323  -2.43403527
#> 288  1  1  1 18  60.4618862 0 0   1.899826497  -2.41898353
#> 289  1  1  0  8  43.1785916 0 0   2.526079032  10.48152263
#> 290  0  1  0  1  40.7328806 0 0  -1.834091980  -1.10294101
#> 291  1  1  1  8  50.3261719 0 0   2.030938003  -5.53981914
#> 292  1  1  0 16  50.2501787 0 0  -4.231275656  -2.29075985
#> 293  1  1  0  5  64.7339229 0 0   4.211328948   2.06594070
#> 294  1  1  0  2  62.9977790 0 0  -0.735591330   4.50034713
#> 295  1  1  1 19  73.6038336 0 0  -5.580242048  -7.05821337
#> 296  1  1  0  6  50.2970948 0 0   8.840696277   2.28512482
#> 297  0  1  0  9  55.9872578 0 0  -1.223892628  -4.32031437
#> 298  0  1  0  4  54.3395130 0 0   8.196583699  -2.57249833
#> 299  1  1  1 22  50.5536610 0 0  -2.264154765  -1.59288706
#> 300  0  1  0  2  58.1739082 0 0   0.102428756  -2.24199048

1.3 Generate simulation data list for alternative hypothesis

# Sequentially adding in datasets
for (trial_iter in 1:ntrial) {
  # simulate 300 sample
  normal <- copula::normalCopula(param = c(0.8), dim = 4, dispstr = "ar1")

  # ========== generate internal covariates =============
  X_int <- simulate_X_copula(
    n = 200,
    p = 4,
    cp = normal, # copula
    margins = c("binom", "binom", "binom", "exp"), # specify marginal distributions
    paramMargins = list(
      list(size = 1, prob = 0.7), # specify parameters for marginals
      list(size = 1, prob = 0.9),
      list(size = 1, prob = 0.3),
      list(rate = 1 / 10)
    )
  )

  X_int$x4 <- round(X_int$x4) + 1
  X_int$x5 <- 30 + 10 * X_int$x1 + (7) * X_int$x2 + (-6) * X_int$x3 + (-0.5) * X_int$x4 + rnorm(200, mean = 0, sd = 10)

  varnames <- c("1", paste0("x", 1:5))

  # ============ generate external covariates ==============
  X_ext <- simulate_X_copula(
    n = 100,
    p = 4,
    cp = normal, # copula
    margins = c("binom", "binom", "binom", "exp"), # specify marginal distributions
    paramMargins = list(
      list(size = 1, prob = 0.7), # specify parameters for marginals
      list(size = 1, prob = 0.9),
      list(size = 1, prob = 0.3),
      list(rate = 1 / 10)
    )
  )

  X_ext$x4 <- round(X_ext$x4) + 1
  X_ext$x5 <- 50 + 10 * X_ext$x1 + (2) * X_ext$x2 + (-1) * X_ext$x3 + (-0.3) * X_ext$x4 + rnorm(100, mean = 0, sd = 10)

  varnames <- c("1", paste0("x", 1:5))

  # ============ Specify outcome models ==============
  model_form_x_t1 <- setNames(c(10.0, 0.05, -1.5, -1.0, -0.2, -0.1), varnames) # 1.5*A, sigma = 4.0
  model_form_x_t2 <- setNames(c(6.0, 0.5, -0.5, -1.0, -0.3, -0.06), varnames) # 1.8*A, sigma = 4.0
  # model_form_x_t3 = setNames(c(5.0, 1.9, 1.4, -1.3, -0.4, -0.15), varnames) # 1.6*A, sigma = 4.0
  # model_form_x_t4 = setNames(c(1.2, 1.0, 2.0, -0.5, -0.4, -0.10), varnames) # 2.5*A, sigma = 5.0

  outcome_model_specs <- list(
    list(
      effect = 0, model_form_x = model_form_x_t1, # from data: true_effect = 1.5
      noise_mean = 0, noise_sd = 4
    ), # model form for the first time point, given by model_form1
    list(
      effect = alt_effect, model_form_x = model_form_x_t2, # from data: true_effect = 1.8
      noise_mean = 0, noise_sd = 4
    ) # model form for the second time point, given by model_form2
  )

  # =========== generate trial data ============
  Data <- simulate_trial(X_int,
    X_ext,
    num_treated = 100,
    OLE_flag = FALSE,
    T_cross = 2,
    outcome_model_specs
  )

  data_matrix_list_alt[[trial_iter]] <- Data
}

data_matrix_list_alt[[1]]
#>     x1 x2 x3 x4        x5 A S            y1            y2
#> 1    1  1  1 13 35.442355 0 1   1.349538310  6.291669e+00
#> 2    1  1  1  5 49.586503 1 1  -0.449368560  2.971647e+00
#> 3    1  1  1 34 32.973820 1 1  -4.584786013 -1.827476e+00
#> 4    1  1  1 11 20.151827 0 1  -1.989204575  1.957438e+00
#> 5    1  1  1 18 35.865134 0 1  -0.186250017 -4.106981e+00
#> 6    0  0  0  5 27.194010 0 1   6.263828751  4.383721e+00
#> 7    1  1  0  5 37.307901 0 1  10.750582360  5.970860e+00
#> 8    0  1  0  6 33.718675 0 1  11.579961007  2.762997e+00
#> 9    1  1  0 19 23.423115 0 1   0.512074494  1.753591e+00
#> 10   1  1  0  3 36.895219 0 1   2.701222246 -2.246097e-01
#> 11   1  1  1 23 30.191550 1 1  -1.901610805 -7.140430e+00
#> 12   1  1  0  5 52.049761 1 1  -5.035504568  3.580281e+00
#> 13   0  1  0  7 38.925682 1 1   0.061292685  3.832844e+00
#> 14   1  1  0 13 52.908906 0 1   0.796538147 -7.724948e+00
#> 15   1  0  0  2 28.904642 1 1   2.990283317  4.120050e+00
#> 16   1  1  0  4 45.747794 0 1  -6.818650286 -4.794554e+00
#> 17   1  1  1 18 41.097981 1 1  -1.097480617 -1.258643e+00
#> 18   1  1  0  7 38.631905 1 1  -6.691173345  2.287341e+00
#> 19   0  1  0  6 33.215909 1 1   2.882357037 -2.751520e+00
#> 20   0  0  0  2 30.989967 0 1   3.651744875  2.115557e+00
#> 21   1  1  0  4 39.130958 0 1   4.011106137  8.115064e-01
#> 22   0  1  1 16 41.565332 0 1  -3.026944303 -4.542342e+00
#> 23   0  1  0  6 34.260044 1 1   5.086452377  5.237283e+00
#> 24   1  0  0  4 41.272343 1 1   5.182016719  7.593877e+00
#> 25   0  0  0  2 23.489069 0 1  10.137784437  4.409927e+00
#> 26   0  0  0 16 23.180514 1 1  10.323924141  4.426560e+00
#> 27   1  1  1 36 23.488800 0 1  -2.584434893 -4.275898e+00
#> 28   1  1  0  3 36.678963 0 1   3.616763694  1.066941e+01
#> 29   1  1  1 16 27.736193 0 1   7.837609604  2.803492e+00
#> 30   0  1  0  5 31.751606 1 1   7.799294181  2.310870e+00
#> 31   0  1  0  2 52.791177 1 1   2.614904177  6.472740e+00
#> 32   1  1  0  4 37.371305 1 1   0.844377738  9.500988e-01
#> 33   0  0  0  2 28.724307 1 1  10.812225119  7.221198e+00
#> 34   1  1  1 16 30.268554 0 1  -0.478242919 -1.075619e+00
#> 35   0  1  0  4 39.163197 0 1   2.456012133 -6.487862e+00
#> 36   0  1  0 10 38.448730 1 1  -0.173874959 -4.892193e+00
#> 37   0  0  0 10 15.992956 0 1   5.957159137 -2.481722e+00
#> 38   1  1  0  4 35.034818 1 1  13.116863376  1.640977e+00
#> 39   0  1  0  2 44.273638 1 1   3.520757496  2.936721e+00
#> 40   1  1  0  8 43.543319 1 1   1.368641211  4.806571e+00
#> 41   0  0  0  7 20.675894 0 1   7.027547681  3.761781e+00
#> 42   1  1  0 18 44.104271 0 1   3.367206143 -2.547090e+00
#> 43   0  1  0  3 21.396381 0 1   1.903025876  5.884687e+00
#> 44   1  1  0  5 46.101102 0 1   7.630473437  1.750287e+00
#> 45   0  1  0  3 27.501733 1 1  -0.248864147  7.869156e-04
#> 46   1  1  0  2 52.268020 0 1   0.953852825 -2.549435e+00
#> 47   1  1  0  9 47.452973 1 1  -2.597474772  1.808324e+00
#> 48   1  1  1  9 22.525403 0 1   8.503838444  5.907012e-02
#> 49   0  1  0  8 27.517209 1 1   7.426515851  5.840611e+00
#> 50   0  1  1 13 26.025872 0 1  -2.794188661  2.534802e+00
#> 51   0  1  0  4 36.641890 1 1   7.614641363 -1.791254e+00
#> 52   1  1  0  3 55.395664 1 1   5.919850053  1.007380e+01
#> 53   1  1  1 16 36.023317 0 1   3.243913882  1.963504e-01
#> 54   0  1  0 10 37.271345 1 1   1.820655260  9.433370e+00
#> 55   1  1  0  5 40.919396 1 1  -0.103100933  5.880794e+00
#> 56   0  0  0  2 41.872291 0 1  10.034182492  5.289093e+00
#> 57   1  1  1  9 46.664984 0 1  -5.674405358 -1.125178e+00
#> 58   1  1  0  5 39.290681 1 1   1.999584701  1.301038e+01
#> 59   1  1  1 15 31.814272 0 1   5.760368379 -1.838452e+00
#> 60   0  1  0 11 43.801589 1 1  -3.186791774  4.707087e+00
#> 61   1  1  1 31 28.723381 1 1   1.606517507 -1.870806e+00
#> 62   1  1  1 20 23.351298 0 1  -0.349422614 -2.535798e+00
#> 63   0  1  0  4 37.415712 0 1  -0.468626658  6.101452e+00
#> 64   0  1  0  3 46.666853 1 1   4.366744996  4.616129e+00
#> 65   1  1  1 14 37.503553 1 1  -3.879668466  2.413113e+00
#> 66   0  1  0 17 33.017942 0 1  -0.007281941  9.514808e-01
#> 67   1  1  1 14 33.291920 1 1   0.191736625  1.259315e+00
#> 68   1  1  0 13 39.612933 0 1  10.472010757 -5.298127e+00
#> 69   1  1  0  5 21.422581 1 1   3.173117271 -1.519817e+00
#> 70   0  0  0  1 28.430169 1 1  -0.236131444  5.085025e+00
#> 71   0  0  0  1 32.797318 1 1   7.650188962  5.122753e+00
#> 72   1  1  0  6 42.899633 1 1   7.210545581  2.745525e+00
#> 73   0  1  0  3 43.940869 0 1   4.822927475  5.751443e+00
#> 74   1  1  1 11 34.519400 0 1   0.789673850  3.929452e+00
#> 75   1  1  1 32 29.535124 0 1  -0.861930842 -1.276077e+01
#> 76   0  1  0  7 16.526412 1 1  -0.570000936  5.473148e+00
#> 77   1  1  1  8 30.526095 1 1  -4.865909070 -6.326808e-01
#> 78   1  1  1 22 46.117786 0 1   0.457928560  1.335517e+00
#> 79   1  1  0  3 46.267882 1 1   5.541055700  2.497815e+00
#> 80   0  1  0  5 27.904987 1 1   1.972943040  7.042751e+00
#> 81   1  1  0  3 37.885196 0 1   2.626322561  3.843130e+00
#> 82   1  1  0  5 46.513803 1 1  -4.607023024  2.684941e+00
#> 83   1  1  1 21 19.637491 1 1   2.603373093  5.931987e+00
#> 84   0  0  0  4 40.704521 0 1   2.587160265  8.685697e-01
#> 85   1  1  0  4 52.265413 0 1   1.894521955  4.167531e+00
#> 86   1  1  1 14 34.920267 1 1   6.218975839 -9.582841e-01
#> 87   1  1  0  3 46.716557 0 1   0.447785880  3.578840e+00
#> 88   1  1  0 26 65.066558 0 1  -4.988676736 -1.131726e+01
#> 89   1  1  0 23 48.981807 0 1  -1.014015028  3.135925e-01
#> 90   0  1  0  2 37.067304 0 1   1.748162812  8.509572e+00
#> 91   1  1  0  6 39.954251 1 1  -3.491521788  6.826596e+00
#> 92   0  1  0  2 39.100328 0 1  -1.541104281 -5.697422e-01
#> 93   1  1  1 26 27.883569 0 1  -3.926224175 -5.909639e+00
#> 94   1  1  1 30 35.842789 0 1   1.595190215 -5.696599e+00
#> 95   0  1  0 16 34.358836 1 1  -0.529566604 -1.391987e+00
#> 96   1  1  1 41  9.358633 1 1  -2.190837827 -4.919920e+00
#> 97   0  1  0 12 30.711228 0 1   6.537517881  6.072199e+00
#> 98   1  1  0  3 41.950357 1 1  17.547688699  8.329940e+00
#> 99   1  1  0  4 44.330523 1 1   3.494345680  5.738566e+00
#> 100  1  1  1 19 36.510759 1 1   2.390989368 -2.907259e+00
#> 101  0  0  0  2 38.001895 0 1   6.156874788 -2.371060e+00
#> 102  1  1  0  4 45.185000 0 1   4.248050791  1.407905e+01
#> 103  1  1  0  4 42.278255 0 1   5.431483311 -4.466170e+00
#> 104  1  1  0 17 26.626111 1 1   2.524184922  3.083569e-01
#> 105  1  1  0 16 45.412152 1 1   3.428917697 -1.865726e+00
#> 106  0  1  0  5 35.253565 1 1   7.282947272 -2.051720e+00
#> 107  1  1  1 46 21.237435 0 1  -6.065507050 -4.966847e+00
#> 108  1  1  1  9 28.285223 0 1   0.144158222  2.693203e+00
#> 109  0  0  0  5  4.619796 0 1  10.045400591  6.609732e+00
#> 110  1  1  0 14 56.052158 0 1   3.120492621 -3.572048e+00
#> 111  1  1  1 15 41.162481 1 1  -3.770932143  1.578133e+00
#> 112  1  1  0  3 44.899680 1 1   5.181459252  7.917960e+00
#> 113  0  0  0  3 22.930086 1 1  14.023014447  7.103636e+00
#> 114  1  1  1 23 22.710884 1 1   2.434417789  1.015722e+01
#> 115  1  1  1 19 40.490930 1 1   2.130495963 -9.303208e+00
#> 116  0  1  0  3 26.009219 0 1   5.854970685  2.827342e+00
#> 117  1  1  0  5 58.918488 1 1  -2.554004111  8.441769e-01
#> 118  1  1  1 34 26.650817 0 1  -5.335798277 -6.310101e+00
#> 119  1  1  0  5 56.288934 0 1  -3.994989837 -1.479328e+00
#> 120  1  1  1 27 22.044333 1 1  -3.026383907  7.885740e+00
#> 121  1  1  0 20 45.624542 1 1  -1.797282113  5.077926e+00
#> 122  0  1  0  4 51.864028 1 1   3.582482710  8.193542e-01
#> 123  0  0  0  3 29.040195 0 1   7.781707944  5.419172e+00
#> 124  1  1  0  3 32.994642 0 1   2.964118043  3.564354e+00
#> 125  0  1  0 13 35.972618 0 1   2.886909507 -5.054099e-01
#> 126  1  1  1 59  8.478800 1 1  -5.739226850 -1.301118e+01
#> 127  0  1  0 12 32.543020 0 1   4.102331341 -1.609089e+00
#> 128  1  1  0  5 51.723383 0 1   2.714410888  4.525786e-02
#> 129  1  1  1 26 14.991910 1 1   4.270095101 -7.084196e+00
#> 130  1  1  0 10 48.770226 0 1  -4.888969685  1.805537e-01
#> 131  1  1  1 38 18.146026 1 1  -3.880505656  3.157017e-01
#> 132  0  1  0  3 40.788395 0 1   7.961190096  4.663814e+00
#> 133  0  0  0  5 12.993538 0 1   7.361239240  1.356610e+00
#> 134  0  1  0  3 28.311642 1 1   7.181566305  1.941842e+00
#> 135  1  1  1 13 30.949106 0 1  -0.883808425  1.941705e+00
#> 136  0  1  1  2 29.221468 1 1   5.902295264 -3.410918e-01
#> 137  1  1  0 14 44.902163 0 1   4.822441133  1.312065e-01
#> 138  1  1  1  7 42.509307 0 1   7.334822891  7.718419e+00
#> 139  1  1  0 10 47.702488 0 1   1.529452324  1.425834e+00
#> 140  1  1  0  4 34.176443 0 1   7.542730996 -4.765842e+00
#> 141  1  1  0 18 32.465144 0 1  -1.713704982 -3.916108e-01
#> 142  0  0  0  3 25.483288 1 1   5.610669865  2.016199e+00
#> 143  1  1  1 21 51.628045 0 1  -4.752098446 -1.448500e+01
#> 144  0  1  0 18 35.077328 1 1  -1.488719626  2.153938e+00
#> 145  1  1  0  3 54.059494 0 1   4.541514157  2.554679e+00
#> 146  1  1  1 24 16.626234 0 1   0.756198895 -1.148362e-01
#> 147  0  1  0  6 43.018953 0 1   4.280823476 -1.201513e+00
#> 148  1  1  1  9 27.322222 1 1   1.094239914  4.761473e+00
#> 149  0  1  0  6 27.372964 1 1  13.161864406 -1.776289e-01
#> 150  1  1  0  5 31.449755 1 1   3.064072788  6.179469e+00
#> 151  0  1  0  2 34.765346 1 1  -0.293727754  1.968829e+00
#> 152  0  0  0  2 23.014373 0 1  11.643865296  1.717710e+00
#> 153  1  1  0 15 30.021389 0 1  -6.432525642  3.634063e+00
#> 154  1  1  0  4 45.428253 0 1   4.621060470  9.852192e+00
#> 155  1  1  0  9 41.479016 0 1  -1.492585310  2.519367e+00
#> 156  0  0  0  6 29.005840 0 1   3.684629033  5.649944e+00
#> 157  1  1  0  3 37.337961 1 1   1.525139606  6.857763e+00
#> 158  0  1  0  2 36.303637 1 1   4.618928762  1.078725e+01
#> 159  1  1  1 29 34.986754 0 1   1.372185131 -4.479922e+00
#> 160  1  1  0 17 52.518406 1 1  -4.131790399  3.497415e-01
#> 161  1  1  0 15 41.277959 1 1   6.986456083  5.509697e+00
#> 162  1  1  0  7 44.296648 1 1   1.115520738  8.023837e+00
#> 163  1  1  0  2 36.413633 1 1   6.071399720  3.546403e+00
#> 164  1  1  0  9 58.410189 1 1   0.295539963  2.134367e+00
#> 165  1  1  0  8 37.458134 1 1   1.017079178  5.172254e+00
#> 166  1  0  0  2 26.997427 1 1   7.616857775  3.624702e+00
#> 167  0  0  0  2 20.637388 0 1  -0.859290188  4.987197e+00
#> 168  1  1  0  3 61.090667 1 1   1.609086054 -2.362048e+00
#> 169  1  1  0 13 36.375783 0 1   2.774471845  5.671862e+00
#> 170  0  1  0 15 34.882981 1 1   5.673664408  5.466838e+00
#> 171  1  1  0  6 34.763254 1 1   0.459654818  3.805094e+00
#> 172  0  1  0  6 37.324697 1 1   5.594464591  5.330910e+00
#> 173  1  1  0 14 25.358521 1 1  -0.984900502 -3.221854e-01
#> 174  1  1  0  7 31.612651 0 1  10.394417136  3.285327e+00
#> 175  1  1  1 21 18.244359 0 1   7.394219814 -4.232451e+00
#> 176  1  1  0  1 35.669727 0 1   7.960395226  2.256255e+00
#> 177  1  1  0  6 49.840236 0 1   4.520134362 -1.007556e+00
#> 178  1  1  1 12 34.898897 1 1  -2.684915712  4.262859e-01
#> 179  1  1  0 10 39.659768 0 1   1.923470165  2.008199e+00
#> 180  1  1  0 18 27.116443 1 1   2.368573756  3.624667e+00
#> 181  1  1  0 10 43.694632 0 1  10.021517697  3.539580e+00
#> 182  0  1  0  1 38.457687 1 1   9.420267628  4.811611e+00
#> 183  1  1  1 15 25.688932 0 1   2.318800385 -9.523796e-01
#> 184  1  1  0  6 42.700996 0 1   7.911003073  9.197241e+00
#> 185  1  1  1 10 53.775189 1 1   9.353047497  1.484935e+00
#> 186  1  1  0  1 39.351433 0 1   1.133712863  3.899058e+00
#> 187  1  1  0  7 53.167769 1 1   2.305935909  1.556100e+00
#> 188  0  1  0  5 31.564142 0 1   4.289296616  7.427771e+00
#> 189  1  1  1 13 25.352937 1 1   4.979046672 -3.290437e+00
#> 190  1  1  0 16 31.411083 1 1  -2.940314579 -5.717119e+00
#> 191  1  1  1 11 32.813555 1 1   3.361253118 -1.982160e+00
#> 192  1  1  1 15 36.121487 1 1  -0.970711939 -1.360632e+00
#> 193  0  0  0  3 26.346076 1 1   9.115394580  6.228697e+00
#> 194  0  1  0  3 48.828934 0 1   2.793638778 -3.379844e-01
#> 195  0  1  0  7 22.521061 0 1   7.097008285  3.603588e+00
#> 196  1  1  0  5 32.589594 0 1   0.092793759  3.382757e+00
#> 197  1  1  0  4 53.354020 1 1  -0.619647071 -1.040542e+00
#> 198  1  1  0  7 24.877663 0 1   3.020977314  5.012234e+00
#> 199  1  1  1 48  9.658688 1 1  -3.126033387 -1.015658e+01
#> 200  0  1  0 10 21.185143 1 1   2.979364745 -1.164414e+00
#> 201  1  1  1 16 45.574533 0 0  -1.170599356 -4.090475e+00
#> 202  1  1  0 19 49.753978 0 0  -4.327878076 -4.250967e+00
#> 203  1  1  0 13 51.656140 0 0   3.741221078 -2.428570e+00
#> 204  0  1  0  2 50.628283 0 0   7.818202719  4.185474e+00
#> 205  1  0  0  4 60.632831 0 0   3.215703409 -4.333667e-01
#> 206  0  1  0  6 37.539300 0 0   3.574192537  1.737581e+00
#> 207  1  1  0 12 56.761941 0 0  -0.139090496 -2.532402e+00
#> 208  1  1  0  3 57.853619 0 0   7.557400607  4.969039e+00
#> 209  1  1  1 12 66.597793 0 0   3.286716258 -2.479280e+00
#> 210  0  0  0  2 44.266250 0 0   4.688569486  9.119320e-01
#> 211  1  1  0 11 61.868042 0 0   2.769021799 -3.280917e-01
#> 212  1  1  1  4 52.319535 0 0  -3.046927075  1.031815e+00
#> 213  1  1  1 13 53.607806 0 0  -4.190965420 -6.206818e+00
#> 214  1  1  0  4 64.761844 0 0   3.251485182  8.106464e+00
#> 215  1  1  0 12 69.659561 0 0  -0.777709923 -6.300584e+00
#> 216  0  0  0 10 50.602525 0 0   9.006588379  2.832018e+00
#> 217  1  1  0  4 58.713556 0 0   4.959681503 -2.555234e+00
#> 218  1  1  0 11 60.464910 0 0   2.946985272 -8.358593e+00
#> 219  0  1  0  3 60.319858 0 0   4.341655227 -5.199369e+00
#> 220  1  1  0  5 47.907573 0 0  -2.324928678 -1.578833e+00
#> 221  1  1  1 15 49.576180 0 0   5.794106892 -6.828809e+00
#> 222  0  1  0 11 43.841274 0 0  -0.130090805  3.662391e+00
#> 223  1  1  1 32 55.751752 0 0 -10.453345679 -1.111238e+01
#> 224  1  1  0  6 74.411148 0 0  -2.169225680  3.226771e+00
#> 225  1  1  1 11 49.734210 0 0  -1.931145376 -3.971801e+00
#> 226  1  1  0 13 49.732330 0 0   4.609875096 -6.604396e+00
#> 227  1  1  0  3 67.788006 0 0   3.100369676 -2.056888e+00
#> 228  1  1  1 17 76.980958 0 0  -7.342542390 -3.822280e+00
#> 229  1  1  0  6 63.181816 0 0  -1.601939090  2.684047e+00
#> 230  1  1  1 11 51.263317 0 0   8.063756245 -4.684002e+00
#> 231  1  1  0 10 52.024749 0 0   5.771868866 -1.153793e-01
#> 232  1  1  0  4 58.931850 0 0   6.224035594  1.106523e+00
#> 233  1  1  0 13 57.013748 0 0  -1.912009218 -7.253637e-01
#> 234  1  1  0 16 55.729810 0 0   4.134071680 -3.477954e+00
#> 235  1  1  0 12 49.066143 0 0   2.988151796 -1.121441e+00
#> 236  1  1  0  3 44.829800 0 0   2.044378960  5.978712e+00
#> 237  1  1  1 15 51.567513 0 0   6.762654249 -9.509159e+00
#> 238  1  1  1 41 50.531709 0 0  -6.592139153 -9.086373e+00
#> 239  0  1  0 23 52.291445 0 0  -6.071196833 -6.970973e+00
#> 240  1  1  1 12 77.663707 0 0  -4.922886804 -5.714324e-01
#> 241  1  1  1 27 25.515318 0 0  -2.652526333 -2.848093e+00
#> 242  1  1  0  5 55.415496 0 0   3.592604380  7.966650e+00
#> 243  1  1  1 17 64.579670 0 0  -3.221181015  1.296604e+00
#> 244  1  1  0  6 66.508481 0 0   4.627543467  2.179390e+00
#> 245  1  1  0  7 59.091816 0 0  -8.408961802  5.103764e-02
#> 246  0  1  0  8 50.042419 0 0  -0.430111768 -4.657210e+00
#> 247  1  1  0  7 65.007360 0 0  -2.741167629 -4.278488e+00
#> 248  1  1  0 11 46.871372 0 0  -3.869868379 -1.002395e+00
#> 249  1  1  0  7 73.139472 0 0   0.503698676  2.862762e+00
#> 250  1  1  0  7 52.239344 0 0  -6.499449555 -2.662292e+00
#> 251  1  1  0  6 69.994952 0 0   0.010246021 -2.598719e-01
#> 252  1  1  1 22 46.565566 0 0   0.701982124 -3.489101e-01
#> 253  1  1  1 14 38.143550 0 0  -3.508046394  1.198510e+00
#> 254  1  1  0 23 29.623060 0 0  -0.981949005 -1.085873e+00
#> 255  1  1  0  5 46.806545 0 0   6.084062711  1.277967e+01
#> 256  0  0  0  8 48.560871 0 0   7.858508434 -3.974427e+00
#> 257  0  0  0  1 48.173303 0 0   3.728417032  6.815746e+00
#> 258  1  1  0 18 59.498943 0 0  -7.864016460  3.785880e+00
#> 259  0  1  0  9 39.661727 0 0  -0.857362361  4.678610e+00
#> 260  1  1  0  7 51.704950 0 0   0.506825570  3.257549e+00
#> 261  1  1  0  3 56.666767 0 0   8.726400555  4.092377e+00
#> 262  1  1  1 11 54.997869 0 0   5.933517834 -7.105224e+00
#> 263  0  1  0  3 40.651027 0 0   7.911677709 -1.754221e+00
#> 264  0  1  0  3 40.633093 0 0   5.661701859  2.859294e+00
#> 265  0  0  0  1 44.443386 0 0  10.861168751  6.124480e+00
#> 266  0  1  0  5 33.232676 0 0  11.283366543  4.688796e+00
#> 267  0  0  0  2 55.141531 0 0   6.565700861  1.045512e+01
#> 268  1  1  1 18 36.415495 0 0   1.798054608 -2.352087e+00
#> 269  1  1  1 20 54.664660 0 0 -10.825340414 -4.683654e-01
#> 270  0  0  0  1 35.132614 0 0   2.293742834  6.665232e+00
#> 271  0  1  0  6 62.605645 0 0   1.310315140 -7.079218e+00
#> 272  0  0  0  4 65.468136 0 0   3.199886566  1.603639e+00
#> 273  1  0  0  5 44.521618 0 0   8.572710905  1.689092e+00
#> 274  1  1  0  5 50.471602 0 0   2.366519938  4.536772e+00
#> 275  1  1  0  3 78.548154 0 0   0.001722342  1.501911e+00
#> 276  1  1  0 11 62.598449 0 0   2.935686924  6.109858e+00
#> 277  0  1  0  5 37.400524 0 0   4.837331288 -1.625488e+00
#> 278  1  1  0  2 54.434229 0 0   3.331882369 -3.318821e+00
#> 279  1  1  1 27 56.090926 0 0  -1.766101876 -4.768352e+00
#> 280  1  1  0  2 53.827240 0 0   1.513664220  1.722110e+00
#> 281  1  1  0  5 49.276569 0 0   6.058501339  4.883755e+00
#> 282  1  1  0  5 56.612655 0 0  -3.571116867  1.411234e+00
#> 283  1  1  0  3 77.898292 0 0  -4.678598047  4.983867e-01
#> 284  1  1  0  6 43.275675 0 0   0.806299963  7.442646e-01
#> 285  1  1  0  7 80.352773 0 0  -6.091429948  4.934305e-01
#> 286  1  1  1 21 53.749187 0 0   1.806389941 -8.111033e+00
#> 287  0  1  0 12 65.240309 0 0  -8.534078353 -1.735507e+00
#> 288  1  1  0 18 50.040557 0 0   1.212823358 -5.091146e+00
#> 289  1  1  1 11 53.634794 0 0  -5.886473049  2.696330e+00
#> 290  1  1  0 12 60.263171 0 0  -2.063153265  5.381447e+00
#> 291  1  1  0  1 68.690202 0 0   2.047042138  1.373103e+00
#> 292  1  1  0  5 62.255806 0 0  -6.405501927  4.154659e+00
#> 293  0  1  0  6 62.252765 0 0   8.705988613  1.494095e+00
#> 294  1  1  0  4 55.842818 0 0  -1.172166353  1.684951e+00
#> 295  0  1  1 11 47.286530 0 0   9.243057043 -8.070466e+00
#> 296  1  1  0 14 63.199598 0 0   5.047776664  1.983845e+00
#> 297  1  1  0  2 51.258889 0 0   5.180440423  2.956244e+00
#> 298  1  1  1 17 67.846810 0 0  -0.861282396 -7.833959e+00
#> 299  1  1  0  5 62.657655 0 0  -1.649690833 -3.240491e+00
#> 300  1  1  0  8 58.151316 0 0   5.018996445 -2.420345e+00

2 Parametric inference:

# Specify a list of methods to be tested
## IPW - optimal weight
method_IPW_optimal_weight <- setup_method_weighting(
  method_name = "IPW",
  optimal_weight_flag = TRUE,
  model_form_piS = "S ~ x1 + x2 + x3 + x4 + x5"
)

## AIPW - optimal weight
method_AIPW_optimal_weight <- setup_method_weighting(
  method_name = "AIPW",
  optimal_weight_flag = TRUE,
  model_form_piS = "S ~ x1 + x2 + x3 + x4 + x5",
  model_form_mu0_ext = c(
    "y1 ~ x1 + x2 + x3 + x4 + x5",
    "y2 ~ x1 + x2 + x3 + x4 + x5"
  )
)

## IPW - zero weight
method_IPW_zero_weight <- setup_method_weighting(
  method_name = "IPW",
  wt = 0,
  optimal_weight_flag = FALSE,
  model_form_piS = "S ~ x1 + x2 + x3 + x4 + x5"
)

## AIPW - zero weight
method_AIPW_zero_weight <- setup_method_weighting(
  method_name = "AIPW",
  wt = 0,
  optimal_weight_flag = FALSE,
  model_form_piS = "S ~ x1 + x2 + x3 + x4 + x5",
  model_form_mu0_ext = c(
    "y1 ~ x1 + x2 + x3 + x4 + x5",
    "y2 ~ x1 + x2 + x3 + x4 + x5"
  )
)

## method list
method_obj_list <- list(
  method_IPW_optimal_weight,
  method_AIPW_optimal_weight,
  method_IPW_zero_weight,
  method_AIPW_zero_weight
)
# create a simulation object for primary analysis
simulation_primary_obj <- setup_simulation_primary(
  data_matrix_list_null = data_matrix_list_null, # two scenarios
  data_matrix_list_alt = data_matrix_list_alt,
  trial_status_col_name = trial_status_col_name,
  treatment_col_name = treatment_col_name,
  outcome_col_name = outcome_col_name,
  covariates_col_name = covariates_col_name,
  method_obj_list = method_obj_list,
  true_effect = true_effect,
  alt_effect = alt_effect,
  alpha = alpha,
  method_description = c(
    "IPW, optimal weight",
    "AIPW, optimal weight",
    "IPW, zero weight",
    "AIPW, zero weight"
  )
)
simulation_report <- run_simulation(simulation_primary_obj, quiet = FALSE)
#> Null:  | method setting:  1 | data setting:  1 
#> Null:  | method setting:  1 | data setting:  2 
#> Null:  | method setting:  1 | data setting:  3 
#> Null:  | method setting:  2 | data setting:  1 
#> Null:  | method setting:  2 | data setting:  2 
#> Null:  | method setting:  2 | data setting:  3 
#> Null:  | method setting:  3 | data setting:  1 
#> Null:  | method setting:  3 | data setting:  2 
#> Null:  | method setting:  3 | data setting:  3 
#> Null:  | method setting:  4 | data setting:  1 
#> Null:  | method setting:  4 | data setting:  2 
#> Null:  | method setting:  4 | data setting:  3 
#> Alternative:  | method setting:  1 | data setting:  1 
#> Alternative:  | method setting:  1 | data setting:  2 
#> Alternative:  | method setting:  1 | data setting:  3 
#> Alternative:  | method setting:  2 | data setting:  1 
#> Alternative:  | method setting:  2 | data setting:  2 
#> Alternative:  | method setting:  2 | data setting:  3 
#> Alternative:  | method setting:  3 | data setting:  1 
#> Alternative:  | method setting:  3 | data setting:  2 
#> Alternative:  | method setting:  3 | data setting:  3 
#> Alternative:  | method setting:  4 | data setting:  1 
#> Alternative:  | method setting:  4 | data setting:  2 
#> Alternative:  | method setting:  4 | data setting:  3
simulation_report # Type I error and Power
#>     method_description      bias   variance       mse  coverage type_I_error
#> 1  IPW, optimal weight 0.7112827 1.28839749 1.7943206 0.6666667    0.3333333
#> 2 AIPW, optimal weight 0.1711321 0.09574202 0.1250282 1.0000000    0.0000000
#> 3     IPW, zero weight 0.7433970 1.34009734 1.8927365 0.6666667    0.3333333
#> 4    AIPW, zero weight 0.1449855 0.12189665 0.1429174 1.0000000    0.0000000
#>       power
#> 1 1.0000000
#> 2 1.0000000
#> 3 0.6666667
#> 4 1.0000000

3 Bootstrap inference:

# Specify a list of methods to be tested
bootstrap_obj <- setup_bootstrap(
  replicates = 50,
  bootstrap_CI_type = "perc"
)

## IPW - optimal weight
method_IPW_optimal_weight <- setup_method_weighting(
  method_name = "IPW",
  optimal_weight_flag = TRUE,
  bootstrap_flag = TRUE,
  bootstrap_obj = bootstrap_obj,
  model_form_piS = "S ~ x1 + x2 + x3 + x4 + x5"
)

## AIPW - optimal weight
method_AIPW_optimal_weight <- setup_method_weighting(
  method_name = "AIPW",
  optimal_weight_flag = TRUE,
  bootstrap_flag = TRUE,
  bootstrap_obj = bootstrap_obj,
  model_form_piS = "S ~ x1 + x2 + x3 + x4 + x5",
  model_form_mu0_ext = c(
    "y1 ~ x1 + x2 + x3 + x4 + x5",
    "y2 ~ x1 + x2 + x3 + x4 + x5 + y1"
  )
)

## IPW - zero weight
method_IPW_zero_weight <- setup_method_weighting(
  method_name = "IPW",
  wt = 0,
  optimal_weight_flag = FALSE,
  bootstrap_flag = TRUE,
  bootstrap_obj = bootstrap_obj,
  model_form_piS = "S ~ x1 + x2 + x3 + x4 + x5"
)

## AIPW - zero weight
method_AIPW_zero_weight <- setup_method_weighting(
  method_name = "AIPW",
  wt = 0,
  optimal_weight_flag = FALSE,
  bootstrap_flag = TRUE,
  bootstrap_obj = bootstrap_obj,
  model_form_piS = "S ~ x1 + x2 + x3 + x4 + x5",
  model_form_mu0_ext = c(
    "y1 ~ x1 + x2 + x3 + x4 + x5",
    "y2 ~ x1 + x2 + x3 + x4 + x5 + y1"
  )
)

## method list
method_obj_list <- list(
  method_IPW_optimal_weight,
  method_AIPW_optimal_weight,
  method_IPW_zero_weight,
  method_AIPW_zero_weight
)
# create a simulation object for primary analysis
simulation_primary_obj <- setup_simulation_primary(
  data_matrix_list_null = data_matrix_list_null,
  data_matrix_list_alt = data_matrix_list_alt,
  trial_status_col_name = trial_status_col_name,
  treatment_col_name = treatment_col_name,
  outcome_col_name = outcome_col_name,
  covariates_col_name = covariates_col_name,
  method_obj_list = method_obj_list,
  true_effect = true_effect,
  alt_effect = alt_effect,
  alpha = alpha,
  method_description = c(
    "IPW, optimal weight, bootstrap",
    "AIPW, optimal weight, bootstrap",
    "IPW, zero weight, bootstrap",
    "AIPW, zero weight, bootstrap"
  )
)
simulation_report_bs <- run_simulation(simulation_primary_obj, quiet = FALSE)
#> Null:  | method setting:  1 | data setting:  1 
#> Null:  | method setting:  1 | data setting:  2 
#> Null:  | method setting:  1 | data setting:  3 
#> Null:  | method setting:  2 | data setting:  1 
#> Null:  | method setting:  2 | data setting:  2 
#> Null:  | method setting:  2 | data setting:  3 
#> Null:  | method setting:  3 | data setting:  1 
#> Null:  | method setting:  3 | data setting:  2 
#> Null:  | method setting:  3 | data setting:  3 
#> Null:  | method setting:  4 | data setting:  1 
#> Null:  | method setting:  4 | data setting:  2 
#> Null:  | method setting:  4 | data setting:  3 
#> Alternative:  | method setting:  1 | data setting:  1 
#> Alternative:  | method setting:  1 | data setting:  2 
#> Alternative:  | method setting:  1 | data setting:  3 
#> Alternative:  | method setting:  2 | data setting:  1 
#> Alternative:  | method setting:  2 | data setting:  2 
#> Alternative:  | method setting:  2 | data setting:  3 
#> Alternative:  | method setting:  3 | data setting:  1 
#> Alternative:  | method setting:  3 | data setting:  2 
#> Alternative:  | method setting:  3 | data setting:  3 
#> Alternative:  | method setting:  4 | data setting:  1 
#> Alternative:  | method setting:  4 | data setting:  2 
#> Alternative:  | method setting:  4 | data setting:  3
simulation_report_bs
#>                method_description      bias   variance       mse  coverage
#> 1  IPW, optimal weight, bootstrap 0.7112827 1.28839749 1.7943206 0.6666667
#> 2 AIPW, optimal weight, bootstrap 0.1706491 0.09260821 0.1217293 0.6666667
#> 3     IPW, zero weight, bootstrap 0.7433970 1.34009734 1.8927365 0.6666667
#> 4    AIPW, zero weight, bootstrap 0.1429335 0.11738462 0.1378146 0.6666667
#>   type_I_error     power
#> 1    0.3333333 0.6666667
#> 2    0.3333333 0.3333333
#> 3    0.3333333 0.6666667
#> 4    0.3333333 0.3333333

The above code generates a report for the simulation results.

References

  • Zhou X, Zhu J, Drake C, Pang H (2024). “Causal estimators for incorporating external controls in randomized trials with longitudinal outcomes.” Journal of the Royal Statistical Society Series A: Statistics in Society. doi: 10.1093/jrsssa/qnae075.
  • Shi L, Pang H, Chen C, Zhu J (2025). “rdborrow: an R package for causal inference incorporating external controls in randomized controlled trials with longitudinal outcomes.” Journal of Biopharmaceutical Statistics, 35(6), 1043-1066. doi: 10.1080/10543406.2025.2489283.