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

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

> Индекс сходства Жаккара., Проблемы с оценкой статистической значимости
nokh
сообщение 17.05.2019 - 00:17
Сообщение #1





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



Провели анализ микробных ассоциаций в ожоговых ранах, выборка хорошая - более 400 проб. При оценке значимости ассоциаций с помощью индекса Жаккара в R-пакете jaccard выявилась такая штука: относительно большие индексы могли оказаться незначимыми (J=0.32; Р=0,504), а почти нулевые - значимыми (J=0.06; P=0.049). Если интересно - могу выложить данные, хотя я понял почему так происходит и сделал простой маленький пример. Стал искать другие пути, но не получается справиться самостоятельно. Буду очень признателен за помощь. Описание проблемы и вопросы в прикреплённом файле Help. Второй файл - статья, на которую есть надежда. Может ещё какие варианты подскажите...

Сообщение отредактировал nokh - 17.05.2019 - 00:49
Прикрепленные файлы
Прикрепленный файл  Real_The_probabilistic_basis_of_Jaccard_s_index_1996.pdf ( 638,93 килобайт ) Кол-во скачиваний: 279
Прикрепленный файл  Help.pdf ( 203,41 килобайт ) Кол-во скачиваний: 405
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
 
Открыть тему
Ответов
nokh
сообщение 19.05.2019 - 05:55
Сообщение #2





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



Благодарю откликнувшихся!

1) <p2004r. Индекс Жаккара неэквивалентен достигнутому Р - в этом вся тонкость ситуации. Эквивалентом р является индекс Раупа-Крика: он тасует методом Монте-Карло строки второго столбца и строит распределение J для нулевой гипотезы отсутствия ассоциации с отсечением площади Р для наблюдаемого исходного значения. Индекс Раупа-Крика=1-РМонте-Карло. Поскольку ноли из ячейки D тоже участвуют в перестановках, этот индекс кардинально отличаются от J (хотя этот результат - безусловно оценка значимости ассоциации). В принципе, то что делает пакет jaccard ещё круче, т.к. в варианте exact он реализует все возможные перестановки. Тогда (1-Рexact) будет являться точной версией индекса Раупа-Крика. То, как работает exact я показал в Help и мне это не понравилось (в контексте интерпретации такого P в качестве Р для индекса Жаккара).
Бутстреп будет играться со строками выборки целиком (а не со значениями одного столбца) и т.о. полученные бутстреп-реплики J вероятно не будут подвержены влиянию ячейки D. По точке нижней границе доверительного интервала такого бутстрепированного индекса Жаккара ещё не включающего ноль можно вычислить Р. Это - хорошая идея, попробую на своих примерчиках и данных.

2) <100$. Получается, что формула рабочая, это я её неправильно читаю(( Буду разбираться и пытаться программировать, хотя скорее всего здесь у меня из R получится BASIC.

3) А что вы думаете по поводу такого подхода: удалить из набора данных строки двойных нулей (ячейка D) и считать Монте-Карло или exact только оставшиеся ячейки?

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
100$
сообщение 19.05.2019 - 14:12
Сообщение #3





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



Цитата
Буду разбираться и пытаться программировать, хотя скорее всего здесь у меня из R получится BASIC.


Вряд ли R в этой истории будет предпочтительней VBA, поскольку в Экселе ф-ция =ЧИСЛКОМБ() работает, как минимум, не хуже. Если что, могу написать вам на VBA формулу для расчета и Жаккара и p-value к нему. Так сказать, мой подарок челябинским братьям по разуму. Если что, факториалы в R - это просто factorial(число). Факториалы вам понадобятся для комбинаторных расчетов.


Цитата
А что вы думаете по поводу такого подхода: удалить из набора данных строки двойных нулей (ячейка D) и считать Монте-Карло или exact только оставшиеся ячейки?


Дума здесь на удивление проста: если есть возможность за обозримое время вычислить точное значение методом перебора всех перестановок - то предпочту ее (возможность). Тем более, что формулы (16) и (17) - ровно о том же.
И все это только потому, что в идеале для монтекарловских p-value необходимо строить еще и доверительный интервал. Это в принципе несложно, но программисту возни немного больше.

P.S. А пакет jaccard у меня не загрузился. Начал требовать наличия на компе компиляторов C/C++.
P.P.S. А как работает этот пакет - вообще не понял, ибо не нашел в описании не только рабочих формул или вменяемых описаний алгоритмов, но даже ссылок на соответствующие источники.

Сообщение отредактировал 100$ - 19.05.2019 - 14:20
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
nokh
сообщение 19.05.2019 - 22:09
Сообщение #4





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



Цитата(100$ @ 19.05.2019 - 16:12) *
Если что, могу написать вам на VBA формулу для расчета и Жаккара и p-value к нему. Так сказать, мой подарок челябинским братьям по разуму.

Будем рады такому подарку!
Цитата(100$ @ 19.05.2019 - 16:12) *
P.S. А пакет jaccard у меня не загрузился. Начал требовать наличия на компе компиляторов C/C++.
P.P.S. А как работает этот пакет - вообще не понял, ибо не нашел в описании не только рабочих формул или вменяемых описаний алгоритмов, но даже ссылок на соответствующие источники.

У меня тоже были проблемы, не помню точно что писали. Но точно не ставился требуемый пакет qvalue, т.к. он оказался не в основном репозитории, а в Bioconductor:
https://www.bioconductor.org/packages/relea...tml/qvalue.html
После его установки и обновления кучи пакетов jaccard встал. А то, что к нему сопровождение отвратительное - это да...
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
100$
сообщение 20.05.2019 - 16:51
Сообщение #5





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



Цитата(nokh @ 19.05.2019 - 22:09) *
Будем рады такому подарку!


Тогда ловите. С нашего стола вашему столу ).

