Trial biostatistics toolkit

SAP and mock shells: a prespecified check

C-QTc hysteresis check: a signed loop area on model residuals

Tools builtRuns: cqtc_hysteresis/R/run_oc.RExploratory (synthetic)

Synthetic data only: simulated for this page; not trial data and not a regulatory deliverable.

Tools built: a small formalization of the standard C-QTc hysteresis check. The signed loop area is established (cyclicity analysis; the hysteresis-loop literature). This page computes it on residuals from the prespecified direct-effect model and documents its operating characteristics on synthetic data. It supplements, and does not replace, the prespecified C-QTc model or effect-compartment modeling.

  1. The SAP step this formalizes
  2. Statistic
  3. Why the model matters
  4. Operating characteristics
  5. Diurnal confound and the Day -1 check
  6. SAP text
  7. What it does not do
  8. Provenance and credit

The SAP step this formalizes

Concentration-QTc (C-QTc) analysis under ICH E14 Q&A (R3) (Q5.1) fits a prespecified model of ddQTcF (the change from baseline in QTcF minus the time-matched placebo mean) on plasma concentration, usually a linear mixed-effects model (Garnett et al. 2018). That model assumes the effect follows concentration with no delay. Before fitting it, the SAP checks for hysteresis: an effect that lags concentration, from distribution to the site of action, a metabolite or slow channel kinetics.

The check is usually visual. The registry SAPs listed under credit assess it with joint plots of the mean ddQTcF and mean concentration by time and a "hysteresis plot", and consider other models if "the curve of the hysteresis plot shows a counterclockwise loop" and the time of the peak effect is more than 1 hour from tmax. The CiPA Phase 1 SAP adds a formal one-sided Wilcoxon test at 1% alongside the same 1 hour rule. This page replaces the visual judgment with one number per participant and a test whose size and power are documented on synthetic data, and keeps the tmax gap beside it.

Statistic

Data. For each active participant i: actual times t1 < ... < tm over the dosing interval, concentration Cij and ddQTcFij. Concentration is scaled to the participant's own Cmax, xij = Cij / maxj Cij (prespecified). For each placebo participant k in the pooled placebo group: dQTcFkj at the same nominal times, whose mean at each time, pbarj, is subtracted from every active participant's dQTcF to give ddQTcF.

Direct-effect model (prespecified, no time factor): ddQTcFij = f(Cij; theta) + bi + eij, with f linear (theta0 + theta1 C), or Emax (E0 + Emax C / (EC50 + C)) if the SAP's linearity check selects it. Residuals rij = ddQTcFij - f-hat(Cij) - b-hati.

Signed area of the closed path (xi1, ri1), ..., (xim, rim), back to the start (the shoelace formula, index m + 1 = 1):

Ai = ½ Σj=1..m (xj rj+1 - xj+1 rj)

Ai > 0 means the loop runs counterclockwise: the effect is lower on the way up than on the way down, so it lags concentration. Ai is in ms. It is also the off-diagonal of the antisymmetric part of the lag-1 cross-moment Γ = Σj zj zj+1T with zj = (xj, rj), so reversing time flips its sign exactly.

Why the test must allow for the placebo mean. The statistic is A-bar, the mean of Ai over the active participants. Under the null (no delay given f, with errors independent of C and symmetric), each Ai is symmetric about 0, because it is linear in the errors; autocorrelation within a participant is allowed. The Ai are not independent, though: every active participant's ddQTcF subtracts the same placebo mean, so every Ai carries minus the area of its x path against the same placebo-mean noise. Because the area is bilinear, A-bar is exactly the mean active area on dQTcF minus the mean of hk, where hk is the signed area of placebo participant k's dQTcF against the active participants' mean x profile (checked to 1e-10 in the tests). Its variance therefore has a placebo part that shrinks with the number of placebo participants, not the number of active ones. A participant-level sign-flip test of the Ai leaves that part out: with 32 active and 8 placebo participants and no delay, it rejected in 0.236 (MCSE 0.013) of trials at a nominal 0.05.

Test (pooled placebo, as in SAD and MAD studies). t = A-bar / SE, with SE2 = s2A / n + s2h / npbo, where s2A is the sample variance of the Ai (the shared term is nearly the same for every participant, so it nearly drops out of it) and s2h that of the hk, computed on each placebo participant's deviation from pbar. The degrees of freedom are Welch-Satterthwaite. This is a two-group (Welch) comparison; its size is approximate, not exact, and was checked on the synthetic designs below. One-sided for counterclockwise loops; two-sided also catches clockwise loops (tolerance). Secondary: a parametric bootstrap from the fitted direct-effect model that also draws the placebo-mean noise (B = 999).

