*! version 2.0.0 07nov2022

Title

power oneroc -- Power analysis for a one-sample ROC analysis

Syntax

Compute sample size

power oneroc auc0 auc1
[, power(numlist) alpha(numlist) ratio(numlist) onesided hanley graph[(graphopts)] ]

Compute power

power oneroc auc0 auc1
[, n(numlist) n1(numlist) n0(numlist) alpha(numlist) ratio(numlist) onesided hanley graph[(graphopts)] ]

where auc0 is the null (hypothesized) area under the ROC curve (AUC) and
auc1 is the alternative (target) AUC. auc0 and auc1 may each be
specified either as one number or as a list of values in parentheses
(see numlist).

* alpha(numlist) significance level; default is alpha(0.05)

* power(numlist) power; default is power(0.80)

* n(numlist) total sample size; required to compute power or effect size

* n1(numlist) sample size of the diseased group

* n0(numlist) sample size of the non-diseased group

* ratio(numlist) ratio of sample sizes, N0/N1; default is ratio(1), meaning equal group sizes

onesided one-sided test; default is two sided

hanley variance functions computed using the Hanley and McNeil (1982) method; default is to use the method by Obuchowski et al. (2004)

graph[(graphopts)] graph results; see [PSS-2] power, graph

* Specifying a list of values in at least two starred options, or
two command arguments, or at least one starred option and one argument
results in computations for all possible combinations of the values; see
numlist.

Description

power oneroc computes sample size or power for a one-sample receiver operating characteristic (ROC) analysis. Variance functions
are computed using either the method described in Obuchowski, Lieber and Wians (2004) for continuous and ordinal data assuming a binormal distibution (the default),
or the method described by Hanley and McNeil (1982) for continuous data only, which is based on the Mann-Whitney version of the rank-sum test.
power oneroc is loosely based upon the code used in the SAS® macro ROCPOWER (Zepp 1995).

Options

alpha(numlist) sets the significance level of the test. The
default is alpha(0.05).

power(numlist) specifies the desired power at which sample size is to be computed.
If power() is specified in conjunction with n(), n1(), or n0(),
then the actual power of the test is presented.

n(numlist) specifies the total number of subjects in the study to be used for determining power.

n1(numlist) specifies the number of subjects in the diseased group to be used for determining power.

n0(numlist) specifies the number of subjects in the non-diseased group to be used for determining power.

ratio(numlist) specifies the sample-size ratio of the non-diseased group relative to the diseased group,
N0/N1. The default is ratio(1), meaning equal allocation between the two groups.

onesided indicates a one-sided test. The default is two sided.

hanley uses the Hanley and McNeil (1982) method for computing the variance functions for continuous data.
The default is the method described by Obuchowski, Lieber, and Wians (2004) which is designed for use with
continuous and ordinal data assuming a binormal distribution.

graph, graph(); see [PSS-2] power, graph.

Remarks: Using power oneroc

power oneroc computes sample size or power for
a one-sample ROC analysis. All computations are performed for a two-sided
hypothesis test where, by default, the significance level is set to 0.05. You
may change the significance level by specifying the alpha() option. You
can specify the onesided option to request a one-sided test.

To compute sample size, you must specify the AUCs under
the null hypotheses (auc0 and the alternative auc1 respectively),
and the power of the test in the power() option. The default power
is set to 0.80.

To compute power, you must specify the sample size(s) in any of the n(),
n1() or n0() options, along with the AUCs under the null and
alternative hypotheses, auc0 and auc1, respectively.

By default, the computed sample size is rounded up to the next integer.

Examples

Examples: Computing sample size

Compute the sample size required to detect an AUC of 0.70 given an
AUC of 0.50 under the null hypothesis using a two-sided test and computing
variances using the Obuchowski formula; assume a 5% significance level and 80%
power (the defaults)

. power oneroc 0.50 0.70

Same as above, using a power of 90% and a one-sided test, computing variances
using the Hanley and McNeil (1982) method

. power oneroc 0.50 0.70, power(0.90) onesided hanley

Same as above, specifying a 4 to 1 ratio of non-diseased to diseased units

. power oneroc 0.50 0.70, power(0.90) onesided hanley ratio(4)

Same as above, but applying a range of AUC values under the alternative hypothesis
and setting alpha levels to 0.05 and 0.01; and graphing the results

. power oneroc 0.50 (0.60(0.05).95), power(0.90) onesided hanley ratio(4) alpha(0.01 0.05) graph

Examples: Computing power

For a total sample of 50 subjects, compute the power of a two-sided test to
detect an AUC of 0.70 given a null AUC of 0.50 and computing variances using the
Obuchowski method; assume a 5% significance level (the default)

. power oneroc 0.50 0.70, n(50)

For a diseased group of 20 subjects and a ratio of 2 non-diseased patients for each diseased subject,
compute the power of a one-sided test to detect an AUC of 0.70 given a null AUC of 0.50
at the 5% significance level

. power oneroc 0.50 0.70, n1(20) ratio(2) onesided

For a diseased group of 50 subjects and a non-diseased group of 35 subjects,
compute the power of a one-sided test to detect an AUC of 0.70 given a null AUC of 0.50
at the 1% significance level

. power oneroc 0.50 0.70, n1(50) n0(35) onesided alpha(0.01)

Compute powers for a range of alternative AUCs and total sample sizes,
graphing the results

. power oneroc 0.50 (0.70(.10)0.90), n(5(5)30) graph

Stored results

power oneroc stores the following in r():

Scalars

r(alpha) significance level

r(auc0) null AUC

r(auc1) alternative AUC

r(beta) probability of a type II error

r(delta) effect size

r(divider) 1 if divider is requested in the table, 0 otherwise

r(ratio) ratio of sample sizes, N0/N1

r(N) total sample size

r(N0) sample size of the non-diseased group

r(N1) sample size of the diseased group

r(onesided) 1 for a one-sided test, 0 otherwise

r(power) power

r(V0) variance function of the null AUC

r(V1) variance function of the alternative AUC

Macros

r(type) test

r(method) oneroc

r(columns) displayed table columns

r(labels) table column labels

r(widths) table column widths

r(formats) table column formats

Matrices

r(pss_table) table of results

References

Hanley, J.A., and B. J. McNeil. 1982. The meaning and use of the area under a receiver operating characteristic (ROC) curve. Radiology 143:29-36

Obuchowski, N.A., Lieber, M.L. and F.H. Wians Jr. 2004. ROC curves in clinical chemistry: uses, misuses, and possible solutions. Clinical chemistry 50:1118-1125.

Zepp, R.C. 1995. A SAS® macro for estimating power for ROC curves one-Sample and two-sample cases. Proceedings of the 20th SAS Users Group International Conference (Vol. 223).

Citation of power oneroc

power oneroc is not an official Stata command. It is a free contribution
to the research community, like a paper. Please cite it as such:

Linden A. (2022). POWER ONEROC: Stata module to compute power and sample size for a one-sample ROC analysis

Authors

Ariel Linden

President, Linden Consulting Group, LLC

alinden@lindenconsulting.org

Also see

Online: roc, power, power tworoc (if installed)