FractalLPK
View samples Free trial run →

Compared against PKNCA and PowerTOST

What was compared, on which data, with what result, and what is not covered. This is a comparison, not a certification.

What we compare, and against what

FractaLPK computes its results with its own engine. To see whether they agree with open, well-known tools, we repeat the same calculations with them and compare number by number. There are two separate comparisons. Neither is a certification: agreeing with a package shows that both implement the same thing, not that what they implement is appropriate for a given study.

1. Non-compartmental analysis (NCA) against PKNCA

  • Reference: PKNCA 0.12.1 (CRAN) with R 4.4.2. The adjusted-R² factor is at its default (1e-4); the other PKNCA options were aligned by hand with the engine's (the full list is in the comparison report).
  • Data: R's Theoph, 12 subjects, single oral dose, unmodified except that the dose is expressed in mg.
  • Parameters compared: AUC0-t, AUC0-∞, Cmax, Tmax, λz, % AUC extrapolated and t½ (7 parameters × 12 subjects).
  • Result: all 84 comparisons (7 × 12) are within the acceptance criterion; the reference was corrected on 24 October 2026 after we found it had been tuned to the engine, and these figures are from the corrected run. The engine then adopted PKNCA's λz tie rule, so agreement on λz selection is by design, not an independent check. The largest relative difference is below 1e-12 % (5.2e-13 %, AUC0-∞); for Cmax and Tmax it is 0. The acceptance criterion (0.5 % for AUC0-t, 1 % for the rest, exact for Cmax and Tmax) has been written in the comparison script since 1 June 2026 (git commit bad96bf; the values in that commit and today's are identical, checked on 4 November 2026). The observed differences are far below it.
  • Measured on: 24 October 2026 (corrected run; the engine adopted PKNCA's λz selection rule that day).

2. Bioequivalence 2×2 analysis of variance against PowerTOST

  • Reference: PowerTOST 1.5.7 (CRAN) with R 4.4.2 (lm() and CI.BE).
  • Data: a balanced, synthetic 2×2 crossover, 12 subjects (6 per sequence), with low intra-subject variability (CV between about 1.8 % and 5.8 %).
  • Compared: for AUC0-∞, AUC0-last and Cmax: geometric mean ratio, 90 % confidence interval, difference on the log scale and its standard error, residual mean square, intra-subject CV, degrees of freedom and number of subjects (9 quantities × 3 variables = 27 comparisons, 6 of them integer counts), and the 5 ANOVA sums of squares × 3 variables (15 comparisons).
  • Result: all 27 and all 15 are within the criterion below. The largest relative difference is 7.6e-15 for the parameters and 2.3e-13 for the sums of squares. Criterion: each quantity passes if it meets an absolute or a relative tolerance (relative tolerances between 1e-5 and 5e-4; 1e-3 for the intra-subject CV; exact for degrees of freedom and number of subjects), written in the comparison script since 4 June 2026 (git commit 041ad8b; the tolerances in that commit and today's are identical, checked on 4 November 2026).
  • Measured on: 7 October 2026.

What is not covered

  • PowerTOST does not compute NCA. In this comparison both programs read the same per-subject metrics, calculated beforehand by FractaLPK; so it checks the ANOVA, not the NCA inside the bioequivalence analysis. The NCA is compared separately, against PKNCA, with different data.
  • Only the fixed-effects 2×2 ANOVA with log transformation is compared with PowerTOST. Power and sample-size calculation (the main use of PowerTOST), the TOST procedure and the bioequivalence conclusion are not compared.
  • One data set per comparison, of 12 subjects: Theoph (real, oral, single dose) and a balanced synthetic 2×2 with low CV. Not compared: unbalanced data (with sequences of different sizes the calculation takes another route, checked by our own test against independent least squares, not against PowerTOST), missing values, high variability, intravenous administration, infusion, multiple dosing or steady state.
  • λz: there is a known difference with PKNCA that Theoph does not exercise: PKNCA picks the maximum adjusted R² among all windows, including those with a non-negative slope, while FractaLPK picks only among windows with a negative slope; it matters only for non-monotonic terminal phases. The engine also applies a minimum adjusted R² of 0.90, which the PKNCA run did not apply (PKNCA offers an R² exclusion as an option, on unadjusted R²), and a minimum of 3 points after Tmax.
  • AUC method: linear-up/log-down is compared; the linear trapezoidal method is not.
  • Designs: the parallel design is not compared against PowerTOST. Replicate designs (ABEL, RSABE) have their own reference (replicateBE), which this page does not describe and which is not part of the public report.
  • Below-the-limit-of-quantification (BLQ) data and missing values: Theoph has none, so their handling is not exercised in these comparisons. The engine's default (interpolate between quantifiable values and drop the tail) differs from ICH M13A, which covers bioequivalence studies (zero, except in λz and t½).
  • Agreeing with these packages does not replace reviewing a study's protocol or analysis plan.

How to reproduce it

The scripts, pinned versions and results of both comparisons are available on request: the repository is private. Write to cperapa@fractalpk.es.

Open the NCA comparison report (PDF)

About Privacy Terms DPA Contact
Powered by FractaLPK Fractal Engine