The puzzle
The confidence interval of the mean \(\overline{x}\) of a sample of size \(n\) from a Normal population whose mean \(\mu\) and variance \(\sigma\) are both unknown, but related in a known way, e.g. \(\sigma^2 = \frac{\mu}{10}\), is correctly estimated as a function of the sample mean \(\overline{x}\) but not as a function of the sample standard deviation \(s\).
Yet, since \(\sigma^2 = \frac{\mu}{10}\), both \(\overline{x}\) and \(s\) are unbiased estimators for both \(\mu\) and \(\sigma^2\). Why don’t they both work work equally well for calculating confidence intervals?
Three kinds of 95% CI of the mean of a sample drawn from this population
library(dplyr)
library(ggplot2)
# Draw `n` samples of size `m` from normal
# distro of mean `mu` and variance = `mu`/10,
# return simulated ci's at the `ci` level.
# `varden` stands for "variance denominator"
# and it's there to give us the option of trying
# different relationships between the population
# mean and variance (e.g., when `varden` < 1, we
# have a distribution with variance > mean).
showCI <- function(m = 5, n = 10^3, ci = .95, mu = 12, varden = 10) {
# draw n samples of size m from population of
# known ~ N(mean = mu, variance = mu / 10):
foo <- replicate(n = n, rnorm(n = m, mean = mu, sd = sqrt(mu / varden)))
# collect the n sample means and sample
# standard deviations in a tibble of
# 2 columns and n rows
msd <- cbind(sm = apply(foo, 2, mean),
ssd = apply(foo, 2, sd)) %>%
tbl_df()
# To each sm there corresponds a lower and
# upper bound of the `ci` confidence interval
# calculated with standard normal critical values
# times standard error of the mean as a function
# of the sample mean (x_bar) and varden. The
# standard normal critical values qnorm() are
# the correct ones to use when the sample is drawn
# from a population with known variance. Since the
# sample variance is an unbiased estimator of it,
# we can use the relationship between the population
# mean and variance to estimate the standard error
# of the sample mean, instead of using the direct
# calculation of the sample standard deviation.
msd <- mutate(msd,
lower_sm = sm - qnorm(p = ci + (1 - ci) / 2) * sqrt((sm / varden) / m),
upper_sm = sm + qnorm(p = ci + (1 - ci) / 2) * sqrt((sm / varden) / m))
# Now let's instead calculate the standard error of
# the mean as a function of the sample standard deviation
# shown in the ssd column, but again pair it with the
# qnorm() critical values, because we know the population
# variance
msd <- mutate(msd,
lower_ssd = sm - qnorm(p = ci + (1 - ci) / 2) * ssd / sqrt(m),
upper_ssd = sm + qnorm(p = ci + (1 - ci) / 2) * ssd / sqrt(m))
# And what if we used the t distro critical values paired with the
# standard error of the mean calculated as above, which is what
# we would have to do if we did not know the population variance?
msd <- mutate(msd,
lower_ssdt = sm - qt(p = ci + (1 - ci) / 2, df = m - 1) * ssd / sqrt(m),
upper_ssdt = sm + qt(p = ci + (1 - ci) / 2, df = m - 1) * ssd / sqrt(m))
# So how many times is mu seen inside each of these pairs
# of `ci` bounds? Let's see:
mutate(msd,
inside_sm = mu > lower_sm & mu < upper_sm,
inside_ssd = mu > lower_ssd & mu < upper_ssd,
inside_ssdt = mu > lower_ssdt & mu < upper_ssdt)
}
m <- 5
n <- 10^3
ci <- .95
mu <- 12
varden <- 10
checks <- showCI()
If you draw 1,000 samples of size 5 from a population distributed ~N(mu = 12, sigma^2 = 1.2), the population mean \(\mu\) falls inside each sample’s own calculated CI 95% of the time when this CI is calculated as a function of \(\overline{x}\) and 87% of the time when it’s calculated as a function of \(s\).
This replicates the original puzzle. But what if in the CI formula that uses \(s\) we used t critical values, \(qt\)? Then \(\mu\) would fall inside the CI 95% of the time. This is close enough to resolve the puzzle.
It appears that when the population variance is a function of the population mean, the sample mean \(\overline{x}\) is an unbiased estimator of the population variance, so you can use N(0, 1) critical values as if you drew from a population with unknown mean but known variance. But since the sample standard deviation \(s\) is not an unbiased estimator of the population variance, if you use \(s\) instead of \(\overline{x}\) you need to switch to t(df = m - 1) critical values, as if you drew from a population of unknown variance. The rules of when to use which are mentioned here.
Does this hold across many sample sizes?
Yes. Here’s a density plot that shows that the share of cases when \(\mu\) shows up inside the 95% CI spikes on .95, as it should, when you use t critical values with the sample standard deviation.
biglist <- lapply(c(5:50), showCI)
checkthese <- sapply(biglist, function(checks) {
c(prop.table(table(checks$inside_sm))['TRUE'],
prop.table(table(checks$inside_ssd))['TRUE'],
prop.table(table(checks$inside_ssdt))['TRUE'])
})
verify <- t(checkthese) %>%
tbl_df()
names(verify) <- c('Inside CI xbar', 'Inside CI s', 'Inside CI s qt')
verify <- mutate(verify, `Sample size` = c(5:50))
verify <- tidyr::gather(verify, 'Which', 'Value', 1:3)
ggplot(data = verify, aes(x = Value, colour = Which)) +
geom_line(stat = 'density') +
ggtitle('Using t distro with sample sd solves the puzzle')

