Spaces:
Paused
Paused
TSA Algorithms Reference
Overview
Trial Sequential Analysis (TSA) applies sequential monitoring boundaries to cumulative meta-analysis, controlling for repeated significance testing as evidence accumulates.
Core Algorithm: Z-Curve Calculation
Step 1: Calculate Cumulative Effect
For each study k added to the meta-analysis:
Z_k = θ_k / SE_k
Where:
- θ_k = pooled effect estimate after k studies
- SE_k = standard error of pooled estimate
Step 2: Information Fraction
t_k = V_k / V_OIS
Where:
- V_k = cumulative information (sum of inverse variances)
- V_OIS = required information size
Step 3: Boundary Calculation
Using alpha-spending function a(t):
Z_upper(t) = Φ^(-1)(1 - a(t)/2)
Z_lower(t) = -Z_upper(t) [for symmetrical boundaries]
Optimal Information Size (OIS)
Dichotomous Outcomes
OIS = 4 * (Z_α + Z_β)² * p̄(1-p̄) / (p_C - p_I)²
Where:
- Z_α = critical value for type I error
- Z_β = critical value for type II error
- p̄ = average of control and intervention rates
- p_C = expected control event rate
- p_I = expected intervention event rate
Heterogeneity Adjustment
OIS_adjusted = OIS / (1 - I²/100)
Effect Size Calculations
Odds Ratio (OR)
log(OR) = log(a*d / b*c)
SE(log(OR)) = √(1/a + 1/b + 1/c + 1/d)
Relative Risk (RR)
log(RR) = log((a/(a+c)) / (b/(b+d)))
SE(log(RR)) = √(c/(a(a+c)) + d/(b(b+d)))
Risk Difference (RD)
RD = a/(a+c) - b/(b+d)
SE(RD) = √(ac/(a+c)³ + bd/(b+d)³)
Pooling Methods
Fixed Effect (Inverse Variance)
θ_pooled = Σ(w_i * θ_i) / Σw_i
SE_pooled = √(1 / Σw_i)
where w_i = 1/SE_i²
Random Effects (DerSimonian-Laird)
τ² = max(0, (Q - df) / (Σw_i - Σw_i²/Σw_i))
w_i* = 1/(SE_i² + τ²)
θ_pooled = Σ(w_i* * θ_i) / Σw_i*
Heterogeneity Statistics
Q Statistic
Q = Σw_i(θ_i - θ_pooled)²
I-squared
I² = max(0, (Q - df) / Q * 100%)
Tau-squared (τ²)
Between-study variance estimated via:
- DerSimonian-Laird: Method of moments
- REML: Restricted maximum likelihood
- Sidik-Jonkman: Alternative estimator
Lan-DeMets Alpha Spending
Implementation
The Lan-DeMets method approximates group sequential boundaries through:
- Divide [0,1] into small increments
- At each t: calculate cumulative alpha spent
- Find Z-boundary that produces exact alpha spent
// Simplified algorithm from LanDeMetsCalculus.java
for (int i = 1; i <= maxIterations; i++) {
t = i / maxIterations;
alpha_spent = spendingFunction(t, alpha);
z_boundary[i] = findBoundary(alpha_spent, previous_boundaries);
}
Boundary Interpolation
For arbitrary information fractions, interpolate between calculated points:
Z(t) = Z(t_lower) + (Z(t_upper) - Z(t_lower)) * (t - t_lower) / (t_upper - t_lower)
References
- Lan GKK, DeMets DL (1983). Discrete sequential boundaries for clinical trials. Biometrika.
- O'Brien PC, Fleming TR (1979). A multiple testing procedure for clinical trials. Biometrics.
- Pocock SJ (1977). Group sequential methods in the design and analysis of clinical trials. Biometrika.
- Wetterslev J, et al. (2008). Trial sequential analysis may establish when firm evidence is reached in cumulative meta-analysis. J Clin Epidemiol.