Skip to contents

This function performs pooled analysis (naively pooling concurrent and non-concurrent controls without adjustment) using a logistic model.

Usage

poolmodel_bin(data, arm, alpha = 0.025, check = TRUE, ...)

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 ratio

  • 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 pooled analysis takes into account only the data from the evaluated experimental treatment arm and the whole control arm and uses a logistic regression model to evaluate the given treatment arm. 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)$$

where \(g(\cdot)\) denotes the logit link function and \(\eta_0\) is the log odds in the control arm; \(\theta_M\) represents the log odds ratio of treatment \(M\) and control.

Author

Pavla Krotka

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")

poolmodel_bin(data = trial_data, arm = 3)
#> $p_val
#> [1] 0.03441911
#> 
#> $treat_effect
#> [1] 0.6069788
#> 
#> $lower_ci
#> [1] -0.02471136
#> 
#> $upper_ci
#> [1] 1.291571
#> 
#> $reject_h0
#> [1] FALSE
#> 
#> $model
#> 
#> Call:  glm(formula = response ~ as.factor(treatment), family = binomial, 
#>     data = data_new)
#> 
#> Coefficients:
#>           (Intercept)  as.factor(treatment)3  
#>                 1.208                  0.607  
#> 
#> Degrees of Freedom: 299 Total (i.e. Null);  298 Residual
#> Null Deviance:	    300.2 
#> Residual Deviance: 296.7 	AIC: 300.7
#>