When the sign-flip test is exact. If each participant's ddQTcF is corrected by their own placebo profile (a crossover with a placebo period), nothing is shared and the Ai are independent. A participant-level sign-flip test is then exact: all 2n sign vectors when n ≤ 20, otherwise B = 9,999 random sign vectors with p = (1 + #{A-bar* ≥ A-bar}) / (B + 1).

Reported beside the test: A-bar in ms with a 95% CI from the same SE and degrees of freedom, the model used for f, and the tmax gap (the time of peak ddQTcF minus the median tmax, flagged when it exceeds 1 hour). Two versions of the gap are computed: the median over participants of the time of peak ddQTcF, and the time of the peak of the mean ddQTcF profile, as in the registry SAPs.

One synthetic trial (32 active and 8 placebo participants, seed 20261025) through hysteresis_check(), the function the mock shells mirror:

What the check reports for one synthetic dataset per row (out/example_check.csv). p values and CI from the placebo-adjusted t-test; the bootstrap uses 999 draws. The placebo-mean part dominates the SE, so the Welch-Satterthwaite degrees of freedom (10.6 to 12.1 here) are close to the placebo group's size, not the active group's.
Dataset (32 + 8 placebo)fA-bar, ms (95% CI); SE (df)p, one / two-sidedBootstrap ptmax gap, h (individual / mean)Day -1 A-bar, ms
Linear, no delaylinear-0.25
(-3.11, 2.61)
SE 1.30 (df 10.6)
0.5751 / 0.84980.549-0.5 / 2.02.06
(p 0.175)
Linear, ke0 = 0.7 per hlinear3.17
(0.65, 5.69)
SE 1.15 (df 11.6)
0.0090 / 0.01810.0091.0 / 0.0-0.65
(p 0.688)
Emax, no delay: raw arealinear1.85
(-0.66, 4.35)
SE 1.14 (df 11.3)
0.0665 / 0.13290.0710.0 / -0.51.92
(p 0.138)
Emax, no delay: Emax residual areaemax-0.56
(-3.09, 1.97)
SE 1.16 (df 12.1)
0.6820 / 0.63600.6850.0 / -0.51.92
(p 0.138)

Why the model matters

The closed-path area of any straight line (x, a + b x) is exactly 0, and a participant-level constant adds no area. So under a linear f the residual area equals the raw area of ddQTcF itself, whatever the fitted slope and intercepts. A curved direct effect is different. Sampled at 12 times, the path up and the path down pass through different points of the curve and the closing segment cuts a chord, so the raw path encloses area with no delay at all: 1.40 ms for the noise-free typical participant under the Emax model, against -0.002 ms on a 0.01 h grid and 2.34 ms for a real delay (linear, ke0 = 0.7 per h).

With noise, 32 active and 8 placebo participants, the raw-area test rejects in 0.296 (MCSE 0.014) of trials with an Emax direct effect and no delay. On residuals from the Emax fit the rate is 0.036 (MCSE 0.006), and 0.039 two-sided. The CiPA-style linearity check (a quadratic term tested two-sided at 5%, then the Emax model kept when its AIC is lower) picks Emax in 0.997 of these trials and 0.139 of the linear ones, and the area on residuals from the f it selects rejects in 0.036 (Emax truth) and 0.037 (linear truth); the MCSE of these rates is at most 0.016. When the Emax effect is also delayed (ke0 = 0.7 per h), both areas keep their power: 0.999 raw and 0.986 on Emax residuals. The residual area is conditional on the prespecified form: it removes the curvature the model describes, not curvature it misses.

