Menu

Доверительные интервалы в R: t.test(), confint() и prop.test()

Получайте доверительные интервалы для средних, долей и коэффициентов моделей — t.test(), prop.test(), confint() — а также узнайте, что на самом деле означает «95% уверенности» и как размер выборки задаёт ширину.

На этой странице есть исполняемые редакторы: меняйте, запускайте и сразу видите результат.

Что на самом деле означает «95% уверенности»

Доверительный интервал превращает точечную оценку («выборочное среднее равно 5.61») в честный диапазон («истинное среднее правдоподобно лежит между 5.29 и 5.93»). Но фраза 95% уверенности — одна из самых неверно прочитываемых в статистике, так что разберёмся сразу.

95% описывают процедуру, а не интервал. Представьте, что вы прогоняете своё исследование снова и снова: каждый раз новая выборка, каждый раз новый интервал. Интервалы прыгали бы, и около 95% из них накрывали бы истинное значение; 5% промахивались бы. Ваш единственный реальный интервал — одна реализация этого процесса. Чего 95% не означают: «вероятность 95%, что истинное среднее находится между этими числами». Истинное среднее является фиксированным (неизвестным) числом — оно не бродит внутрь и наружу интервалов; варьируются как раз интервалы.

На практике дружелюбное прочтение вполне годится: интервал — это диапазон значений, совместимых с вашими данными. Просто знайте, какое утверждение вы вправе сделать, когда на вас надавят.

Доверительный интервал для среднего, простой путь

Каждый t.test() несёт доверительный интервал; критерий можно запустить хотя бы ради того, чтобы его собрать:

Среднее 5.61, 95-процентный интервал примерно от 5.29 до 5.93. Интервал делает то, чего не может голое среднее: он показывает, сколько точности реально покупают десять наблюдений.

Тот же интервал вручную

Формулу за этим интервалом стоит один раз собрать самому, потому что она демистифицирует любой доверительный интервал, который вам встретится: оценка ± критическое значение × стандартная ошибка.

Сверьте с выводом t.test() — тот же интервал до последней цифры. Три подвижные части:

  • Стандартная ошибка sd(x)/sqrt(n) измеряет, насколько колеблется выборочное среднее (различие sd и SE разобрано в описательных статистиках).
  • qt(0.975, df) — критическое значение t: для 95-процентного покрытия вы оставляете по 2.5% в каждом хвосте, отсюда 0.975. При df = 9 оно составляет около 2.26 — толще нормального значения 1.96, налог за малую выборку, взимаемый за оценку sd по тем же данным.
  • Предельная ошибка — их произведение, то самое «±», которое выносят в заголовки.

Смена уровня: 90%, 99% и компромисс

conf.level управляет покрытием, а вместе с ним и шириной:

Больше уверенности стоит большей ширины: 99-процентный интервал должен быть достаточно широким, чтобы оказываться прав 99 раз из 100, поэтому он растягивается; 90-процентный уже, но промахивается вдвое чаще, чем 95-процентный. Бесплатного обеда нет, есть только регулятор. 95% — чистое соглашение: умолчание, которое стоит сохранять, если нет причины его менять, а не закон природы.

Доверительный интервал для доли: prop.test()

Допустим, 47 из 120 опрошенных пользователей осваивают новую функцию. Каков правдоподобный диапазон истинной доли освоения?

Выборочная доля 0.39, 95-процентный интервал примерно от 0.30 до 0.49 — так что «около 40% освоения» честно только с этим ореолом в ±9 пунктов. prop.test() использует лучшее приближение, чем учебная формула p ± 1.96 × sqrt(p(1−p)/n) (это интервал типа Уилсона с поправкой на непрерывность), и это важнее всего вблизи 0 или 1: учебный интервал может вылезти за пределы [0, 1], а этот не может. Для очень малых количеств binom.test(47, 120)$conf.int даёт точную версию.

Интервалы для коэффициентов модели: confint()

Подогнанные модели получают интервалы через одну обобщённую функцию:

Каждая строка ограничивает один коэффициент линейной регрессии: 95-процентный интервал наклона при wt идёт примерно от −6.5 до −4.2 мили на галлон на тысячу фунтов. Это информативнее p-значения из сводки: он говорит, что эффект не просто ненулевой, а составляет минимум около 4 миль на галлон и, возможно, около 6.5.

