Forget rss() [Two-Stage / GS Designs]

Namaste Naksh,

❝ […] I agree that PE outside is not possible but it has been observed in pilot studies of mesalamine where many BLQs are observed in a subject which skewed the T/R to the extreme.

❝ 95% is a very bold to assume in HVD. but should actual T/R ratio for re-estimation of sample size? somehow it should be according to potvin method B?

Although the authors of the paper follow Potvin ‘Method B’ in principle, they introduced a futility criterion on the total sample size (default nmax = 100). That means any re-estimated total sample size >nmax will be considered a failure in stage 1 and reported as nmax. For 2×2×2 and parallel designs that’s implemented in the functions of the package Power2Stage (argument Nmax).
As in the Potvin methods a fixed GMR (not the observed one in stage 1) is used. The authors discussed that in the paper and argued against it (i.e., not going fully adaptive). Implemented in the functions of Power2Stage (argument usePE = TRUE), though its use requires a careful selection of futility criteria in order not to compromise power.

❝ This wonders me with T/R ratio of 85% as well.

power.RSABE(alpha = 0.0294, theta0 = 0.85, CV = 0.6978, n = 24, design = "2x2x4")

[1] 0.6369

That would mean the second stage should be initiated because power <0.8.

rss(n = 24, r = 2, S_WR = 0.630, params = list(sig_level=0.0294))

$rss [1] 21 rss(n = 24, r = 2, S_WR = 0.630, params = list(sig_level=0.0294, GMR=0.85)) $rss

[1] 100

❝ !!

Sure, because in the first case GMR = 0.95 is used (the function’s default). Of course a total sample size less the one in stage 1 is nonsense (read my previous post again).
In the second case nmax is reported. By chance? Increase nmax and – surprise, surprise:

suppressMessages(library(adaptIVPT)) N <- integer(100) for (j in seq_along(N)) {   N[j] <- unlist(rss(n = 24, r = 2, S_WR = 0.630,                      params = list(sig_level = 0.0294, GMR = 0.85,                                    nmax = 500)))[["rss"]] } vals <- data.frame(N = sort(unique(N)), times = NA_character_) for (j in 1:nrow(vals)) {   vals$times[j] <- sprintf("%5.0f%%", 100 * sum(N == vals$N[j]) / 100) } hist(Ns, xlab = "Total sample size", main = "", las = 1) print(vals, row.names = FALSE)   N  times  62     2%  67     1%  68     5%  71     9%  72     3%  73     2%  74     6%  75    10%  76    13%  77     3%  78     4%  79    12%  80     1%  81     3%  82     7%  83     5%  85     4%  86     2%  88     5%  89     2%  94     1%

Note the poor reproducibility (your results will be different).

Try the script of this post.

RSABE.TSD(n1 = 24, CVwR = 0.6978, GMR = 0.85, nmax = 100, final = FALSE) adjusted alpha : 0.0294 (Pocock’s for superiority) design         : 2x2x4 n1             :  24 futility on N  : 100 CVwR           : 0.6978 (observed) theta1         : 0.5700 (lower implied limit) theta2         : 1.7545 (upper implied limit) power          : 0.6369 (estimated) Stage 2 initiated (insufficent power in stage 1) GMR            : 0.8500 (fixed) target power   : 0.8000 (fixed) n2             :  54 N              :  78

However, if you really expect a T/R-ratio of 0.72, it would be both economically and ethically more than questionable to perform a study designed for 0.85. That’s a recipe for disaster!

 power.RSABE(alpha=0.0294, CV = 0.6978, theta0 = 0.72, design = "2x2x4", n = 78) [1] 0.07005

Any power ≤0.5 is a failure by definition.

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

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

23,112 posts in 4,858 threads, 1,644 registered users;
71 visitors (0 registered, 71 guests [including 9 identified bots]).
Forum time: 23:04 CEST (Europe/Vienna)

Skill is a function of chance.
It’s an intuitive best-use of chance situations.    Philip K. Dick

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