a. Linear, no delayMean loop in time order with arrows and plus or minus one standard error, and the noise-free typical participant as a dashed line.a. Linear, no delay-20246800.250.50.751Concentration / CmaxddQTcF (ms)0 h (predose)0 h
No delay: the mean path goes out and back along one line. Mean signed area: 0.50 ms.
b. Linear, delay ke0 = 0.7 per hMean loop in time order with arrows and plus or minus one standard error, and the noise-free typical participant as a dashed line.b. Linear, delay ke0 = 0.7 per h-1012345600.250.50.751Concentration / CmaxddQTcF (ms)0 h (predose)0 h
Delay: the effect is low on the way up and high on the way down, so the loop runs counterclockwise. Mean signed area: 2.48 ms.
c. Emax, no delay: raw ddQTcFMean loop in time order with arrows and plus or minus one standard error, and the noise-free typical participant as a dashed line.c. Emax, no delay: raw ddQTcF-50510152000.250.50.751Concentration / CmaxddQTcF (ms)0 h (predose)0 h
Curved direct effect sampled at 12 times: the raw path still encloses area. Mean signed area: 1.39 ms.
d. Emax, no delay: Emax residualMean loop in time order with arrows and plus or minus one standard error, and the noise-free typical participant as a dashed line.d. Emax, no delay: Emax residual-1-0.500.511.500.250.50.751Concentration / CmaxResidual ddQTcF (ms)0 h (predose)0 h
The same data after removing the fitted Emax curve: almost no area is left. Mean signed area: -0.15 ms.

F2. Example loops. Solid: the mean over 200 simulated active participants, corrected by the mean of 200 placebo participants (more than a trial has, so that the expected shape is visible), in time order (arrows; whiskers are plus or minus one standard error; the dotted segment closes the path from 24 h back to 0 h). Dashed: the noise-free typical participant (ka 1.2 per h, ke 0.15 per h). A single noisy participant's loop is mostly noise here (residual SD 5 ms against a peak effect of about 6 ms under the linear model); the test pools the signed areas across participants. Standalone files: a, b, c, d.

Operating characteristics

Synthetic known-answer design (32 scenarios; 1,000 replicates each, so the MCSE of a rate near 0.05 is 0.007; scenario k uses seed 20261025 + k, listed in T1 and in the CSV). 32 active participants and a pooled placebo group of 8 (for example, four cohorts of 8 active and 2 placebo participants), sampled at 0, 0.5, 1, 1.5, 2, 3, 4, 6, 8, 12, 16 and 24 h. One-compartment oral PK with ka = 1.2 exp(N(0, 0.32)) per h, ke = 0.15 exp(N(0, 0.32)) per h and D/V = 2; an effect compartment dCe/dt = ke0 (C - Ce), solved analytically. Every participant's dQTcF carries a common daily rhythm, 4 sin(2π(t + 18)/24) ms, and N(0, 52) noise; active participants add a drug effect of 4 ms × Ce, or 20 Ce / (Ce + 0.4) ms for the Emax variant. ddQTcF is active dQTcF minus the time-matched placebo mean, as in the mock shells. One-sided alpha 0.05.

F1. Rejection rate of the one-sided placebo-adjusted area test against ke0Linear direct-effect model. With 32 active and 8 placebo participants the rejection rate rises from 0.05 with no delay to 0.49 at ke0 0.7 per hour; with 32 placebo participants it reaches 0.88; for one SAD cohort of 6 active participants against 8 placebo it stays at or below 0.35.0.000.250.500.751.00alpha 0.05∞4210.70.50.350.00.51.01.52.0ke0t½ke0, per h (top); t½ = ln 2 / ke0, h (bottom)32 + 8 placebo, ke0 infinite (direct effect): rejection rate 0.046 (exact 95% CI 0.034 to 0.061)32 + 8 placebo, ke0 4: rejection rate 0.159 (exact 95% CI 0.137 to 0.183)32 + 8 placebo, ke0 2: rejection rate 0.254 (exact 95% CI 0.227 to 0.282)32 + 8 placebo, ke0 1: rejection rate 0.427 (exact 95% CI 0.396 to 0.458)32 + 8 placebo, ke0 0.7: rejection rate 0.489 (exact 95% CI 0.458 to 0.520)32 + 8 placebo, ke0 0.5: rejection rate 0.553 (exact 95% CI 0.522 to 0.584)32 + 8 placebo, ke0 0.35: rejection rate 0.551 (exact 95% CI 0.520 to 0.582)32 + 32 placebo, ke0 infinite (direct effect): rejection rate 0.055 (exact 95% CI 0.042 to 0.071)32 + 32 placebo, ke0 4: rejection rate 0.254 (exact 95% CI 0.227 to 0.282)32 + 32 placebo, ke0 2: rejection rate 0.557 (exact 95% CI 0.526 to 0.588)32 + 32 placebo, ke0 1: rejection rate 0.819 (exact 95% CI 0.794 to 0.842)32 + 32 placebo, ke0 0.7: rejection rate 0.876 (exact 95% CI 0.854 to 0.896)32 + 32 placebo, ke0 0.5: rejection rate 0.907 (exact 95% CI 0.887 to 0.924)32 + 32 placebo, ke0 0.35: rejection rate 0.906 (exact 95% CI 0.886 to 0.923)6 + 8 placebo, ke0 infinite (direct effect): rejection rate 0.048 (exact 95% CI 0.036 to 0.063)6 + 8 placebo, ke0 4: rejection rate 0.086 (exact 95% CI 0.069 to 0.105)6 + 8 placebo, ke0 2: rejection rate 0.192 (exact 95% CI 0.168 to 0.218)6 + 8 placebo, ke0 1: rejection rate 0.288 (exact 95% CI 0.260 to 0.317)6 + 8 placebo, ke0 0.7: rejection rate 0.315 (exact 95% CI 0.286 to 0.345)6 + 8 placebo, ke0 0.5: rejection rate 0.345 (exact 95% CI 0.316 to 0.375)6 + 8 placebo, ke0 0.35: rejection rate 0.352 (exact 95% CI 0.322 to 0.383)32 + 8 placebo32 + 32 placebo6 + 8 placeboRejection rate, one-sided
F1. Rejection rate of the one-sided placebo-adjusted area test against ke0 (linear model; the x position is the equilibration half-life ln 2 / ke0, with the direct effect, ke0 = ∞, at 0). Whiskers are exact 95% intervals; hover a point for its value. Standalone file: out/f1_rejection_vs_ke0.svg.

