Based on the CRO in house data for their past experience, Range of Intra-Subject Variability of Reference Formulation (CVWR): 26.8% – 50.3% (Pass studies)

Question:
1. Usually ISCV result of the 3 way crossover or 4 way crossover, replicate study published in the PAR is CVwR or CVw?

2. Which ISCV should i consider to use for sample size calculation as our own pilot study shows promising result, however, published literature and CRO past experience shows the other way. CRO advised us to go for 4 way crossover, replicate design, with ratio 90-111%, ISCV = 35-40%

3. What would be the recommended ISCV and study design for product like this? I have to balance between passing the study and the company's budget.

Hope the expert here can give me some recommendation. Appreciated. TQ

Dr_Dan★★

2020-05-04 08:46

@ AlyssaPosting: # 21391Views: 3,703

Sample size calculation (Pilot study result vs literature)

Dear Alyssa
I guess you are talking about an oral IR formulation, right?
ISCV are not carved in stone, there will always be a certain variability. However, big differences hint on differences in study performance and/or quality of formulations. It is reasonable to assume that the ISCV in the pivotal study will be similar to the pilot study if you use the same CRO (study procedure performance), the same test formulation vs. the same (batch of) reference product and the same bioanalytical method. If costs do not matter you can of course follow the suggestion of the CRO to go for 4 way crossover, replicate design, with ratio 90-111%, ISCV = 35-40%.
I hope this helps

—
Kind regards and have a nice day
Dr_Dan

Alyssa☆

Malaysia,
2020-05-04 09:26

@ Dr_DanPosting: # 21392Views: 3,699

Sample size calculation (Pilot study result vs literature)

» It is reasonable to assume that the ISCV in the pivotal study will be similar to the pilot study if you use the same CRO (study procedure performance), the same test formulation vs. the same (batch of) reference product and the same bioanalytical method.

The CRO we used for pilot study is the same as per the one used in the published literature (sponsor mentioned the CRO name in the PAR). Therefore, the study procedure performance and bioanalytical method variability is reduced.

» If costs do not matter you can of course follow the suggestion of the CRO to go for 4 way crossover, replicate design, with ratio 90-111%, ISCV = 35-40%.

Cost is definitely a matter for us now, especially during this Covid-19 pandemic, have to spend wisely. Therefore i need some expert opinion here for my consideration.

Edit: Full quote removed. Please delete everything from the text of the original poster which is not necessary in understanding your answer; see also this post #5! [Helmut]

Helmut★★★Vienna, Austria,
2020-05-04 12:07

@ AlyssaPosting: # 21393Views: 3,680

Estimation of CVw and/or CVwR

» Usually ISCV result of the 3 way crossover or 4 way crossover, replicate study published in the PAR is CVwR or CVw?

There are no rules (it depends on what the assessor decides to include of the study report). However, since the study was a replicate design with reference-scaling, possibly it is CVwR (more important).
We can estimate the CVw with the R-package PowerTOST:

Since this does not match what is given in the PAR, it is a strong hint that the 42.6% is the CVwR.[Nonsense, not a Williams’ design! See ElMaestro’spostand thecorrection.]
If the expanded limits are given in the PAR, you can estimate the CVwR from the upper limit by the function CVwRfromU() to check. Example for 136.4%:

round(100 * CVwRfromU(136.4 / 100), 1)[1] 42.6

Although CVwT is not accessible in a partial replicate design, CVw < CVwR means that the test is less variable than the reference (since CVw is pooled from CVwR and CVwT).

I agree with Dan but want to add one point. In my experience the variability across studies (with the same clinical setup, bioanalytical method, ) tends to be more “stable” than the T/R-ratio. Hence, don’t fall into the trap of believing the nice 98.7% you observed in the pilot study. It might well have been pure chance. For HVD(P)s assuming a T/R-ratio of better than 90–111% is not a good idea (recommended by the two Lászlos* and therefore, the default in functions sampleN.scABEL() and sampleN.RSABE() of PowerTOST).

PS: Avoid sample size “calculation” if you don’t mind. Use “estimation” instead.
PPS: The partial replicate is a lousy design. If you want to have only three periods I suggest the 2×2×3 full replicate TRT|RTR instead. If you insist in the partial replicate (why?), use the function sampleN.scABEL.sdsims(). Slower than sampleN.scABEL() but more accurate. For a comparison see the vignette and scroll down to “Heterogenicity”.

Estimation of CVw and/or CVwR

the powerTOST package is excellent and I am not myself a very experienced user (yet) as I tend to rely on much less reliable code of my own making
So forgive me I am asking: I think the OP implied a partial replicate. TRR/RRT/RTR is not 3x6x3 but rather 2(trts)x3(seqs)x3(pers), is there a reason to plug in 3x6x3 in your code?

