Confidence interval for binomial data in R?

40,241

Solution 1

You can also use prop.test from package stats, or binom.test

prop.test(x, n, conf.level=0.95, correct = FALSE)

        1-sample proportions test without continuity correction

data:  x out of n, null probability 0.5
X-squared = 1.6, df = 1, p-value = 0.2059
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
 0.4890177 0.5508292
sample estimates:
   p 
0.52 

You may find interesting this article, where in Table 1 on page 861 are given different confidence intervals, for a single proportion, calculated using seven methods (for selected combinations of n and r). Using prop.test you can get the results found in rows 3 and 4 of the table, while binom.test returns what you see in row 5.

Solution 2

In this case, you have binomial distribution, so you will be calculating binomial proportion confidence interval.

In R, you can use binconf() from package Hmisc

> binconf(x=520, n=1000)
 PointEst     Lower     Upper
     0.52 0.4890177 0.5508292

Or you can calculate it yourself:

> p <- 520/1000
> p + c(-qnorm(0.975),qnorm(0.975))*sqrt((1/1000)*p*(1-p))
[1] 0.4890345 0.5509655

Solution 3

Alternatively, use function propCI from the prevalence package, to get the five most commonly used binomial confidence intervals:

> library(prevalence)
> propCI(x = 520, n = 1000)
    x    n    p        method level     lower     upper
1 520 1000 0.52 agresti.coull  0.95 0.4890176 0.5508293
2 520 1000 0.52         exact  0.95 0.4885149 0.5513671
3 520 1000 0.52      jeffreys  0.95 0.4890147 0.5508698
4 520 1000 0.52          wald  0.95 0.4890351 0.5509649
5 520 1000 0.52        wilson  0.95 0.4890177 0.5508292

Solution 4

Another package: tolerance will calculate confidence / tolerance ranges for a ton of typical distribution functions.

Share:
40,241

Related videos on Youtube

Pig
Author by

Pig

thug

Updated on July 09, 2022

Comments

  • Pig
    Pig almost 2 years

    I know that I need mean and s.d to find the interval, however, what if the question is:

    For a survey of 1,000 randomly chosen workers, 520 of them are female. Create a 95% confidence interval for the proportion of workers who are female based on the survey.

    How do I find mean and s.d for that?

  • thelatemail
    thelatemail about 10 years
    You could replace your 1.96's with qnorm(0.975)
  • thelatemail
    thelatemail about 10 years
    Nice answer, and it doesn't require any external packages.
  • Alexander
    Alexander over 8 years
    @thelatemail This is probably a dumb question, but how do you take that 95% CI and turn it into a SE and then an SD?
  • cmo
    cmo about 5 years
    wow, that package tolerance is comprehensive & thorough. outstanding recommendation!
  • DeMelkbroer
    DeMelkbroer over 4 years
    What would q-norm be is you use 99% confidence interval?
  • Zbynek
    Zbynek over 4 years
    qnorm(0.99) is 2.326348
  • crow16384
    crow16384 almost 3 years
    prop.test gives very strange results. If you compare it with SAS. I would prefer to use binconf from Hmisc package (see @Zbynek answer) with known method for CI calculation.