LS0tCnRpdGxlOiAiV2hlbiB0aGUgc2FtcGxlIG1lYW4gd29ya3MsIGJ1dCBzYW1wbGUgc3RhbmRhcmQgZGV2aWF0aW9uIGRvZXMgbm90IgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgojIyBUaGUgcHV6emxlCgpUaGUgY29uZmlkZW5jZSBpbnRlcnZhbCBvZiB0aGUgbWVhbiBcKFxvdmVybGluZXt4fVwpIG9mIGEgc2FtcGxlIG9mIHNpemUgXChuXCkgZnJvbSBhIE5vcm1hbCBwb3B1bGF0aW9uIHdob3NlIG1lYW4gXChcbXVcKSBhbmQgdmFyaWFuY2UgXChcc2lnbWFcKSBhcmUgYm90aCB1bmtub3duLCBidXQgcmVsYXRlZCBpbiBhIGtub3duIHdheSwgZS5nLiBcKFxzaWdtYV4yID0gXGZyYWN7XG11fXsxMH1cKSwgaXMgY29ycmVjdGx5IGVzdGltYXRlZCBhcyBhIGZ1bmN0aW9uIG9mIHRoZSBzYW1wbGUgbWVhbiBcKFxvdmVybGluZXt4fVwpIGJ1dCBub3QgYXMgYSBmdW5jdGlvbiBvZiB0aGUgc2FtcGxlIHN0YW5kYXJkIGRldmlhdGlvbiBcKHNcKS4gCgpZZXQsIHNpbmNlIFwoXHNpZ21hXjIgPSBcZnJhY3tcbXV9ezEwfVwpLCBib3RoIFwoXG92ZXJsaW5le3h9XCkgYW5kIFwoc1wpIGFyZSB1bmJpYXNlZCBlc3RpbWF0b3JzIGZvciBib3RoIFwoXG11XCkgYW5kIFwoXHNpZ21hXjJcKS4gV2h5IGRvbid0IHRoZXkgYm90aCB3b3JrIHdvcmsgZXF1YWxseSB3ZWxsIGZvciBjYWxjdWxhdGluZyBjb25maWRlbmNlIGludGVydmFscz8KCiMjIFRocmVlIGtpbmRzIG9mIDk1JSBDSSBvZiB0aGUgbWVhbiBvZiBhIHNhbXBsZSBkcmF3biBmcm9tIHRoaXMgcG9wdWxhdGlvbgoKYGBge3Igc2ltdWxhdGVDSSwgbWVzc2FnZSA9IEZBTFNFLCB3YXJuaW5nID0gRkFMU0V9CmxpYnJhcnkoZHBseXIpCmxpYnJhcnkoZ2dwbG90MikKCiMgRHJhdyBgbmAgc2FtcGxlcyBvZiBzaXplIGBtYCBmcm9tIG5vcm1hbCAKIyBkaXN0cm8gb2YgbWVhbiBgbXVgIGFuZCB2YXJpYW5jZSA9IGBtdWAvMTAsCiMgcmV0dXJuIHNpbXVsYXRlZCBjaSdzIGF0IHRoZSBgY2lgIGxldmVsLiAKIyBgdmFyZGVuYCBzdGFuZHMgZm9yICJ2YXJpYW5jZSBkZW5vbWluYXRvciIgCiMgYW5kIGl0J3MgdGhlcmUgdG8gZ2l2ZSB1cyB0aGUgb3B0aW9uIG9mIHRyeWluZyAKIyBkaWZmZXJlbnQgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHRoZSBwb3B1bGF0aW9uIAojIG1lYW4gYW5kIHZhcmlhbmNlIChlLmcuLCB3aGVuIGB2YXJkZW5gIDwgMSwgd2UgIAojIGhhdmUgYSBkaXN0cmlidXRpb24gd2l0aCB2YXJpYW5jZSA+IG1lYW4pLgpzaG93Q0kgPC0gZnVuY3Rpb24obSA9IDUsIG4gPSAxMF4zLCBjaSA9IC45NSwgbXUgPSAxMiwgdmFyZGVuID0gMTApIHsKICAgIyBkcmF3IG4gc2FtcGxlcyBvZiBzaXplIG0gZnJvbSBwb3B1bGF0aW9uIG9mICAKICAgIyBrbm93biB+IE4obWVhbiA9IG11LCB2YXJpYW5jZSA9IG11IC8gMTApOgogICBmb28gPC0gcmVwbGljYXRlKG4gPSBuLCBybm9ybShuID0gbSwgbWVhbiA9IG11LCBzZCA9IHNxcnQobXUgLyB2YXJkZW4pKSkKICAgCiAgICMgY29sbGVjdCB0aGUgbiBzYW1wbGUgbWVhbnMgYW5kIHNhbXBsZSAKICAgIyBzdGFuZGFyZCBkZXZpYXRpb25zIGluIGEgdGliYmxlIG9mIAogICAjIDIgY29sdW1ucyBhbmQgbiByb3dzCiAgIG1zZCA8LSBjYmluZChzbSA9IGFwcGx5KGZvbywgMiwgbWVhbiksIAogICAgICAgICAgICAgICAgc3NkID0gYXBwbHkoZm9vLCAyLCBzZCkpICU+JSAKICAgICAgdGJsX2RmKCkKICAgCiAgICMgVG8gZWFjaCBzbSB0aGVyZSBjb3JyZXNwb25kcyBhIGxvd2VyIGFuZCAKICAgIyB1cHBlciBib3VuZCBvZiB0aGUgYGNpYCBjb25maWRlbmNlIGludGVydmFsIAogICAjIGNhbGN1bGF0ZWQgd2l0aCBzdGFuZGFyZCBub3JtYWwgY3JpdGljYWwgdmFsdWVzCiAgICMgdGltZXMgc3RhbmRhcmQgZXJyb3Igb2YgdGhlIG1lYW4gYXMgYSBmdW5jdGlvbgogICAjIG9mIHRoZSBzYW1wbGUgbWVhbiAoeF9iYXIpIGFuZCB2YXJkZW4uIFRoZSAgCiAgICMgc3RhbmRhcmQgbm9ybWFsIGNyaXRpY2FsIHZhbHVlcyBxbm9ybSgpIGFyZSAKICAgIyB0aGUgY29ycmVjdCBvbmVzIHRvIHVzZSB3aGVuIHRoZSBzYW1wbGUgaXMgZHJhd24KICAgIyBmcm9tIGEgcG9wdWxhdGlvbiB3aXRoIGtub3duIHZhcmlhbmNlLiBTaW5jZSB0aGUgCiAgICMgc2FtcGxlIHZhcmlhbmNlIGlzIGFuIHVuYmlhc2VkIGVzdGltYXRvciBvZiBpdCwgCiAgICMgd2UgY2FuIHVzZSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIHBvcHVsYXRpb24gCiAgICMgbWVhbiBhbmQgdmFyaWFuY2UgdG8gZXN0aW1hdGUgdGhlIHN0YW5kYXJkIGVycm9yIAogICAjIG9mIHRoZSBzYW1wbGUgbWVhbiwgaW5zdGVhZCBvZiB1c2luZyB0aGUgZGlyZWN0IAogICAjIGNhbGN1bGF0aW9uIG9mIHRoZSBzYW1wbGUgc3RhbmRhcmQgZGV2aWF0aW9uLgogICBtc2QgPC0gbXV0YXRlKG1zZCwgCiAgICAgICAgICAgICAgICAgbG93ZXJfc20gPSBzbSAtIHFub3JtKHAgPSBjaSArICgxIC0gY2kpIC8gMikgKiBzcXJ0KChzbSAvIHZhcmRlbikgLyBtKSwgCiAgICAgICAgICAgICAgICAgdXBwZXJfc20gPSBzbSArIHFub3JtKHAgPSBjaSArICgxIC0gY2kpIC8gMikgKiBzcXJ0KChzbSAvIHZhcmRlbikgLyBtKSkKICAgCiAgICMgTm93IGxldCdzIGluc3RlYWQgY2FsY3VsYXRlIHRoZSBzdGFuZGFyZCBlcnJvciBvZiAKICAgIyB0aGUgbWVhbiBhcyBhIGZ1bmN0aW9uIG9mIHRoZSBzYW1wbGUgc3RhbmRhcmQgZGV2aWF0aW9uCiAgICMgc2hvd24gaW4gdGhlIHNzZCBjb2x1bW4sIGJ1dCBhZ2FpbiBwYWlyIGl0IHdpdGggdGhlIAogICAjIHFub3JtKCkgY3JpdGljYWwgdmFsdWVzLCBiZWNhdXNlIHdlIGtub3cgdGhlIHBvcHVsYXRpb24KICAgIyB2YXJpYW5jZQogICBtc2QgPC0gbXV0YXRlKG1zZCwgCiAgICAgICAgICAgICAgICAgbG93ZXJfc3NkID0gc20gLSBxbm9ybShwID0gY2kgKyAoMSAtIGNpKSAvIDIpICogc3NkIC8gc3FydChtKSwgCiAgICAgICAgICAgICAgICAgdXBwZXJfc3NkID0gc20gKyBxbm9ybShwID0gY2kgKyAoMSAtIGNpKSAvIDIpICogc3NkIC8gc3FydChtKSkKICAgCiAgICMgQW5kIHdoYXQgaWYgd2UgdXNlZCB0aGUgdCBkaXN0cm8gY3JpdGljYWwgdmFsdWVzIHBhaXJlZCB3aXRoIHRoZQogICAjIHN0YW5kYXJkIGVycm9yIG9mIHRoZSBtZWFuIGNhbGN1bGF0ZWQgYXMgYWJvdmUsIHdoaWNoIGlzIHdoYXQKICAgIyB3ZSB3b3VsZCBoYXZlIHRvIGRvIGlmIHdlIGRpZCBub3Qga25vdyB0aGUgcG9wdWxhdGlvbiB2YXJpYW5jZT8KICAgbXNkIDwtIG11dGF0ZShtc2QsIAogICAgICAgICAgICAgICAgIGxvd2VyX3NzZHQgPSBzbSAtIHF0KHAgPSBjaSArICgxIC0gY2kpIC8gMiwgZGYgPSBtIC0gMSkgKiBzc2QgLyBzcXJ0KG0pLCAKICAgICAgICAgICAgICAgICB1cHBlcl9zc2R0ID0gc20gKyBxdChwID0gY2kgKyAoMSAtIGNpKSAvIDIsIGRmID0gbSAtIDEpICogc3NkIC8gc3FydChtKSkKICAgCiAgICMgU28gaG93IG1hbnkgdGltZXMgaXMgbXUgc2VlbiBpbnNpZGUgZWFjaCBvZiB0aGVzZSBwYWlycwogICAjIG9mIGBjaWAgYm91bmRzPyBMZXQncyBzZWU6CiAgIG11dGF0ZShtc2QsIAogICAgICAgICAgaW5zaWRlX3NtID0gbXUgPiBsb3dlcl9zbSAmIG11IDwgdXBwZXJfc20sIAogICAgICAgICAgaW5zaWRlX3NzZCA9IG11ID4gbG93ZXJfc3NkICYgbXUgPCB1cHBlcl9zc2QsIAogICAgICAgICAgaW5zaWRlX3NzZHQgPSBtdSA+IGxvd2VyX3NzZHQgJiBtdSA8IHVwcGVyX3NzZHQpCn0KbSA8LSA1Cm4gPC0gMTBeMwpjaSA8LSAuOTUKbXUgPC0gMTIKdmFyZGVuIDwtIDEwCmNoZWNrcyA8LSBzaG93Q0koKQpgYGAKCklmIHlvdSBkcmF3IGByIHByZXR0eU51bShuLCBiaWcubWFyayA9ICcsJylgIHNhbXBsZXMgb2Ygc2l6ZSBgciBtYCBmcm9tIGEgcG9wdWxhdGlvbiBkaXN0cmlidXRlZCBgciBwYXN0ZSgnfk4obXUgPSAnLCBtdSwgJywgc2lnbWFeMiA9ICcsIG11L3ZhcmRlbiAsJyknLCBzZXAgPSAnJylgLCB0aGUgcG9wdWxhdGlvbiBtZWFuIFwoXG11XCkgZmFsbHMgaW5zaWRlIGVhY2ggc2FtcGxlJ3Mgb3duIGNhbGN1bGF0ZWQgQ0kgYHIgcm91bmQoMTAwICogcHJvcC50YWJsZSh0YWJsZShjaGVja3MkaW5zaWRlX3NtKSlbJ1RSVUUnXSlgJSBvZiB0aGUgdGltZSB3aGVuIHRoaXMgQ0kgaXMgY2FsY3VsYXRlZCBhcyBhIGZ1bmN0aW9uIG9mIFwoXG92ZXJsaW5le3h9XCkgYW5kIGByIHJvdW5kKDEwMCAqIHByb3AudGFibGUodGFibGUoY2hlY2tzJGluc2lkZV9zc2QpKVsnVFJVRSddKWAlIG9mIHRoZSB0aW1lIHdoZW4gaXQncyBjYWxjdWxhdGVkIGFzIGEgZnVuY3Rpb24gb2YgXChzXCkuCgpUaGlzIHJlcGxpY2F0ZXMgdGhlIG9yaWdpbmFsIHB1enpsZS4gQnV0IHdoYXQgaWYgaW4gdGhlIENJIGZvcm11bGEgdGhhdCB1c2VzIFwoc1wpIHdlIHVzZWQgdCBjcml0aWNhbCB2YWx1ZXMsIFwocXRcKT8gVGhlbiBcKFxtdVwpIHdvdWxkIGZhbGwgaW5zaWRlIHRoZSBDSSBgciByb3VuZCgxMDAgKiBwcm9wLnRhYmxlKHRhYmxlKGNoZWNrcyRpbnNpZGVfc3NkdCkpWydUUlVFJ10pYCUgb2YgdGhlIHRpbWUuIFRoaXMgaXMgY2xvc2UgZW5vdWdoIHRvIHJlc29sdmUgdGhlIHB1enpsZS4KCkl0IGFwcGVhcnMgdGhhdCB3aGVuIHRoZSBwb3B1bGF0aW9uIHZhcmlhbmNlIGlzIGEgZnVuY3Rpb24gb2YgdGhlIHBvcHVsYXRpb24gbWVhbiwgdGhlIHNhbXBsZSBtZWFuIFwoXG92ZXJsaW5le3h9XCkgaXMgYW4gdW5iaWFzZWQgZXN0aW1hdG9yIG9mIHRoZSBwb3B1bGF0aW9uIHZhcmlhbmNlLCBzbyB5b3UgY2FuIHVzZSBOKDAsIDEpIGNyaXRpY2FsIHZhbHVlcyBhcyBpZiB5b3UgZHJldyBmcm9tIGEgcG9wdWxhdGlvbiB3aXRoIHVua25vd24gbWVhbiBidXQga25vd24gdmFyaWFuY2UuIEJ1dCBzaW5jZSB0aGUgc2FtcGxlIHN0YW5kYXJkIGRldmlhdGlvbiBcKHNcKSBpcyBub3QgYW4gdW5iaWFzZWQgZXN0aW1hdG9yIG9mIHRoZSBwb3B1bGF0aW9uIHZhcmlhbmNlLCBpZiB5b3UgdXNlIFwoc1wpIGluc3RlYWQgb2YgXChcb3ZlcmxpbmV7eH1cKSB5b3UgbmVlZCB0byBzd2l0Y2ggdG8gdChkZiA9IG0gLSAxKSBjcml0aWNhbCB2YWx1ZXMsIGFzIGlmIHlvdSBkcmV3IGZyb20gYSBwb3B1bGF0aW9uIG9mIHVua25vd24gdmFyaWFuY2UuIFRoZSBydWxlcyBvZiB3aGVuIHRvIHVzZSB3aGljaCBhcmUgbWVudGlvbmVkIFtoZXJlXShodHRwOi8vd3d3LnN0YXQueWFsZS5lZHUvQ291cnNlcy8xOTk3LTk4LzEwMS9jb25maW50Lmh0bSkuCgojIyBEb2VzIHRoaXMgaG9sZCBhY3Jvc3MgbWFueSBzYW1wbGUgc2l6ZXM/CgpZZXMuIEhlcmUncyBhIGRlbnNpdHkgcGxvdCB0aGF0IHNob3dzIHRoYXQgdGhlIHNoYXJlIG9mIGNhc2VzIHdoZW4gXChcbXVcKSBzaG93cyB1cCBpbnNpZGUgdGhlIDk1JSBDSSBzcGlrZXMgb24gLjk1LCBhcyBpdCBzaG91bGQsIHdoZW4geW91IHVzZSB0IGNyaXRpY2FsIHZhbHVlcyB3aXRoIHRoZSBzYW1wbGUgc3RhbmRhcmQgZGV2aWF0aW9uLgoKYGBge3IgbXVsdGlwbGVTYW1wbGVTaXplcywgZmlnLndpZHRoID0gOCwgZmlnLmhlaWdodCA9IDZ9CmJpZ2xpc3QgPC0gbGFwcGx5KGMoNTo1MCksIHNob3dDSSkKY2hlY2t0aGVzZSA8LSBzYXBwbHkoYmlnbGlzdCwgZnVuY3Rpb24oY2hlY2tzKSB7CiAgIGMocHJvcC50YWJsZSh0YWJsZShjaGVja3MkaW5zaWRlX3NtKSlbJ1RSVUUnXSwgCiAgICAgcHJvcC50YWJsZSh0YWJsZShjaGVja3MkaW5zaWRlX3NzZCkpWydUUlVFJ10sIAogICAgIHByb3AudGFibGUodGFibGUoY2hlY2tzJGluc2lkZV9zc2R0KSlbJ1RSVUUnXSkKfSkKdmVyaWZ5IDwtIHQoY2hlY2t0aGVzZSkgJT4lIAogICB0YmxfZGYoKQpuYW1lcyh2ZXJpZnkpIDwtIGMoJ0luc2lkZSBDSSB4YmFyJywgJ0luc2lkZSBDSSBzJywgJ0luc2lkZSBDSSBzIHF0JykKdmVyaWZ5IDwtIG11dGF0ZSh2ZXJpZnksIGBTYW1wbGUgc2l6ZWAgPSBjKDU6NTApKQp2ZXJpZnkgPC0gdGlkeXI6OmdhdGhlcih2ZXJpZnksICdXaGljaCcsICdWYWx1ZScsIDE6MykKZ2dwbG90KGRhdGEgPSB2ZXJpZnksIGFlcyh4ID0gVmFsdWUsIGNvbG91ciA9IFdoaWNoKSkgKyAKICAgZ2VvbV9saW5lKHN0YXQgPSAnZGVuc2l0eScpICsgCiAgIGdndGl0bGUoJ1VzaW5nIHQgZGlzdHJvIHdpdGggc2FtcGxlIHNkIHNvbHZlcyB0aGUgcHV6emxlJykKYGBgCgo=