## An R Companion for the Handbook of Biological Statistics

Salvatore S. Mangiafico

# Confidence Limits

Introduction

See the Handbook for information on this topic.

Confidence limits for measurement variables

Methods are described in the “How to calculate confidence limits” section below.

Confidence limits for nominal variables

Examples are given in the “How to calculate confidence limits” section below.

Statistical testing with confidence intervals

Similar statistics

Examples

See the Handbook for information on these topics.

### How to calculate confidence limits

The confidence limits about the mean—calculated using the t-value discussed in the Handbook—can be determined with variety of functions.  One is t.test in the native stats package.  Another is the CI function in the Rmisc package, which also has the function summarySE that presents the mean, standard deviation, standard error, and confidence interval for data designated as groups.

The bootstrap method noted in the Handbook can be achieved with the boot and boot.ci functions in the boot package.

#### Confidence intervals for mean with t.test, Rmisc, and DescTools

### --------------------------------------------------------------
### Confidence interval for measurement data, blacknose fish , p. 120
### --------------------------------------------------------------

Input =("
Stream                     Fish
Mill_Creek_1                76
Mill_Creek_2               102
North_Branch_Rock_Creek_1   12
North_Branch_Rock_Creek_2   39
Rock_Creek_1                55
Rock_Creek_2                93
Rock_Creek_3                98
Rock_Creek_4                53
Turkey_Branch              102
")

###  Use t.test to produce confidence interval

t.test(Data\$ Fish,
conf.level=0.95)         # Confidence interval of the mean

95 percent confidence interval:

45.33665 94.66335

###  Use CI in Rmisc package to produce confidence interval

library(Rmisc)

CI(Data\$ Fish,
ci=0.95)                     # Confidence interval of the mean

upper     mean    lower

94.66335 70.00000 45.33665

###  Use MeanCI in DescTools package to produce confidence interval

library(DescTools)

MeanCI(Data\$ Fish,
conf.level=0.95)         # Confidence interval of the mean

mean   lwr.ci   upr.ci

70.00000 45.33665 94.66335

#     #     #

#### Confidence intervals for means for grouped data

### --------------------------------------------------------------
### Confidence interval for grouped data, hypothetical data
### --------------------------------------------------------------

Input =("
Stream                     Animal  Count
Mill_Creek_1               Fish     76
Mill_Creek_2               Fish    102
North_Branch_Rock_Creek_1  Fish     12
North_Branch_Rock_Creek_2  Fish     39
Rock_Creek_1               Fish     55
Rock_Creek_2               Fish     93
Rock_Creek_3               Fish     98
Rock_Creek_4               Fish     53
Turkey_Branch              Fish    102

Mill_Creek_1               Insect   76
Mill_Creek_2               Insect  102
North_Branch_Rock_Creek_1  Insect   12
North_Branch_Rock_Creek_2  Insect   39
")

library(Rmisc)

summarySE(data=D2,               # Will produce confidence intervals
measurevar="Count",    #  for groups defined by a variable
groupvars="Animal",
conf.interval = 0.95)

Animal N Count       sd       se       ci

1   Fish 9 70.00 32.08582 10.69527 24.66335

2 Insect 4 57.25 39.72719 19.86360 63.21483

#     #     #

#### Confidence intervals for mean by bootstrap

### --------------------------------------------------------------
### Confidence interval for measurement data, blacknose fish , p. 120
### --------------------------------------------------------------

Input =("
Stream                     Fish
Mill_Creek_1                76
Mill_Creek_2               102
North_Branch_Rock_Creek_1   12
North_Branch_Rock_Creek_2   39
Rock_Creek_1                55
Rock_Creek_2                93
Rock_Creek_3                98
Rock_Creek_4                53
Turkey_Branch              102
")

##### Confidence intervals for mean by bootstrap with DescTools

MeanCI(Data\$Fish, method="boot", type="norm", R=10000)

mean   lwr.ci   upr.ci

70.00000 50.17986 89.84836

# May be different for different iterations

MeanCI(Data\$Fish, method="boot", type="basic", R=10000)

mean   lwr.ci   upr.ci

70.00000 51.44444 90.66667

# May be different for different iterations

##### Confidence intervals for mean by bootstrap with boot package

library(boot)

Fun = function(x, index) {
return(c(mean(x[index]),
var(x[index]) / length(index)))
}

Boot = boot(data=Data\$Fish,
statistic=Fun,
R=10000)

mean(Boot\$t[,1])

[1] 70.01229        # Mean by bootstrap

# May be different for different iterations

boot.ci(Boot,
conf=0.95)

Intervals :

Level      Normal              Basic             Studentized

95%   (50.22, 89.76 )   (51.11, 90.44 )   (38.85, 91.72 )

Level     Percentile            BCa

95%   (49.56, 88.89 )   (47.44, 87.22 )

Calculations and Intervals on Original Scale

#  Note that the bootstrapped confidence limits vary from

#   the calculated ones above because the original data set has

#   few values and is not necessarily normally distributed.

#     #     #

#### Confidence interval for proportions

The confidence interval for a proportion can be determined with the binom.test function, and more options are available in the BinomCI function and MultinomCI function in the DescTools package.  More advanced techniques for confidence intervals on proportions and differences in proportions can be found in the PropCIs package.

### --------------------------------------------------------------
### Confidence interval for nominal data, colorblind example, p. 118
### --------------------------------------------------------------

binom.test(2, 20, 0.5,
alternative="two.sided",
conf.level=0.95)

95 percent confidence interval:

0.01234853 0.31698271

#     #     #

### --------------------------------------------------------------
### Confidence interval for nominal data, Gus data, p. 121
### --------------------------------------------------------------

Input =("
Paw
right
left
right
right
right
right
left
right
right
right
")

Successes = sum(Gus\$ Paw == "left")      # Note the == operator
Failures  = sum(Gus\$ Paw == "right")

Total = Successes + Failures

Expected = 0.5

binom.test(Successes, Total, Expected,
alternative="two.sided",
conf.level=0.95)

95 percent confidence interval:

0.02521073 0.55609546

### Agrees with exact confidence interval from SAS

#     #     #

#### Confidence interval for proportions using DescTools

##### Confidence interval for single proportion

### --------------------------------------------------------------
### Confidence intervals for nominal data, colorblind example, p. 118
### --------------------------------------------------------------

library(DescTools)

BinomCI(2, 20,
conf.level = 0.95,
method = "modified wilson")

### Other methods: "wilson", "wald", "agresti-coull", "jeffreys",
###  "modified wilson", "modified jeffreys",
###  "clopper-pearson", "arcsine", "logit", "witting"

est     lwr.ci    upr.ci

[1,] 0.1 0.01776808 0.3010336

#     #     #

##### Confidence interval for multinomial proportion

### --------------------------------------------------------------
### Confidence intervals for multinomial proportions, p. 33
### --------------------------------------------------------------

observed = c(35,74,22,69)

library(DescTools)

MultinomCI(observed, conf.level=0.95, method="goodman")

### Other methods: "sisonglaz", "cplus1"

est     lwr.ci    upr.ci

[1,] 0.175 0.11253215 0.2619106

[2,] 0.370 0.28113643 0.4686407

[3,] 0.110 0.06224338 0.1870880

[4,] 0.345 0.25846198 0.4431954

#     #     #