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

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

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


Дух форума
*

Группа: Пользователи
Сообщений: 1115
Регистрация: 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 килобайт ) Кол-во скачиваний: 49
Прикрепленный файл  Help.pdf ( 203,41 килобайт ) Кол-во скачиваний: 51
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
p2004r
сообщение 17.05.2019 - 12:07
Сообщение #2


Дух форума
*

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



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


Единственно разумный подход это (как и написано в обзоре литературы статьи) рандомизационный тест (или он + бутстреп доверительный интервал на сами частоты, что тоже там есть). Причина -- прямой подсчет частот не дает оценки мощности исследования и размера эффекта, что делает весь этот индекс практически эквивалентным "достигнутому p".

Это все о практически полезных конструктивных результатах которые можно извлечь из этой ситуации. (Ну а статью с "индексом своего имени" конечно не запрещено написать никому smile.gif ).


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


Дух форума
*

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



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



По поводу формул (16) и (17) из статьи - да все правильно: VR3,N=3^N по ф-ле (14). Соответственно, VR2,N-x=2^(N-x). Оба этих коэффициента получены в предположении, что D=0, откуда делаем единственно возможный вывод, что применительно к нашему случаю N=A+B+C+0=A+B+C. Можете смело программировать. К слову, для рассматриваемой в качестве примера таблицы с(5,1,1,0) для J=,71428571 вычисления по формуле (17) дают p-value=.045267. При всем при том, что тест отношения правдоподобия для этой таблицы статистически не значим.

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


Дух форума
*

Группа: Пользователи
Сообщений: 1115
Регистрация: 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
Сообщение #5


Дух форума
*

Группа: Пользователи
Сообщений: 717
Регистрация: 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
Сообщение #6


Дух форума
*

Группа: Пользователи
Сообщений: 1115
Регистрация: 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
Сообщение #7


Дух форума
*

Группа: Пользователи
Сообщений: 717
Регистрация: 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 килобайт ) Кол-во скачиваний: 22
Прикрепленный файл  Жаккар.rar ( 13,59 килобайт ) Кол-во скачиваний: 23
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
nokh
сообщение 20.05.2019 - 22:06
Сообщение #8


Дух форума
*

Группа: Пользователи
Сообщений: 1115
Регистрация: 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$
сообщение 20.05.2019 - 22:16
Сообщение #9


Дух форума
*

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



Цитата(nokh @ 20.05.2019 - 22:06) *
Огромное спасибо! Теперь мои студентки смогут сами посчитать значимость в 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

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


Здорово, nokh. Не знал про choose(). Думал, что комбинаторику придется делать по старинке через факториалы. Ну, все к лучшему.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
DrgLena
сообщение 21.05.2019 - 10:16
Сообщение #10


Дух форума
*

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



Цитата(nokh @ 17.05.2019 - 00:17) *
Если интересно - могу выложить данные,

Да, интересно, но не ясно какая задача решается. Есть 400 проб (больных) и у каждого больного только два типа инфецирования? Или вы наборы инфекций у двух больных сравниваете. Т.е. просьба подробней про поставновку задачи. PAST считает много подобных индексов, в том числе и jaccard, с вашим тестовым примером сходится (0,714), но у меня старая версия, р нет.
И, большое спасибо за готовое решение в R.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
100$
сообщение 21.05.2019 - 11:33
Сообщение #11


Дух форума
*

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



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


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

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


Дух форума
*

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



Цитата(DrgLena @ 21.05.2019 - 12:16) *
Да, интересно, но не ясно какая задача решается. Есть 400 проб (больных) и у каждого больного только два типа инфецирования? Или вы наборы инфекций у двух больных сравниваете. Т.е. просьба подробней про поставновку задачи. PAST считает много подобных индексов, в том числе и jaccard, с вашим тестовым примером сходится (0,714), но у меня старая версия, р нет.
И, большое спасибо за готовое решение в R.

У каждого больного 2 и более микроорганизмов (МО), т.к. для анализа совстречаемости данные по монокультурам предварительно удаляли. Здесь решается задача именно поиска микробных ассоциаций, поскольку совместная встречаемость организмов может иметь поддающиеся интерпретации и проверке причины. Например, это может быть сходство источников поступления МО в рану, сходство по источникам питания МО, результатом лечения, когда например в результате антибиотикотерапии сначала выбывают какие-то МО, а затем собственная микрофлора сменяется на резистентные штаммы госпитальной и т.д. Т.е. всё это - микробная экология.

Я прикрепил пару наших статей по этой тематике, а также исходные данные для статьи 2013 года - можете потренироваться. Жаккар будет таким же, Рауп-Крик - близким (т.к. Монте-Карло генерируются разные наборы всякий раз), многомерный анализ - таким же в версии PAST 2.17, но несколько отличным хотя и близким в версии 3.19 (может и выше). Для статьи 2013 я использовал готовую таблицу значений Р того же автора, что сейчас формулу рассматривали (есть в списке литературы и в сети). Но таблица до N=100 (к тому же вроде там не совсем наше N), и для большой выборки её не хватило.

PS Для индексов и главных координат в PAST таблицу нужно транспонировать: Edit - Rearrange - Transpose

Сообщение отредактировал nokh - 22.05.2019 - 09:39
Прикрепленные файлы
Прикрепленный файл  Андреева__Нохрин_2013___Оценка_степени_экологической_общности_микроорганизмов.pdf ( 363,56 килобайт ) Кол-во скачиваний: 28
Прикрепленный файл  Андреева_и_др._Использование_статистических_методов_2019к.pdf ( 1,19 мегабайт ) Кол-во скачиваний: 30
Прикрепленный файл  Ассоциации_2012.xls ( 21 килобайт ) Кол-во скачиваний: 25
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
nokh
сообщение 21.05.2019 - 12:57
Сообщение #13


Дух форума
*

Группа: Пользователи
Сообщений: 1115
Регистрация: 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
Сообщение #14


Дух форума
*

Группа: Пользователи
Сообщений: 717
Регистрация: 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
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 

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