nPV {bdpv} | R Documentation |
Asymptotic sample size calculation for inference on negative and positive predictive values in case-control designs.
Description
Functions to compute sample size (to reach a pre-specified power) and optimal allocation of true positives and true negatives in case-control designs (Steinberg et al., 2008) for binary diagnostic tests (Mercaldo et al. 2007).
Usage
nPV(se, sp, prev, NPV0, PPV0,
NPVpower = 0.8, PPVpower = 0.8,
rangeP = c(0.05, 0.95), nsteps = 20,
alpha = 0.05, setnames = NULL)
Arguments
se |
a (vector of) numeric value(s), specifying the expected sensitivity |
sp |
a (vector of) numeric value(s), specifying the expected specificity |
prev |
a (vector of) numeric value(s), specifying the prevalence |
NPV0 |
a (vector of) numeric value(s), specifying the negative predictive value to be rejected under H0: NPV>=NPV0 |
PPV0 |
a (vector of) numeric value(s), specifying the positive predictive value to be rejected under H0: PPV>=PPV0 |
NPVpower |
a (vector of) numeric value(s), the power that is to be obtained for the test H0: NPV>=NPV0 |
PPVpower |
a (vector of) numeric value(s), the power that is to be obtained for the test H0: PPV>=PV0 |
rangeP |
a vector of two numeric values, giving the range of the proportion of truely positives to be considered in experimental design |
nsteps |
a single (integer) value, the number of steps in rangeP to be considered |
alpha |
a single numeric value, the type I error of the test (1-confidence level) |
setnames |
an optional vector of names for the parameter sets |
Details
The function uses nNPVPPV
and implement the methods described in section 3.2 of Steinberg et al.(2009).
The results for NPV are the smallest integers fulfilling Eq.(3.6) and NA if necesarry conditions mentioned before are not met,
the results for PPV are the smallest integers fulfilling Eq.(3.8) and NA if necesarry conditions mentioned before are not met.
The arguments se
, sp
, prev
, NPV0
, PPV0
, NPVpower
, PPVpower
can be given as vectors or single values, where shorter values are recycled to the length of the longest. The proportion of true positives is varied over nstep
equidistant values over the range specified in argument rangeP
.
On each resulting parameter set, the asymptotic sample size formulas of Steinberg et al.(2009) are applied.
The result of those calculations may be plot using plotnPV
and plotnPV2
.
Warnings are returned by the internal function nNPV and nPPV if the validity of asymptotic formulas under binomial sampling may be doubtable, namely when the asymptotic formulas return a total sample size n for given propP, se, sp, such that min(n*propP*se, n*propP*(1-se))<5 or min(n*(1-propP)*sp, n*(1-propP)*(1-sp))<5. That is, a warning is returned if the proposed design of the case-control study (n1, n0) = (n*propP, n*(1-propP)) leads to expected counts < 5 for any cell of the 2x2 table.
Value
A list with elements
outDAT |
a data.frame showing the parameter settings (in rows) and the input parameters se, sp, prev, NPV0, PPV0, NPVpower, PPVpower, trueNPV, truePPV |
nlist |
a list with an element for each parameter setting in OUTDAT, listing the results of |
NSETS |
a single (integer), the number of parameter sets |
nsteps |
a single (integer), the number of steps in the range of proportions of true positives |
rangeP |
the input range of the proportion of true positives |
propP |
the resulting sequence of proportions of true positives considered |
Author(s)
Frank Schaarschmidt
References
Steinberg DM, Fine J, Chappell R (2009). Sample size for positive and negative predictive value in diagnostic research using case-control designs. Biostatistics 10,1, 94-105.
See Also
plotnPV
for showing the results in one graphic, and plotnPV
for showing the results in a set of subgraphics,
Examples
#Reproducing illustration in Section 3.4 and 4.2 of
#Steinberg et al. (2009)
FIG1<-nPV(se=0.8, sp=0.95, prev=1/16, NPV0=0.98, PPV0=0.4,
NPVpower = 0.8, PPVpower = 0.8,
rangeP = c(0.01, 0.99), nsteps = 100, alpha = 0.05)
FIG1
DFIG1<-as.data.frame(FIG1)
plot(x=DFIG1$propP, y=DFIG1[,2], ylim=c(0,2000), lty=1, type="l",
ylab="total sample size", xlab="proportion of true positives")
lines(x=DFIG1$propP, y=DFIG1[,3], lty=2 )