Файл с поддержкой макросов в формате .xlsm. Открывать Экселем не старше 2007-го. Если настройки безопасности заблокируют макросы, то надо через центр управления безопасностью разрешить их выполнение.
Пользоваться очень просто: либо в затененном месте с пометкой "Исходная таблица сопряженности" заносите свои данные, либо для произвольной предварительно сделанной таблицы сопряженности выделяете на любом листе в рабочей книге строку о двух столбцах, вносите туда функцию "Jaccard" следующим образом: "=Jaccard()" (без кавычек) и указываете в качестве ее аргумента таблицу сопряженности 2х2. (Синтаксис можно увидеть, встав на ячейку Е10). Затем нажимаете комбинацию клавиш "Ctrl+Shift+Enter". Функция вернет массив, первым значением в котором будет индекс Жаккара, а вторым - p-value. И вся любовь.

Сообщение отредактировал 100$ - 20.05.2019 - 16:52
Прикрепленные файлы
Прикрепленный файл  Жаккар.rar ( 13,59 килобайт ) Кол-во скачиваний: 325
Прикрепленный файл  Жаккар.rar ( 13,59 килобайт ) Кол-во скачиваний: 310
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
nokh
сообщение 20.05.2019 - 22:06
Сообщение #6





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



Цитата(100$ @ 20.05.2019 - 18:51) *
Тогда ловите. С нашего стола вашему столу ).

Файл с поддержкой макросов в формате .xlsm. Открывать Экселем не старше 2007-го. Если настройки безопасности заблокируют макросы, то надо через центр управления безопасностью разрешить их выполнение.
Пользоваться очень просто: либо в затененном месте с пометкой "Исходная таблица сопряженности" заносите свои данные, либо для произвольной предварительно сделанной таблицы сопряженности выделяете на любом листе в рабочей книге строку о двух столбцах, вносите туда функцию "Jaccard" следующим образом: "=Jaccard()" (без кавычек) и указываете в качестве ее аргумента таблицу сопряженности 2х2. (Синтаксис можно увидеть, встав на ячейку Е10). Затем нажимаете комбинацию клавиш "Ctrl+Shift+Enter". Функция вернет массив, первым значением в котором будет индекс Жаккара, а вторым - p-value. И вся любовь.

Огромное спасибо! Теперь мои студентки смогут сами посчитать значимость в Excel yahoo.gif
Вставил вашу формулу в R:

Jaccard <- function (x, y)
{
C11 <- sum(x == 1 & y == 1)
A10 <- sum(x == 1 & y == 0)
B01 <- sum(x == 0 & y == 1)
N<-(C11+A10+B01)
mysum<-0
for(x in 0:(C11-1))
{
mysum<-mysum+choose(N,x)*(2^(N-x))
}
return(list(Jaccard.index=(C11/N),
"p.value"=(1-mysum/(3^N))))
}