32 active + 8 placebo 32 active + 32 placebo 6 active (one SAD cohort) + 8 placebo

T1. Operating characteristics: rejection rate at alpha 0.05 (one-sided unless stated) over 1,000 synthetic replicates per scenario, with its Monte Carlo standard error (MCSE) and exact (Clopper-Pearson) 95% interval. When no replicate, or every replicate, rejects, the MCSE formula gives 0, so the table shows n/a and the interval carries the uncertainty. Scenario k uses seed 20261025 + k. Source: out/oc_results.csv.
MethodRateMCSEExact 95% CI
KA1: Linear direct effect, no delay (32 active, 8 placebo; seed 20261026)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.0460.0070.034 to 0.061
Signed area, placebo-adjusted t, two-sided0.0500.0070.037 to 0.065
Signed area, participant-level sign-flip, one-sided (exact only with independent ddQTcF errors)0.2360.0130.210 to 0.264
Signed area, participant-level sign-flip, two-sided0.3460.0150.317 to 0.376
Linearity check selects Emax (selection rate, not a test)0.1390.0110.118 to 0.162
Area on residuals from the f the linearity check selects, one-sided0.0370.0060.026 to 0.051
Parametric bootstrap from the fitted model, one-sided (secondary)0.0480.0070.036 to 0.063
tmax gap > 1 h, median of individual peak times (rate the rule fires)0.1230.0100.103 to 0.145
tmax gap > 1 h, peak of the mean profile (rate the rule fires)0.1650.0120.142 to 0.190
Day -1 pseudo-loop check, placebo-adjusted t, two-sided0.0500.0070.037 to 0.065
Day -1 pseudo-loop check, placebo-adjusted t, one-sided0.0550.0070.042 to 0.071
Day -1 pseudo-loop check, sign-flip, two-sided0.3600.0150.330 to 0.391
KA1-p16: Linear direct effect, no delay; 16 placebo (32 active, 16 placebo; seed 20261027)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.0530.0070.040 to 0.069
Signed area, placebo-adjusted t, two-sided0.0540.0070.041 to 0.070
Signed area, participant-level sign-flip, one-sided (exact only with independent ddQTcF errors)0.1840.0120.160 to 0.209
Signed area, participant-level sign-flip, two-sided0.2610.0140.234 to 0.289
KA1-p32: Linear direct effect, no delay; 32 placebo (32 active, 32 placebo; seed 20261028)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.0550.0070.042 to 0.071
Signed area, placebo-adjusted t, two-sided0.0480.0070.036 to 0.063
Signed area, participant-level sign-flip, one-sided (exact only with independent ddQTcF errors)0.1130.0100.094 to 0.134
Signed area, participant-level sign-flip, two-sided0.1380.0110.117 to 0.161
KA1-within: Linear direct effect, no delay; crossover, own placebo period (32 active, each with their own placebo period; seed 20261029)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.0470.0070.035 to 0.062
Signed area, placebo-adjusted t, two-sided0.0530.0070.040 to 0.069
Signed area, participant-level sign-flip, one-sided (exact only with independent ddQTcF errors)0.0480.0070.036 to 0.063
Signed area, participant-level sign-flip, two-sided0.0560.0070.043 to 0.072
Day -1 pseudo-loop check, sign-flip, two-sided0.0500.0070.037 to 0.065
KA2: Emax direct effect, no delay (32 active, 8 placebo; seed 20261030)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.2960.0140.268 to 0.325
Signed area, placebo-adjusted t, two-sided0.2060.0130.181 to 0.232
Emax-residual area, placebo-adjusted t, one-sided0.0360.0060.025 to 0.050
Emax-residual area, placebo-adjusted t, two-sided0.0390.0060.028 to 0.053
Linearity check selects Emax (selection rate, not a test)0.9970.0020.991 to 0.999
Area on residuals from the f the linearity check selects, one-sided0.0360.0060.025 to 0.050
Parametric bootstrap from the fitted model, one-sided (secondary)0.0520.0070.039 to 0.068
tmax gap > 1 h, median of individual peak times (rate the rule fires)0.0840.0090.068 to 0.103
tmax gap > 1 h, peak of the mean profile (rate the rule fires)0.2040.0130.179 to 0.230
KA2-delay: Emax effect, delay ke0 = 0.7 per h (32 active, 8 placebo; seed 20261031)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.9990.0010.994 to 1.000
Signed area, placebo-adjusted t, two-sided0.9950.0020.988 to 0.998
Emax-residual area, placebo-adjusted t, one-sided0.9860.0040.977 to 0.992
Emax-residual area, placebo-adjusted t, two-sided0.9390.0080.922 to 0.953
Linearity check selects Emax (selection rate, not a test)0.9660.0060.953 to 0.976
Area on residuals from the f the linearity check selects, one-sided0.9860.0040.977 to 0.992
KA3-k4: Linear, delay ke0 = 4 per h (32 active, 8 placebo; seed 20261032)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.1590.0120.137 to 0.183
Signed area, placebo-adjusted t, two-sided0.1010.0090.083 to 0.121
Parametric bootstrap from the fitted model, one-sided (secondary)0.1590.0120.137 to 0.183
tmax gap > 1 h, median of individual peak times (rate the rule fires)0.2100.0130.185 to 0.237
tmax gap > 1 h, peak of the mean profile (rate the rule fires)0.2380.0130.212 to 0.266
KA3-k2: Linear, delay ke0 = 2 per h (32 active, 8 placebo; seed 20261033)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.2540.0140.227 to 0.282
Signed area, placebo-adjusted t, two-sided0.1680.0120.145 to 0.193
Parametric bootstrap from the fitted model, one-sided (secondary)0.2820.0140.254 to 0.311
tmax gap > 1 h, median of individual peak times (rate the rule fires)0.2870.0140.259 to 0.316
tmax gap > 1 h, peak of the mean profile (rate the rule fires)0.3140.0150.285 to 0.344
KA3-k1: Linear, delay ke0 = 1 per h (32 active, 8 placebo; seed 20261034)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.4270.0160.396 to 0.458
Signed area, placebo-adjusted t, two-sided0.3260.0150.297 to 0.356
Parametric bootstrap from the fitted model, one-sided (secondary)0.4800.0160.449 to 0.511
tmax gap > 1 h, median of individual peak times (rate the rule fires)0.5050.0160.473 to 0.536
tmax gap > 1 h, peak of the mean profile (rate the rule fires)0.4910.0160.460 to 0.522
KA3-k0.7: Linear, delay ke0 = 0.7 per h (32 active, 8 placebo; seed 20261035)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.4890.0160.458 to 0.520
Signed area, placebo-adjusted t, two-sided0.3530.0150.323 to 0.384
Parametric bootstrap from the fitted model, one-sided (secondary)0.5340.0160.502 to 0.565
tmax gap > 1 h, median of individual peak times (rate the rule fires)0.6340.0150.603 to 0.664
tmax gap > 1 h, peak of the mean profile (rate the rule fires)0.5790.0160.548 to 0.610
KA3-k0.5: Linear, delay ke0 = 0.5 per h (32 active, 8 placebo; seed 20261036)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.5530.0160.522 to 0.584
Signed area, placebo-adjusted t, two-sided0.4050.0150.374 to 0.436
Parametric bootstrap from the fitted model, one-sided (secondary)0.6120.0150.581 to 0.642
tmax gap > 1 h, median of individual peak times (rate the rule fires)0.7420.0140.714 to 0.769
tmax gap > 1 h, peak of the mean profile (rate the rule fires)0.6480.0150.618 to 0.678
KA3-k0.35: Linear, delay ke0 = 0.35 per h (32 active, 8 placebo; seed 20261037)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.5510.0160.520 to 0.582
Signed area, placebo-adjusted t, two-sided0.4110.0160.380 to 0.442
Parametric bootstrap from the fitted model, one-sided (secondary)0.5810.0160.550 to 0.612
tmax gap > 1 h, median of individual peak times (rate the rule fires)0.8150.0120.789 to 0.839
tmax gap > 1 h, peak of the mean profile (rate the rule fires)0.7270.0140.698 to 0.754
KA3-k4-p32: Linear, delay ke0 = 4 per h; 32 placebo (32 active, 32 placebo; seed 20261038)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.2540.0140.227 to 0.282
Signed area, placebo-adjusted t, two-sided0.1670.0120.144 to 0.192
KA3-k2-p32: Linear, delay ke0 = 2 per h; 32 placebo (32 active, 32 placebo; seed 20261039)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.5570.0160.526 to 0.588
Signed area, placebo-adjusted t, two-sided0.4240.0160.393 to 0.455
KA3-k1-p32: Linear, delay ke0 = 1 per h; 32 placebo (32 active, 32 placebo; seed 20261040)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.8190.0120.794 to 0.842
Signed area, placebo-adjusted t, two-sided0.7060.0140.677 to 0.734
KA3-k0.7-p32: Linear, delay ke0 = 0.7 per h; 32 placebo (32 active, 32 placebo; seed 20261041)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.8760.0100.854 to 0.896
Signed area, placebo-adjusted t, two-sided0.7810.0130.754 to 0.806
KA3-k0.5-p32: Linear, delay ke0 = 0.5 per h; 32 placebo (32 active, 32 placebo; seed 20261042)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.9070.0090.887 to 0.924
Signed area, placebo-adjusted t, two-sided0.8440.0110.820 to 0.866
KA3-k0.35-p32: Linear, delay ke0 = 0.35 per h; 32 placebo (32 active, 32 placebo; seed 20261043)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.9060.0090.886 to 0.923
Signed area, placebo-adjusted t, two-sided0.8350.0120.810 to 0.858
KA3-k0.7-p16: Linear, delay ke0 = 0.7 per h; 16 placebo (32 active, 16 placebo; seed 20261044)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.7070.0140.678 to 0.735
Signed area, placebo-adjusted t, two-sided0.6070.0150.576 to 0.637
KA3-k0.7-within: Linear, delay ke0 = 0.7 per h; crossover, own placebo period (32 active, each with their own placebo period; seed 20261045)
Signed area, participant-level sign-flip, one-sided (exact only with independent ddQTcF errors)0.8760.0100.854 to 0.896
Signed area, participant-level sign-flip, two-sided0.7870.0130.760 to 0.812
KA4-direct: One SAD cohort of 6, linear direct effect (6 active, 8 placebo; seed 20261046)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.0480.0070.036 to 0.063
Signed area, placebo-adjusted t, two-sided0.0380.0060.027 to 0.052
Signed area, participant-level sign-flip, one-sided (exact only with independent ddQTcF errors)0.0840.0090.068 to 0.103
Signed area, participant-level sign-flip, two-sided0.0610.0080.047 to 0.078
tmax gap > 1 h, median of individual peak times (rate the rule fires)0.2970.0140.269 to 0.326
tmax gap > 1 h, peak of the mean profile (rate the rule fires)0.2770.0140.249 to 0.306
KA4-k4: One SAD cohort of 6, ke0 = 4 per h (6 active, 8 placebo; seed 20261047)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.0860.0090.069 to 0.105
Signed area, placebo-adjusted t, two-sided0.0590.0070.045 to 0.075
KA4-k2: One SAD cohort of 6, ke0 = 2 per h (6 active, 8 placebo; seed 20261048)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.1920.0130.168 to 0.218
Signed area, placebo-adjusted t, two-sided0.1140.0100.095 to 0.135
KA4-k1: One SAD cohort of 6, ke0 = 1 per h (6 active, 8 placebo; seed 20261049)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.2880.0140.260 to 0.317
Signed area, placebo-adjusted t, two-sided0.1890.0120.165 to 0.215
KA4-k0.7: One SAD cohort of 6, ke0 = 0.7 per h (6 active, 8 placebo; seed 20261050)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.3150.0150.286 to 0.345
Signed area, placebo-adjusted t, two-sided0.2130.0130.188 to 0.240
KA4-k0.5: One SAD cohort of 6, ke0 = 0.5 per h (6 active, 8 placebo; seed 20261051)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.3450.0150.316 to 0.375
Signed area, placebo-adjusted t, two-sided0.2090.0130.184 to 0.235
KA4-k0.35: One SAD cohort of 6, ke0 = 0.35 per h (6 active, 8 placebo; seed 20261052)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.3520.0150.322 to 0.383
Signed area, placebo-adjusted t, two-sided0.2410.0130.215 to 0.269
tmax gap > 1 h, median of individual peak times (rate the rule fires)0.7640.0130.736 to 0.790
tmax gap > 1 h, peak of the mean profile (rate the rule fires)0.7160.0140.687 to 0.744
KA5: Tolerance (gamma = 3, k_m = 0.35 per h): clockwise (32 active, 8 placebo; seed 20261053)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.0010.0010.000 to 0.006
Signed area, placebo-adjusted t, two-sided0.2620.0140.235 to 0.290
NC1-phi0: Residual time pattern, phi = 0 h (32 active, 8 placebo; seed 20261054)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.1650.0120.142 to 0.190
Signed area, placebo-adjusted t, two-sided0.1050.0100.087 to 0.126
Day -1 pseudo-loop check, placebo-adjusted t, two-sided0.0920.0090.075 to 0.112
Day -1 pseudo-loop check, placebo-adjusted t, one-sided0.1450.0110.124 to 0.168
NC1-phi6: Residual time pattern, phi = 6 h (32 active, 8 placebo; seed 20261055)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.000n/a0.000 to 0.004
Signed area, placebo-adjusted t, two-sided0.6030.0150.572 to 0.633
Day -1 pseudo-loop check, placebo-adjusted t, two-sided0.5760.0160.545 to 0.607
Day -1 pseudo-loop check, placebo-adjusted t, one-sided0.000n/a0.000 to 0.004
NC1-phi12: Residual time pattern, phi = 12 h (32 active, 8 placebo; seed 20261056)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.0120.0030.006 to 0.021
Signed area, placebo-adjusted t, two-sided0.1030.0100.085 to 0.123
Day -1 pseudo-loop check, placebo-adjusted t, two-sided0.1120.0100.093 to 0.133
Day -1 pseudo-loop check, placebo-adjusted t, one-sided0.0080.0030.004 to 0.016
NC1-phi18: Residual time pattern, phi = 18 h (32 active, 8 placebo; seed 20261057)
Signed area, placebo-adjusted t, one-sided (raw ddQTcF; equals the linear-f residual area)0.7010.0150.672 to 0.729
Signed area, placebo-adjusted t, two-sided0.5570.0160.526 to 0.588
Day -1 pseudo-loop check, placebo-adjusted t, two-sided0.5640.0160.533 to 0.595
Day -1 pseudo-loop check, placebo-adjusted t, one-sided0.7080.0140.679 to 0.736

