Доверительный интервал для медианы

40

Я должен найти 95% CI на медиане и других процентилях. Я не знаю, как подойти к этому. Я в основном использую R как инструмент программирования.

Доминик Комтуа
источник

Ответы:

31

Вот иллюстрация к классическому набору данных R:

> x       = faithful$waiting
> bootmed = apply(matrix(sample(x, rep=TRUE, 10^4*length(x)), nrow=10^4), 1, median)
> quantile(bootmed, c(.025, 0.975))
2.5% 97.5% 
 73.5    77 

который дает (73,5, 77) доверительный интервал на медиане.

( Примечание: исправленная версия, спасибо Джону . Я использовал в более ранней версии , что привело к путанице!)103nrow

Сиань
источник
7
Кажется подозрительно узким для меня. Использование функций из library(boot)появляется для подтверждения этого:> boot.ci (boot (x, function (x, i) медиана (x [i]), R = 1000)) Интервалы: Уровень Нормальный Базовый 95% (74.42, 78.22) (75.00 , 78,49) Процентный уровень BCa 95% (73,51, 77,00) (73,00, 77,00)
2012 г.
2
милости просим, ​​Сиань ... Кроме того, я всегда предпочитаю устанавливать исходное значение N в матрице, потому что это константа для разных размеров начальной загрузки, которые я могу сделать. Итак, я бы, как правило, сказал бы ncol = длина (х). Я считаю, что таким образом меньше шансов на ошибку.
Джон
6
Это просто неэффективный способ вычисления биномиальных квантилей, как в ответе onetop .
whuber
30

Другой подход основан на квантилях биномиального распределения.
например:

> x=faithful$waiting
> sort(x)[qbinom(c(.025,.975), length(x), 0.5)]
[1] 73 77
универсальный
источник
4
Мне нравится простота этого ... Результаты близки к методу начальной загрузки.
Доминик Комтуа
1
Это, очевидно, гораздо более эффективно, чем начальная загрузка для непрерывного случая, но одним недостатком является то, что он не учитывает связанные ранги. Вы знаете об обходном пути для этого?
ali_m
15

Проверьте бутстрап ресэмплинга. Поиск R справка для функции загрузки. В зависимости от ваших данных с передискретизацией вы можете оценить доверительные интервалы для чего угодно.

Тарен
источник
Согласен. Это лучший подход. На мой взгляд, недостаточно используется в биомедицинских науках.
pmgjones
10
Подумайте о том, чтобы рассмотреть сглаженную начальную загрузку для оценки квантилей населения, так как обычная бустрап, похоже, имеет проблемы в этом случае - ссылки можно найти в этом PDF-файле . Если вы просто интересовались теоретической медианой, можно использовать оценку Ходжеса-Лемана - как это предусмотрено, например, wilcox.test(..., conf.int=TRUE)функцией R.
Каракал
4

Есть и другие подходы: один из них основан на тесте суммы рангов Уилкоксона, примененном к одному образцу с коррекцией непрерывности. В R это может быть поставлено как:

wilcox.test(x,conf.level=0.95,alternative="two.sided",correct=TRUE)

И здесь есть CI Дэвида Олив для медианы:

CI для медианы

Germaniawerks
источник
1

Результат, основанный на подходе qbinom, не подходит для небольших выборок. Предположим, что x имеет 10 компонентов. Тогда qbinom (c (.025, .975), 10, .5) дает 2 и 8. Результирующий интервал не обрабатывает статистику порядка в нижнем хвосте симметрично статистике из верхнего хвоста; Вы должны получить либо 2 и 9, либо 3 и 8. Правильный ответ - 2 и 9. Вы можете проверить однофакторность в SAS. Поймайте здесь, вам нужно не более 0,025 вероятности ниже и выше; нижний квантиль не делает этого, так как он дает по крайней мере 0,025 в или ниже. Вы спасены снизу, потому что счетчик, который должен быть 1, должен быть сопоставлен со статистикой второго порядка, считая 0, и поэтому «выключено одним» отменяется. Эта случайная отмена не происходит сверху, и поэтому вы получаете неправильный ответ здесь. Сортировка кода (x) [qbinom (c (.025, .975), длина (x) ,. 5) + c (0,1)] почти работает, и .5 можно заменить другими значениями квантиля, чтобы получить доверительные интервалы для других квантилей, но это не будет правильно, когда существует такое, что P [X <= a ] =. 025. См., Например, Хиггинс, Непараметрическая статистика.

Джон Коласса
источник