#Пример
> a<-c(1,1,1,1,1,0,1)
> b<-c(1,1,1,1,1,1,0)
> Jaccard(a,b)
$`Jaccard.index`
[1] 0.7142857

$p.value
[1] 0.04526749

#Удвоим таблицу
> a<-c(1,1,1,1,1,0,1,1,1,1,1,1,0,1)
> b<-c(1,1,1,1,1,1,0,1,1,1,1,1,1,0)
> Jaccard(a,b)
$`Jaccard.index`
[1] 0.7142857

$p.value
[1] 0.004039541

В этом подходе всё логично: чем больше выборка, тем меньше р-значение.

Задача решена, тему можно считать закрытой.
С 95% ДИ для Жаккара и бутстреп-оценками р по ДИ повожусь когда будет больше времени.

Сообщение отредактировал nokh - 20.05.2019 - 22:15
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
100$
сообщение 21.05.2019 - 11:33
Сообщение #7





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



Цитата(nokh @ 20.05.2019 - 22:06) *
С 95% ДИ для Жаккара и бутстреп-оценками р по ДИ повожусь когда будет больше времени.


А зачем? Индекс Жаккара идейно представляет собой просто долю объектов с одновременной совстречаемостью признаков в выборке, из которой предварительно исключены объекты с их (признаков) одновременным отсутствием. Почему бы просто не рассчитать ДИ для доли: Клоппера - Пирсона, Уилсона, Агрести - Коула, арксинуса, ... вот недавно открыл для себя ДИ по Жангу - Ли?

Просто интересно.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
nokh
сообщение 21.05.2019 - 12:57
Сообщение #8





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



Цитата(100$ @ 21.05.2019 - 13:33) *
А зачем? Индекс Жаккара идейно представляет собой просто долю объектов с одновременной совстречаемостью признаков в выборке, из которой предварительно исключены объекты с их (признаков) одновременным отсутствием. Почему бы просто не рассчитать ДИ для доли: Клоппера - Пирсона, Уилсона, Агрести - Коула, арксинуса, ... вот недавно открыл для себя ДИ по Жангу - Ли?

Просто интересно.

Уже настроился с бутстрепом для Жаккара разбираться (т.к. с первого раза по аналогии с прописями не вышло), поэтому просто не догадался про ДИ для частот. Про Жанга - Ли ещё не слышал, использую в последнее время байесовский априорный интервал Джеффриса. Есть в онлайновом калькуляторе EpiTools (http://epitools.ausvet.com.au/content.php?page=CIProportion , здесь же ссылка на статью с формулами), также добавил его в экселевский калькулятор плава (Доверительный интервал для долей.xls в папке Программы к Практикуму: https://yadi.sk/d/g50i73pt3J6pAa).

Сообщение отредактировал nokh - 21.05.2019 - 12:58
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
100$
сообщение 21.05.2019 - 13:32
Сообщение #9





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



Цитата(nokh @ 21.05.2019 - 12:57) *
Уже настроился с бутстрепом для Жаккара разбираться (т.к. с первого раза по аналогии с прописями не вышло), поэтому просто не догадался про ДИ для частот. Про Жанга - Ли ещё не слышал, использую в последнее время байесовский априорный интервал Джеффриса. Есть в онлайновом калькуляторе EpiTools (http://epitools.ausvet.com.au/content.php?page=CIProportion , здесь же ссылка на статью с формулами), также добавил его в экселевский калькулятор плава (Доверительный интервал для долей.xls в папке Программы к Практикуму: https://yadi.sk/d/g50i73pt3J6pAa).


Э-х-х, про Джеффриса-то я и забыл.

Кстати, глянул на данные из Ассоциации_2012.xls и при виде кучи столбцов из нулей и единиц тотчас вспомнил про дискриминантный анализ в пространстве дихотомических переменных из статьи Гибба и Штриммера 2015 г. См. пакет {binDA} для R и сопроводиловку к нему. Там приятным для глаз бонусом идет способность метода ранжировать предикторы по важности с выдачей соответствующей гистограммки.

Сообщение отредактировал 100$ - 21.05.2019 - 13:34
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 

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


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