View source: R/SampleSize_noninf.R

sampleN.noninf | R Documentation |

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.

sampleN.noninf(alpha = 0.025, targetpower = 0.8, logscale = TRUE, margin,theta0, CV, design = "2x2", robust = FALSE, details = FALSE, print = TRUE, imax=100)

`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. |

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’.

A data.frame with the input settings and results will be returned.

Explore it with `str(sampleN.noninf(...)`

The function does not vectorize properly.

If you need sample sizes with varying CVs, use f.i. for-loops or the apply-family.

D. Labes

Julious SA. *Sample sizes for clinical trials with Normal data.* Stat Med. 2004;23(12):1921–86. doi: 10.1002/sim.1783

`known.designs`

, `power.noninf`

# 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

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.