Diurnal confound and the Day -1 check

QTc has a daily rhythm. The time-matched placebo correction removes the part that active and placebo participants share: every simulated trial carries the common 4 ms rhythm above, and it never reaches ddQTcF (the tests check this to 1e-12). A time pattern the active participants do not share with the placebo group stays in ddQTcF, for example when a cohort's ECGs fall at different clock times from those of the placebo participants it is compared with. It can fake a loop or hide one, depending on where its peak falls relative to tmax. NC1 adds 3 sin(2π(t + phi)/24) ms to the active participants only, on Day 1 and Day -1, under the linear direct-effect model: the one-sided test rejects in 0.165 (MCSE 0.012) of trials at phi = 0 h, 0.701 at phi = 18 h and 0.000 at phi = 6 h (a clockwise artifact; two-sided 0.603), against 0.046 (MCSE 0.007) without it. This is why the SAP requires a time-matched placebo correction from participants studied alongside the active ones.

NC2, the Day -1 check. Pair each active participant's Day -1 time-matched QTcF (no drug, centered within the participant, minus the placebo group's centered Day -1 mean, as on Day 1) with that participant's Day 1 xj, compute the same signed area and test it the same way, two-sided. With no drug on Day -1, any loop it shows comes from timing alone. Without a residual pattern it keeps nominal size: 0.050 (MCSE 0.007). A one-sample sign-flip test of the same areas rejects in 0.360, too often for the same reason as on Day 1. It is a weak detector. It flags the pattern in 0.564 of trials at phi = 18 h, where the Day 1 one-sided test rejects in 0.701, and in 0.576 at phi = 6 h. At phi = 0 h the primary one-sided Day 1 test is inflated to 0.165 (MCSE 0.012), 3.3 times nominal, but the Day -1 check flags the pattern in only 0.092 (MCSE 0.009) of trials, so it misses most trials of that kind; at phi = 12 h it flags 0.112. A clean Day -1 check does not rule a residual time pattern out.

