Collection of several approaches to determine confidence intervals for the mean. Both, the classical way and bootstrap intervals are implemented for both, normal and trimmed means.

MeanCI(
  x,
  sd = NULL,
  trim = 0,
  conf.level = 0.95,
  sides = c("two.sided", "left", "right"),
  method = c("classic", "boot"),
  na.rm = FALSE,
  ...
)

Arguments

x

a (non-empty) numeric vector of data values.

sd

the standard deviation of x. If provided it's interpreted as sd of the population and the normal quantiles will be used for constructing the confidence intervals. If left to NULL (default) the sample sd(x) will be calculated and used in combination with the t-distribution.

trim

the fraction (0 to 0.5) of observations to be trimmed from each end of x before the mean is computed. Values of trim outside that range are taken as the nearest endpoint.

conf.level

confidence level of the interval.

sides

a character string specifying the side of the confidence interval, must be one of "two.sided" (default), "left" or "right". "left" would be analogue to a hypothesis of "greater" in a t.test. You can specify just the initial letter.

method

A vector of character strings representing the type of intervals required. The value should be any subset of the values "classic", "boot". See boot.ci.

na.rm

a logical value indicating whether NA values should be stripped before the computation proceeds. Defaults to FALSE.

...

further arguments are passed to the boot function. Supported arguments are type ("norm", "basic", "stud", "perc", "bca"), parallel and the number of bootstrap replicates R. If not defined those will be set to their defaults, being "basic" for type, option "boot.parallel" (and if that is not set, "no") for parallel and 999 for R.

Value

a numeric vector with 3 elements:

mean

mean

lwr.ci

lower bound of the confidence interval

upr.ci

upper bound of the confidence interval

Details

The confidence intervals for the trimmed means use winsorized variances as described in the references.

References

Wilcox, R. R., Keselman H. J. (2003) Modern robust data analysis methods: measures of central tendency Psychol Methods, 8(3):254-74

Wilcox, R. R. (2005) Introduction to robust estimation and hypothesis testing Elsevier Academic Press

Author

Andri Signorell andri@signorell.net

Examples


x <- d.pizza$price[1:20]

MeanCI(x, na.rm=TRUE)
#>     mean   lwr.ci   upr.ci 
#> 48.03037 37.16348 58.89726 
MeanCI(x, conf.level=0.99, na.rm=TRUE)
#>     mean   lwr.ci   upr.ci 
#> 48.03037 33.14181 62.91892 

MeanCI(x, sides="left")
#>   mean lwr.ci upr.ci 
#>     NA     NA    Inf 
# same as:
t.test(x, alternative="greater")
#> 
#> 	One Sample t-test
#> 
#> data:  x
#> t = 9.2858, df = 18, p-value = 0.00000001379
#> alternative hypothesis: true mean is greater than 0
#> 95 percent confidence interval:
#>  39.06103      Inf
#> sample estimates:
#> mean of x 
#>  48.03037 
#> 

MeanCI(x, sd=25, na.rm=TRUE)
#>     mean   lwr.ci   upr.ci 
#> 48.03037 36.78920 59.27153 

# the different types of bootstrap confints
MeanCI(x, method="boot", type="norm", na.rm=TRUE)
#>     mean   lwr.ci   upr.ci 
#> 48.03037 38.17212 57.94576 
MeanCI(x, trim=0.1, method="boot", type="norm", na.rm=TRUE)
#>     mean   lwr.ci   upr.ci 
#> 47.71441 37.21396 58.11883 
MeanCI(x, trim=0.1, method="boot", type="basic", na.rm=TRUE)
#>     mean   lwr.ci   upr.ci 
#> 47.71441 38.04312 57.84600 
MeanCI(x, trim=0.1, method="boot", type="stud", na.rm=TRUE)
#>     mean   lwr.ci   upr.ci 
#> 47.71441 37.83765 58.30641 
MeanCI(x, trim=0.1, method="boot", type="perc", na.rm=TRUE)
#>     mean   lwr.ci   upr.ci 
#> 47.71441 37.22735 58.51682 
MeanCI(x, trim=0.1, method="boot", type="bca", na.rm=TRUE)
#>     mean   lwr.ci   upr.ci 
#> 47.71441 36.97180 58.87290 

MeanCI(x, trim=0.1, method="boot", type="bca", R=1999, na.rm=TRUE)
#>     mean   lwr.ci   upr.ci 
#> 47.71441 37.34747 58.90979 

# Getting the MeanCI for more than 1 column
round(t(sapply(d.pizza[, 1:4], MeanCI, na.rm=TRUE)), 3)
#>              mean    lwr.ci    upr.ci
#> index     605.000   585.299   624.701
#> date    16145.260 16144.746 16145.774
#> week       11.403    11.327    11.479
#> weekday     4.441     4.325     4.556