Skip to contents

This function performs linear regression taking into account all trial data until the arm under study leaves the trial and adjusting for periods as factors.

Usage

fixmodel_cont(data, arm, alpha = 0.025, ncc = TRUE, check = TRUE, ...)

Arguments

data

Data frame with trial data, e.g. result from the datasim_cont() function. Must contain columns named 'treatment', 'response' and 'period'.

arm

Integer. Index of the treatment arm under study to perform inference on (vector of length 1). This arm is compared to the control group.

alpha

Double. Significance level (one-sided). Default=0.025.

ncc

Logical. Indicates whether to include non-concurrent data into the analysis. Default=TRUE.

check

Logical. Indicates whether the input parameters should be checked by the function. Default=TRUE, unless the function is called by a simulation function, where the default is FALSE.

...

Further arguments passed by wrapper functions when running simulations.

Value

List containing the following elements regarding the results of comparing arm to control:

  • p-val - p-value (one-sided)

  • treat_effect - estimated treatment effect in terms of the difference in means

  • lower_ci - lower limit of the (1-2*alpha)*100% confidence interval

  • upper_ci - upper limit of the (1-2*alpha)*100% confidence interval

  • reject_h0 - indicator of whether the null hypothesis was rejected or not (p_val < alpha)

  • model - fitted model

Details

The model-based analysis adjusts for the time effect by including the factor period (defined as a time interval bounded by any treatment arm entering or leaving the platform). The time is then modelled as a step-function with jumps at the beginning of each period. Denoting by \(y_j\) the continuous response for patient \(j\), by \(k_j\) the arm patient \(j\) was allocated to, and by \(M\) the treatment arm under evaluation, the regression model is given by:

$$E(y_j) = \eta_0 + \sum_{k \in \mathcal{K}_M} \theta_k \cdot I(k_j=k) + \sum_{s=2}^{S_M} \tau_s \cdot I(t_j \in T_{S_s})$$

where \(\eta_0\) is the response in the control arm in the first period; \(\theta_k\) represents the effect of treatment \(k\) compared to control for \(k\in\mathcal{K}_M\), where \(\mathcal{K}_M\) is the set of treatments that were active in the trial during periods prior or up to the time when the investigated treatment arm left the trial; \(\tau_s\) indicates the stepwise period effect between periods 1 and \(s\) (\(s = 2, \ldots, S_M\)), where \(S_M\) denotes the period, in which the investigated treatment arm left the trial.

If the data consists of only one period (e.g. in case of a multi-arm trial), the period in not used as covariate.

References

On model-based time trend adjustments in platform trials with non-concurrent controls. Bofill Roig, M., Krotka, P., et al. BMC Medical Research Methodology 22.1 (2022): 1-16.

Author

Pavla Krotka

Examples


trial_data <- datasim_cont(num_arms = 3, n_arm = 100, d = c(0, 100, 250),
theta = rep(0.25, 3), lambda = rep(0.15, 4), sigma = 1, trend = "linear")

fixmodel_cont(data = trial_data, arm = 3)
#> $p_val
#> [1] 0.02602365
#> 
#> $treat_effect
#> [1] 0.2742888
#> 
#> $lower_ci
#> [1] -0.002440912
#> 
#> $upper_ci
#> [1] 0.5510185
#> 
#> $reject_h0
#> [1] FALSE
#> 
#> $model
#> 
#> Call:
#> lm(formula = response ~ as.factor(treatment) + as.factor(period), 
#>     data = data_new)
#> 
#> Coefficients:
#>           (Intercept)  as.factor(treatment)1  as.factor(treatment)2  
#>              -0.02749                0.28386                0.50010  
#> as.factor(treatment)3     as.factor(period)2     as.factor(period)3  
#>               0.27429               -0.02256                0.17762  
#>    as.factor(period)4  
#>               0.17772  
#> 
#>