This function performs pooled analysis (naively pooling concurrent and non-concurrent controls without adjustment) using a linear model.
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.
- 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 meanslower_ci
- lower limit of the (1-2*alpha
)*100% confidence intervalupper_ci
- upper limit of the (1-2*alpha
)*100% confidence intervalreject_h0
- indicator of whether the null hypothesis was rejected or not (p_val
<alpha
)model
- fitted model
Details
The pooled analysis takes into account only the data from the evaluated experimental treatment arm and the whole control arm and uses a linear regression model to evaluate the given treatment arm. 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 + \theta_M \cdot I(k_j=M)$$
where \(\eta_0\) is the response in the control arm; \(\theta_M\) represents the treatment effect of treatment \(M\) as compared to control.
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")
poolmodel_cont(data = trial_data, arm = 3)
#> $p_val
#> [1] 0.003340889
#>
#> $treat_effect
#> [1] 0.3399883
#>
#> $lower_ci
#> [1] 0.09503259
#>
#> $upper_ci
#> [1] 0.5849441
#>
#> $reject_h0
#> [1] TRUE
#>
#> $model
#>
#> Call:
#> lm(formula = response ~ as.factor(treatment), data = data_new)
#>
#> Coefficients:
#> (Intercept) as.factor(treatment)3
#> 0.1106 0.3400
#>
#>