Форум врачей-аспирантов

Здравствуйте, гость ( Вход | Регистрация )

> Доверительные интервалы полиномиального распределения
nokh
сообщение 2.04.2020 - 09:24
Сообщение #1





Группа: Пользователи
Сообщений: 1219
Регистрация: 13.01.2008
Из: Челябинск
Пользователь №: 4704



Раньше считал (вероятно не совсем корректно) ДИ для долей всегда методами для биномиального распределения. Т.е., например, в ряду абсолютных частот 4-х категорий {13, 35, 18, 7} с суммой n=73 доля первой категории f=13/73*100%=17,8%. Для неё находил 95% ДИ методом Клоппера - Пирсона или в полседнее время методом Джеффриса (байесовский априорный интервал): [10,4; 27,7].
Сейчас решил посчитать ДИ для полиномиального распределения, думал, что раз информации больше, то они Уже будут. Ничего подобного. R-пакет DescTool считает одновременные ДИ для полиномиалного распределения функцией MultinomCI.
library(DescTools)
x<-c(13,35,18,7)
MultinomCI(x)
est lwr.ci upr.ci
[1,] 0.17808219 0.06849315 0.3006248
[2,] 0.47945205 0.36986301 0.6019947
[3,] 0.24657534 0.13698630 0.3691180
[4,] 0.09589041 0.00000000 0.2184330
По умолчанию считает ДИ методом Сайсона - Глаза по SAS-овскому алгоритму. Всё хуже, чем даже биномиальный Клоппер - Писон, который ругают за консервативность. Видно, что для 7 (9,6%) нижняя граница вообще ноль. Более адекватные результаты даёт только метод Уилсона:
> MultinomCI(x, method="wilson")
est lwr.ci upr.ci
[1,] 0.17808219 0.10713373 0.2812173
[2,] 0.47945205 0.36877454 0.5921840
[3,] 0.24657534 0.16204465 0.3564445
[4,] 0.09589041 0.04722895 0.1849564

Воросы:
1) Каким способом считаете вы?
2) Хочу попробовать сделать бутстреп. Думаю так: многократно пробублировать набор 4 типов в соотношении 13 : 35 : 18 : 7 и извлекать из него с возвратом случайные выборки размером n=73; для каждогго типа потом рассчитать ДИ методом процентилей. Корректно так будет организовать?

Сообщение отредактировал nokh - 2.04.2020 - 09:25
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
 
Открыть тему
Ответов
p2004r
сообщение 2.04.2020 - 09:49
Сообщение #2





Группа: Пользователи
Сообщений: 1091
Регистрация: 26.08.2010
Пользователь №: 22699



Цитата(nokh @ 2.04.2020 - 09:24) *
Раньше считал (вероятно не совсем корректно) ДИ для долей всегда методами для биномиального распределения. Т.е., например, в ряду абсолютных частот 4-х категорий {13, 35, 18, 7} с суммой n=73 доля первой категории f=13/73*100%=17,8%. Для неё находил 95% ДИ методом Клоппера - Пирсона или в полседнее время методом Джеффриса (байесовский априорный интервал): [10,4; 27,7].
Сейчас решил посчитать ДИ для полиномиального распределения, думал, что раз информации больше, то они Уже будут. Ничего подобного. R-пакет DescTool считает одновременные ДИ для полиномиалного распределения функцией MultinomCI.
library(DescTools)
x<-c(13,35,18,7)
MultinomCI(x)
est lwr.ci upr.ci
[1,] 0.17808219 0.06849315 0.3006248
[2,] 0.47945205 0.36986301 0.6019947
[3,] 0.24657534 0.13698630 0.3691180
[4,] 0.09589041 0.00000000 0.2184330
По умолчанию считает ДИ методом Сайсона - Глаза по SAS-овскому алгоритму. Всё хуже, чем даже биномиальный Клоппер - Писон, который ругают за консервативность. Видно, что для 7 (9,6%) нижняя граница вообще ноль. Более адекватные результаты даёт только метод Уилсона:
> MultinomCI(x, method="wilson")
est lwr.ci upr.ci
[1,] 0.17808219 0.10713373 0.2812173
[2,] 0.47945205 0.36877454 0.5921840
[3,] 0.24657534 0.16204465 0.3564445
[4,] 0.09589041 0.04722895 0.1849564

Воросы:
1) Каким способом считаете вы?
2) Хочу попробовать сделать бутстреп. Думаю так: многократно пробублировать набор 4 типов в соотношении 13 : 35 : 18 : 7 и извлекать из него с возвратом случайные выборки размером n=73; для каждогго типа потом рассчитать ДИ методом процентилей. Корректно так будет организовать?


Для долей надо "восстановить" выборку в виде объектов с признаками замеренными.

После этого или 1) перемешиваем признаки (рандомизация) и получаем "доверительный интервал для 0-гипотезы".

Или 2) извлекаем "с возвращением" перевыборки и считаем в каждой нужные нам доли, следим за "сходимостью процентилей долей в накопленной выборке", как только достигнутая точность нас устраивает прекращаем.

Код
> d <- c(rep(1, 13), rep(2, 35), rep(3, 18), rep(4, 7))
> table(d)
d
1  2  3  4
13 35 18  7
> length(d)
[1] 73
> dd <- replicate(100000, table(sample(factor(d), replace=T)))
> str(dd)
int [1:4, 1:100000] 12 36 15 10 12 37 16 8 17 40 ...
- attr(*, "dimnames")=List of 2
  ..$ :8322456 [1:4] "1" "2" "3" "4"
  ..$ : NULL
> sapply(1:nrow(dd), function(i) quantile(dd[i,], probs=c(0.025,0.5,0.975)))
      [,1] [,2] [,3] [,4]
2.5%     7   27   11    3
50%     13   35   18    7
97.5%   20   43   25   12



PS

ну и конечно нарисовать все эти доверительные интервалы можно только в виде тернарных графиков (придется перегруппирование небольшое делать, что бы размерности хватило, хотя можно в виде 3д пирамиды в данном конкретном примере).

Сообщение отредактировал p2004r - 2.04.2020 - 10:06


Signature
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 

Сообщений в этой теме


Добавить ответ в эту темуОткрыть тему