CVwR ~ CVwT ~ CVw? [Power / Sample Size]

posted by Helmut Homepage – Vienna, Austria, 2017-07-07 18:09 (2918 d 01:25 ago) – Posting: # 17519
Views: 8,101

Hi Mikkabel,

❝ is it relevant to estimate the within subject CV based on the MSE obtained following a classical CO study […]? I precise that it is just an estimation to have an idea if it is relevant to performed a replicate design study or not.


❝ I heard in a symposium that the CV obtained from the MSE should be a good estimator of the real within subject CV, could you confirm ? (or not ;-))


I agree with ElMaestro. If you design a replicate study based on the CVw of a 2×2×2 crossover you have to assume that CVwT = CVwR. In many cases the variabilities of T and R are “similar”. Essentially there are three possibilities:
  1. CVwT < CVwR: Since with the EMA’s methods the 90% CI is derived from the pooled CVw (the MSE from the same model as a 2×2×2) you will gain power.
  2. CVwT = CVwR: Fine, as assumed. Desired power.
  3. CVwT > CVwR: Here you will loose power, primarily because in the sample size estimation (based on CVw which is biased upwards by CVwT) you expected wider BE-limits.
It is difficult to judge whether variabilities are “different”. In the long gone ages of PBE/IBE they were considered “similar” if swT/swR was within 2332. PBE/IBE was never implemented because high sample sizes are required for a meaningful (i.e., based on a CI) comparison of variabilities. Let’s have a look into the FDA’s reference-scaling for NTIDs which contains a comparison of variabilities (additionaly to BE). At the upper cap for scaling at a CVwR ~21.42% the sample size is essentially driven by the F-test (if CVwT > CVwR). Below a comparison with conventional ABE and ABEL for swT/swR-ratios of 23, 1, and 32. In case you speak R:

library(PowerTOST)
x <- as.data.frame(matrix(NA, ncol=12, nrow=3))
names(x)  <- c("CVwR", "CVwT", "CVw", "CV.r", "s.r", "n.RSABE", "n.ABE",
               "pw.ABE", "pw.ABE.n2", "n.ABEL", "pw.ABEL", "pw.ABEL.n2")
x["s.r"]  <- c(2/3, 1, 3/2)
x["CVwR"] <- rep(se2CV(0.21179), 3)
x["CVwT"] <- se2CV(x["s.r"]*CV2se(x["CVwR"]))
x["CV.r"] <- x["CVwT"]/x["CVwR"]
x["CVw"]  <- as.numeric(mse2CV((CV2mse(x["CVwT"])+CV2mse(x["CVwR"]))/2))
for (j in 1:3) { # loops for functions which don't vectorize
  x[j, "n.RSABE"] <- sampleN.NTIDFDA(CV=c(x[j, "CVwT"], x[j, "CVwR"]),
                                     theta0=0.95, design="2x2x4",
                                     print=FALSE, details=FALSE)[["Sample size"]]
  y <- sampleN.TOST(CV=x[j, "CVw"], theta0=0.95, design="2x2x4",
                    print=FALSE, details=FALSE)
  x[j, "n.ABE"]  <- y[["Sample size"]]
  x[j, "pw.ABE"] <- y[["Achieved power"]]
  y <- sampleN.scABEL(CV=c(x[j, "CVwT"], x[j, "CVwR"]), theta0=0.95,
                      design="2x2x4", print=FALSE, details=FALSE)
  x[j, "n.ABEL"]  <- y[["Sample size"]]
  x[j, "pw.ABEL"] <- y[["Achieved power"]]
}
for (j in 1:3) { # use the sample size for CVwT = CVwR (2nd row)
  x[j, "pw.ABE.n2"]  <- power.TOST(CV=x[j, "CVw"], theta0=0.95,
                                   design="2x2x4", n=x[2, "n.ABE"])
  x[j, "pw.ABEL.n2"] <- power.scABEL(CV=c(x[j, "CVwT"], x[j, "CVwR"]),
                                     theta0=0.95, design="2x2x4",
                                     n=x[2, "n.ABEL"])
}
print(round(x, 4), row.names=FALSE)

