Separate analysis for binary data adjusted for periods
Source:R/sepmodel_adj_bin.R
sepmodel_adj_bin.Rd
This function performs separate analysis (only taking into account concurrent controls) using a logistic model and adjusting for periods, if the treatment arm stays in the trial for more than one period.
Arguments
- data
Data frame with trial data, e.g. result from the
datasim_bin()
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 log-odds ratiolower_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 adjusted separate analysis takes into account only the data from the evaluated experimental treatment arm and its concurrent controls and 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 response probability 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:
$$g(E(y_j)) = \eta_0 + \theta_M \cdot I(k_j=M) + \sum_{s=S_{M_1}+1}^{S_{M_2}} \tau_s \cdot I(t_j \in T_{S_s})$$
where \(g(\cdot)\) denotes the logit link function and \(\eta_0\) is the log odds in the concurrent controls; \(\theta_M\) represents the log odds ratio of treatment \(M\) and control; \(\tau_s\) indicates the stepwise period effect in terms of the log odds ratio between periods \(S_{M_1}\) and \(s\) (\(s = S_{M_1}+1, \ldots, S_{M_2}\)), where \(S_{M_1}\) and \(S_{M_2}\) denote the periods, in which the investigated treatment arm joined and left the trial, respectively.
If the data consists of only one period, the period in not used as covariate.
Examples
trial_data <- datasim_bin(num_arms = 3, n_arm = 100, d = c(0, 100, 250),
p0 = 0.7, OR = rep(1.8, 3), lambda = rep(0.15, 4), trend="stepwise")
sepmodel_adj_bin(data = trial_data, arm = 3)
#> $p_val
#> [1] 0.2475459
#>
#> $treat_effect
#> [1] 0.2337514
#>
#> $lower_ci
#> [1] -0.4365884
#>
#> $upper_ci
#> [1] 0.9127423
#>
#> $reject_h0
#> [1] FALSE
#>
#> $model
#>
#> Call: glm(formula = response ~ as.factor(treatment) + as.factor(period),
#> family = binomial, data = data_new)
#>
#> Coefficients:
#> (Intercept) as.factor(treatment)3 as.factor(period)4
#> 1.2120 0.2338 -0.1169
#>
#> Degrees of Freedom: 199 Total (i.e. Null); 197 Residual
#> Null Deviance: 210.8
#> Residual Deviance: 210.2 AIC: 216.2
#>