Sample sizes for the 3-period full replicate are higher than for the partial replicate. However, don’t think only about costs. The former is more informative, since you can estimate also CVwT. Not only that you learn something about your formulation, it is useful for designing other studies. Whereas expanding the limits is based on CVwR, the CI depends on the pooled variance of both treatments. In many cases CVwT < CVwR, which would give you an incentive of the sample size. Unfortunately CVwT is never given in PARs (not of regulatory concern). I recommend to perform pilot studies always in a full replicate design to obtain this information. Example:

Although the expansion remains constant, with lower CVwT you will need less subjects.

But in your case we don’t have this information and have to assume that CVwT = CVwR. I recommend to perform a power analysis (see the vignette) to assess the impact of deviations from our assumptions on power. Try:

Power analysis
CV, theta0 and number of subjects which lead to min. acceptable power of at least 0.7:
CV= 0.6668, theta0= 0.8718
n = 31 (power= 0.7059)
Now:

plot(res, pct = FALSE, ratiolabel = "T/R")

Let’s explore the panels.

If the CV will be higher than assumed, we gain power because we may expand the limits more. At ~50% power starts to drop because the upper cap of scaling and the restriction of the point estimate (within 80–125%) cuts in.
If the CV will be lower than assumed, we loose power because we may expand the limits less. At 30% and below we may not expand the limits any more but at such low CVs the study will be sufficiently powered for ABE anyway.

The T/R-ratio is the most sensitive condition. If it drops from the assumed 0.90 to 0.8718 (that’s a relative deviation of just 3.13%) power will already reach our minimum acceptable 0.70. Science is a cruel mistress.

We don’t have to worry about dropouts at all.

—Cheers,
Helmut Schütz

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

Tutorial (from the start)

» I was trying to follow your command and out in the powerTOST, however, i cant get the sample size estimation. May i know what has gone wrong?

Your results show that you did not attach the library (see Detlew’s post). However, this part of the code alone will still not work because the CV is not specified. You would get:Error in sampleN.scABEL(CV = CV, design = res$design[j], targetpower =res$target[j], :
object 'CV' not found
I assumed that you will execute the entire code of the tutorial step by step. If you want only this part and/or the power analysis at the end, start with:

library(PowerTOST)
CVwR <- 0.426
CV <- rep(CVwR, 2)

PS: R-terminology.

A package contains functions, man-pages, a DESCRIPTION-file (mandatory); data, vignettes, PDFs, … (optional).
Hence, you find Packages in the menu-bar of the R-console. IMHO, in the sub­menu it should rather state Load library… instead of Load package… because:

A library is a locally installed package.
Therefore, the command to attach it is library().

For beginners I recommend Load package…. Say, you want to work with “foo”. If “foo” is not installed yet, it will be missing in the list. If you try library(foo) in the R-console and “foo” is not installed you will get: Error in library(foo) : there is no package called ‘foo’

Tracking down error: stringsAsFactors

» » Then i continued with the following command but it appeared error: […]» Let’s try to figure it out. Execute this code:» ...» res <- data.frame(design = rep(designs, each = length(target)),» target = target, n = NA, power = NA)

This line is the casus knacktus!
The error Error in match.arg(design) : 'arg' must be NULL or a character vector
means that the design argument in the call of sampleN.scABEL() is not character.
Reason:
Before R4.0.0 the optional argument stringsAsFactors in the call of data.frame() was TRUE. Changed in R4.0.0 to FALSE.
Check this in your installation viadefault.stringsAsFactors()
If you get TRUE as answer change res <- data.frame(design = rep(designs, each = length(target)),
target = target, n = NA, power = NA,stringsAsFactors = FALSE)
and than I'm sure that it works.

PowerTOST’s functions with as.character(design)

» Don't worry. Many R users are fallen or will fall into this trap I think, amongst others me.

Count me in.

» » Shall we add a line to PowerTOST’s functions as a precaution?» » if (is.factor(design)) design <- as.character(design)» » Not a bad idea. But don't really know if this is absolutely necessary and if it pays the effort.

It’s easy for us. But you’re right: Duno how many times a user would set up a data.frame and call the design-argument in a loop.

—Cheers,
Helmut Schütz

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

All’s well that ends well.

You didn’t tick the box☐ E-mail notification if there has been a reply to this message
See also there.
However, that’s not ideal because you will miss other replies (i.e., not directly addressed to you). Consider to subscribe the thread.

» … i thought no one has reply to my query yet until i login just now.

You don’t have to login to read posts in the forum. I suggest to bookmark the Latest Posts.

» I followed your instructions and yeah...finally i could get the sample size estimation !!!! so happy!

» When i run devtools::session_info(), this is what i get: […]

Perfect!

» Thank you and Cheers~~

You are welcome!

—Cheers,
Helmut Schütz

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