Skip to contents

Haldane Confidence Interval for Difference in Proportions

Usage

ci_prop_diff_haldane(x, by, conf.level = 0.95, data = NULL)

Arguments

x

(binary/numeric/logical)
vector of a binary values, i.e. a logical vector, or numeric with values c(0, 1)

by

(string)
A character or factor vector with exactly two unique levels identifying the two groups to compare. Can also be a column name if a data frame provided in the data argument.

conf.level

(scalar numeric)
a scalar in (0,1) indicating the confidence level. Default is 0.95

data

(data.frame)
Optional data frame containing the variables specified in x and by.

Value

A list containing the following components:

n

The number of responses for each group

N

The total number in each group

estimate

The point estimate of the difference in proportions (theta*)

conf.low

Lower bound of the confidence interval

conf.high

Upper bound of the confidence interval

conf.level

The confidence level used

Details

The confidence interval is calculated by \(\theta^* \pm w\) where:

$$\theta^* = \frac{(\hat{p}_1 - \hat{p}_2) + z^2v(1-2\hat{\psi})}{1+z^2u}$$ where $$w = \frac{z}{1+z^2u}\sqrt{u\{4\hat{\psi}(1-\hat{\psi})-(\hat{p}_1 - \hat{p}_2)^2\}+2v(1-2\hat{\psi})(\hat{p}_1-\hat{p}_2) +4z^2v^2(1-2\hat{\psi})^2 }$$ $$\hat{\psi} = \frac{\hat{p}_1 + \hat{p}_2}{2}$$ $$u = \frac{1/n_1 + 1/n_2}{4}$$ $$v = \frac{1/n_1 - 1/n_2}{4}$$

Examples

responses <- expand(c(9, 3), c(10, 10))
arm <- rep(c("treat", "control"), times = c(10, 10))

# Calculate 95% confidence interval for difference in proportions
ci_prop_diff_haldane(x = responses, by = arm)
#> 
#> ── Haldane Confidence Interval ─────────────────────────────────────────────────
#> • 9/10 - 3/10
#> • Estimate: 0.503
#> • 95% Confidence Interval:
#>   (0.1777, 0.8289)