Residual time pattern (3 ms amplitude, active participants only) left in ddQTcF: rejection rates of the placebo-adjusted test over 1,000 replicates (MCSE at most 0.016). Noise-free area: the pattern alone against the typical participant's x.
PhaseNoise-free area, msDay 1, one-sidedDay 1, two-sidedDay -1 check, two-sided
phi = 0 h0.970.1650.1050.092
phi = 6 h-3.100.0000.6030.576
phi = 12 h-0.970.0120.1030.112
phi = 18 h3.100.7010.5570.564
No residual pattern (KA1)0.000.0460.0500.050

SAP text

"Before the C-QTc analysis, delay between concentration and ddQTcF will be assessed by the mean signed area of each participant's concentration-ddQTcF loop, computed on residuals from the prespecified direct-effect model with concentrations scaled to each participant's Cmax. Because ddQTcF subtracts the same time-matched placebo mean from every active participant, the mean area will be tested with a t-test whose standard error adds the variance from the placebo mean (from each placebo participant's signed area, about the placebo mean, against the active participants' mean scaled concentration profile), with Welch-Satterthwaite degrees of freedom; one-sided alpha set in the SAP. If each participant's ddQTcF is corrected by their own placebo period, a participant-level sign-flip test will be used instead (exact for 20 or fewer participants per dose, otherwise 9,999 random sign vectors). The tmax gap will be reported alongside, and a Day -1 pseudo-loop check will be reported. Evidence of delay leads to consideration of an effect-compartment model."

