Confidence Intervals for proportions in a small sample of unknown distribution

I'd like to calculate proportion confidence intervals for a labor economics survey of 2000 people, but the subpopulations I'm looking at are often 10 or fewer people. I'm not sure if it's appropriate to assume normality and was looking for some non-parametric way to calculate proportions.

Within the survey, I'm looking at workers who are urbanized, skilled, or self-employed. When broken down by year, it narrows to a small N by sub-population. The histograms are often heavily skewed, depending on the variables used.

So, for instance, let's say I have data (in R)

year <- c(2000, 2001, 2002)
total <- c(1000, 1000, 1000)
selfemployed <- c(4, 5, 6)
test <- data.frame(year, total, selfemployed)


And I want to estimate some form of upper and lower-bound estimates of the number of self-employed in the population, what is a good method? This is not for regression or modeling, just descriptive statistics. I saw a discussion of bootstrapping methods here but am unsure the best method. Thanks, and please let me know if I can make this question more clear.

• small samples and bootstrap are not good friends – gioxc88 Mar 20 '18 at 2:38
• I don't see what about this is unclear. – Peter Flom - Reinstate Monica Mar 20 '18 at 18:33

Since the proportions are close to the boundary of the parameter space (0 in this case), I would not trust the normal approximation. Instead, I would advocate exact confidence intervals based on the binomial distribution. Note that these intervals may be skewed and include 0.

There is actually a substantial literature on estimating binomial proportions and their CI. A good entry point is Agresti and Coull. It turns out that the exact estimates are not optimal. R offers several CI for binomial proportions in the binom package. For your data:

install.packages("binom")
library(binom)

binom.confint(4, 1000, alpha=0.05,
method= "all",
include.x=FALSE, include.n=FALSE, return.df=FALSE)


shows a wide variety of confidence intervals. (And similar for 5 and 6).