sampleN.noninf {PowerTOST} | R Documentation |
Sample size for the non-inferiority t-test
Description
Function for estimating the sample size needed to have a pre-specified power for the one-sided non-inferiority t-test for normal or log-normal distributed data.
Usage
sampleN.noninf(alpha = 0.025, targetpower = 0.8, logscale = TRUE,
margin,theta0, CV, design = "2x2", robust = FALSE,
details = FALSE, print = TRUE, imax=100)
Arguments
alpha |
Significance level (one-sided). Defaults here to 0.025. |
targetpower |
Power to achieve at least. Must be >0 and <1. |
logscale |
Should the data used on log-transformed or on original scale? |
theta0 |
‘True’ or assumed T/R ratio or difference. |
margin |
Non-inferiority margin. |
CV |
In case of In case of cross-over studies this is the within-subject CV, in case of a parallel-group design the CV of the total variability. |
design |
Character string describing the study design. |
robust |
Defaults to FALSE. With that value the usual degrees of freedom will be used. |
details |
If |
print |
If |
imax |
Maximum number of steps in sample size search. |
Details
The sample size is calculated via iterative evaluation of power.noninf()
.
Start value for the sample size search is taken from a large sample approximation.
The sample size is bound to 4 as minimum.
The estimated sample size gives always the total number of subjects (not subject/sequence in crossovers or subjects/group in parallel designs – like in some other software packages).
Notes on the underlying hypotheses
If the supplied margin is < 0 (logscale=FALSE
) or < 1 (logscale=TRUE
),
then it is assumed higher response values are better. The hypotheses are
H0: theta0 <= margin vs. H1: theta0 > margin
,
where theta0 = mean(test)-mean(reference)
if logscale=FALSE
or
H0: log(theta0) <= log(margin) vs. H1: log(theta0) > log(margin)
,
where theta0 = mean(test)/mean(reference)
if logscale=TRUE
.
If the supplied margin is > 0 (logscale=FALSE
) or > 1 (logscale=TRUE
),
then it is assumed lower response values are better. The hypotheses are
H0: theta0 >= margin vs. H1: theta0 < margin
where theta0 = mean(test)-mean(reference)
if logscale=FALSE
or
H0: log(theta0) >= log(margin) vs. H1: log(theta0) < log(margin)
where theta0 = mean(test)/mean(reference)
if logscale=TRUE
.
This latter case may also be considered as ‘non-superiority’.
Value
A data.frame with the input settings and results will be returned.
Explore it with str(sampleN.noninf(...)
Warning
The function does not vectorize properly.
If you need sample sizes with varying CVs, use f.i. for-loops or the apply-family.
Author(s)
D. Labes
References
Julious SA. Sample sizes for clinical trials with Normal data. Stat Med. 2004;23(12):1921–86. doi:10.1002/sim.1783
See Also
Examples
# using all the defaults: margin=0.8, theta0=0.95, alpha=0.025
# log-transformed, design="2x2"
sampleN.noninf(CV = 0.3)
# should give n=48
#
# 'non-superiority' case, log-transformed data
# with assumed 'true' ratio somewhat above 1
sampleN.noninf(CV = 0.3, targetpower = 0.9,
margin = 1.25, theta0 = 1.05)
# should give n=62