A significant result prompts an effect-compartment model (Sheiner et al. 1979) or a metabolite explanation. It does not replace the C-QTc analysis. A non-significant result in a study with a small placebo group is weak evidence of no delay (KA3, KA4).

Mock shells that report it, in the TLF libraries (pseudocode; the SAS twins are not executed, no license):

What it does not do

Provenance and credit

Established prior art, credited first.

What is new here is small: the area computed on residuals from the prespecified direct-effect model, so the check is conditional on the form the SAP already names; a test whose standard error allows for the time-matched placebo mean that every active participant's ddQTcF shares, with the exact sign-flip test kept for designs where nothing is shared; documented operating characteristics, including where the raw area fails under a curved direct effect, how much a one-sample test overstates significance with a pooled placebo, and how far the placebo group limits power; and the Day -1 confound check, with its weakness shown.

Provenance note. The framing, splitting a lag-1 cross-moment into symmetric and antisymmetric parts with a time-reversal null, follows my author draft Anticipating Network Contagions: When Directedness Outperforms Connectedness (with the editor at Applied Network Science; author draft 5 July 2026; github.com/patrickiben/directed-asymmetry-contagion).

Rerun it

Rscript cqtc_hysteresis/R/run_oc.R        # from the repository root; about 3 minutes; rewrites out/ and this page
Rscript cqtc_hysteresis/tests/test_area.R # geometry, exactness, the placebo-mean identity, known answers and the shell gates

Run with R version 4.6.0 (2026-04-24), base R plus nlme (only for the random-intercept comparison in the tests). Two consecutive runs wrote byte-identical files. The direct-effect fits estimate the participant intercepts as fixed effects (profile least squares); because a constant has no area, the intercepts never change Ai, and the tests compare the Emax result with an nlme random-intercept fit.