We get:
   CVwR   CVwT    CVw   CV.r    s.r n.RSABE n.ABE pw.ABE pw.ABE.n2 n.ABEL pw.ABEL pw.ABEL.n2
 0.2142 0.1419 0.1815 0.6625 0.6667      14     8 0.8262
    0.9440      8  0.8355     0.9460
 0.2142 0.2142 0.2142 1.0000 1.0000      18    12 0.8626    0.8626     12  0.8663     0.8663
 0.2142 0.3259 0.2750 1.5214 1.5000      32    18 0.8413    0.6602     18  0.8424     0.6649

Higher sample sizes due to the comparison of variabilities. Equal sample sizes for ABE and the EMA’s ABEL since no scaling is allowed (CVwR <30%).

Now for CVwR 30%:
 CVwR   CVwT    CVw   CV.r    s.r n.RSABE n.ABE pw.ABE pw.ABE.n2 n.ABEL pw.ABEL pw.ABEL.n2
  0.3 0.1976 0.2534 0.6587 0.6667      16    14 0.8040   
0.9183     12  0.8035     0.9227
  0.3 0.3000 0.3000 1.0000 1.0000      22    20 0.8202    0.8202     18  0.8276     0.8276
  0.3 0.4626 0.3877 1.5419 1.5000      40    32 0.8181    0.5941     28  0.8052     0.6040

Same behavior of sample sizes RSABE vs. ABE. Now – due to scaling – ABEL performs better than ABE. Note also the influence of the additional knowledge of CVwT. If you assume that CVwT = CVwR (only information from a 2×2×2 crossover) you would plan with a sample size 18 for ABEL.

We could also vary both CVwR and CVwT by looking at extreme swT/swR-ratios which give still the same pooled CVw of 30%:
   CVwR   CVwT CVw   CV.r    s.r n.RSABE n.ABE pw.ABE pw.ABE.n2 n.ABEL pw.ABEL pw.ABEL.n2
 0.3560 0.2333 0.3 0.6553 0.6667      22    20 0.8202    0.8202     14  0.8172     
0.8951
 0.3000 0.3000 0.3 1.0000 1.0000      22    20 0.8202    0.8202     18  0.8276     0.8276
 0.2334 0.3560 0.3 1.5253 1.5000      32    20 0.8202    0.8202     20  0.8228     0.7815

Same pattern. This is a bad case scenario when fishing in the dark (i.e., knowing only CVw). The last column is related to the list at the beginning of the post.

In my experience only PPIs (the *prazole-family) in many cases show a higher variability of the reference due to bad gastroresistant coating. Then you will see subjects with low concentrations (which can be removed under certain conditions stated in the MR-GL, Section 6.2.3). We also have to demonstrate that the high CVwR is not caused by outliers. See the infamous (likely fabricated) reference data set I of the Q&A-document. swT∕swR 0.7647 (still within 0.667–1.500). After removal of two outliers (subjects 45, 52) we get swT∕swR 1.0881. Interesting.

Dif-tor heh smusma 🖖🏼 Довге життя Україна! [image]
Helmut Schütz
[image]

The quality of responses received is directly proportional to the quality of the question asked. 🚮
Science Quotes

Complete thread:

UA Flag
Activity
 Admin contact
23,426 posts in 4,929 threads, 1,680 registered users;
21 visitors (0 registered, 21 guests [including 9 identified bots]).
Forum time: 19:34 CEST (Europe/Vienna)

You can do one of two things; just shut up,
which is something I don’t find easy,
or learn an awful lot very fast,
which is what I tried to do.    Jane Fonda

The Bioequivalence and Bioavailability Forum is hosted by
BEBAC Ing. Helmut Schütz
HTML5