Для логистической glm() функция confint(fit) работает так же, но возвращает границы в логарифмах шансов; проэкспоненцируйте, чтобы получить интервалы отношений шансов — exp(confint(fit)), — и помните, что опорным значением «нет эффекта» становится 1 вместо 0.

Размер выборки: закон квадратного корня

Ширина уменьшается как sqrt(n), и у этого есть запоминающееся следствие: вчетверо больше данных — вдвое уже интервал. Посмотрите на это на смоделированных данных: то же распределение, одна выборка вчетверо больше (зерно делает результат воспроизводимым; см. случайные числа):

Ширины укладываются в отношение, близкое к 2:1 (выборочный шум не даёт ему быть точным). Из-за квадратного корня точность дорожает: первые 100 наблюдений сужают интервал сильнее, чем следующие 300 вместе взятые, а сокращение вдвое уже узкого интервала всегда стоит вчетверо больше того, что вы заплатили до сих пор.

Интервал и p-значение: два взгляда на один критерий

Доверительный интервал и проверка гипотезы — это одна и та же информация в разных одеждах. 95-процентный интервал содержит ровно те значения параметра, которые двусторонний критерий на уровне 0.05 не смог бы отвергнуть. Отсюда:

  • Интервал для разности средних не содержит 0t-критерий даёт p < 0.05.
  • Интервал для отношения шансов не содержит 1 ⇔ p-значение коэффициента ниже 0.05.

Когда у вас есть интервал, обычно у вас есть и лучшая сводка: он выносит тот же вердикт о значимости плюс даёт величину эффекта в реальных единицах. «p = 0.03» говорит, что различие существует; «95% ДИ: от 0.2 до 7.6» говорит, что оно существует и может быть как ничтожным, так и огромным, — а это часто и есть тот вывод, который имеет значение.

Что вы уносите с собой

  • 95% описывают долгосрочную долю попаданий процедуры, а не вероятность того, что именно этот интервал поймал истину.
  • Среднее: t.test(x)$conf.int или вручную как среднее ± qt(0.975, n−1) × SE.
  • Доля: prop.test(x, n)$conf.int; коэффициенты модели: confint(fit) (для отношений шансов в glm экспоненцируйте).
  • Выше уверенность = шире интервал; 95% это соглашение, а не закон.
  • Ширина уменьшается как sqrt(n): вчетверо больше данных сужают интервал вдвое.
  • Интервал содержит каждое значение, которое критерий уровня 0.05 не отверг бы, — и, в отличие от p-значения, показывает величину эффекта.

Дальше: инструментарий симуляции, стоящий за всем этим, — случайные числа через rnorm, runif, sample и set.seed.

Часто задаваемые вопросы

Как вычислить 95-процентный доверительный интервал в R?

Для среднего самый быстрый путь это t.test(x)$conf.int. Для доли — prop.test(successes, trials)$conf.int. Для коэффициентов подогнанной модели lm() или glm()confint(fit). Все три по умолчанию используют 95%; измените это через conf.level = 0.90 (или 0.99).

Что на самом деле означает 95-процентный доверительный интервал?

Это утверждение о процедуре: если бы вы повторили исследование много раз и каждый раз строили интервал, около 95% таких интервалов содержали бы истинное значение. Это не «вероятность 95%, что параметр находится внутри именно этого интервала» — параметр является фиксированным числом, и любой отдельный интервал либо поймал его, либо нет.

Как вычислить доверительный интервал вручную в R?

Среднее ± критическое значение × стандартная ошибка. Для среднего: m <- mean(x); se <- sd(x)/sqrt(length(x)); m + c(-1, 1) * qt(0.975, df = length(x) - 1) * se. Вызов qt(0.975, df) даёт критическое значение t, оставляющее по 2.5% в каждом хвосте.

Как размер выборки влияет на доверительный интервал?

Ширина уменьшается как квадратный корень из n: увеличьте выборку вчетверо — и интервал сузится вдвое. Из-за этого корня последние крохи точности обходятся дорого: переход с ±2 на ±1 стоит вчетверо больше данных, а не вдвое.

Coddy programming languages illustration

Учитесь программировать с Coddy

НАЧАТЬ