# power.prop.test

##### Power Calculations for Two-Sample Test for Proportions

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

- Keywords
- htest

##### 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 \le p1\) is allowed.

##### See Also

##### Examples

`library(stats)`

```
# NOT RUN {
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
# }
```

*Documentation reproduced from package stats, version 3.6.0, License: Part of R 3.6.0*