R: Power Calculations for Two-Sample Test for Proportions

power.prop.test {stats} | R Documentation

## Power Calculations for Two-Sample Test for Proportions

### Description

Compute the power of the two-sample test for proportions, or determine parameters to obtain a target power.

### Usage

    power.prop.test(n = NULL, p1 = NULL, p2 = NULL, sig.level = 0.05,
                    power = NULL,
                    alternative = c("two.sided", "one.sided"),
                    strict = FALSE, tol = .Machine$double.eps^0.25)

### Arguments

`n` | number of observations (per group)
`p1` | probability in one group
`p2` | probability in other group
`sig.level` | significance level (Type I error probability)
`power` | power of test (1 minus Type II error probability)
`alternative` | one- or two-sided test. Can be abbreviated.
`strict` | use strict interpretation in two-sided case
`tol` | numerical tolerance used in root finding, the default providing (at least) four significant digits.

### Details

Exactly one of the parameters `n`, `p1`, `p2`, `power`, and `sig.level` must be passed as NULL, and that parameter is determined from the others. Notice that `sig.level` has a non-NULL default so `NULL` must be explicitly passed if you want it computed.

If `strict = TRUE` is used, the power will include the probability of rejection in the opposite direction of the true effect, in the two-sided case. Without this the power will be half the significance level if the true difference is zero.

Note that not all conditions can be satisfied, e.g., for

    power.prop.test(n=30, p1=0.90, p2=NULL, power=0.8, strict=TRUE)

there is no proportion `p2` between `p1 = 0.9` and 1, as you'd need a sample size of at least n = 74 to yield the desired power for (p1,p2) = (0.9, 1).

For these impossible conditions, currently a warning (`warning`) is signalled which may become an error (`stop`) in the future.

### Value

Object of class `"power.htest"`, a list of the arguments (including the computed one) augmented with `method` and `note` elements.

### Note

`uniroot` is used to solve power equation for unknowns, so you may see errors from it, notably about inability to bracket the root when invalid arguments are given. If one of `p1` and `p2` is computed, then p1 < p2 is assumed and will hold, but if you specify both, p2 <= p1 is allowed.

### Author(s)

Peter Dalgaard. Based on previous work by Claus Ekstrøm

### See Also

`prop.test`, `uniroot`

### Examples

    power.prop.test(n = 50, p1 = .50, p2 = .75)      ## => power = 0.740
    power.prop.test(p1 = .50, p2 = .75, power = .90) ## =>     n = 76.7
    power.prop.test(n = 50, p1 = .5, power = .90)    ## =>    p2 = 0.8026
    power.prop.test(n = 50, p1 = .5, p2 = 0.9, power = .90, sig.level=NULL)
                                                     ## => sig.l = 0.00131
    power.prop.test(p1 = .5, p2 = 0.501, sig.level=.001, power=0.90)
                                                     ## => n = 10451937
    try(
     power.prop.test(n=30, p1=0.90, p2=NULL, power=0.8)
    ) # a warning  (which may become an error)
    ## Reason:
    power.prop.test(      p1=0.90, p2= 1.0, power=0.8) ##-> n = 73.37

[Package stats version 3.5.1 Index]