Индекс сходства Жаккара., Проблемы с оценкой статистической значимости |
Здравствуйте, гость ( Вход | Регистрация )
Индекс сходства Жаккара., Проблемы с оценкой статистической значимости |
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 |
|
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 только оставшиеся ячейки? |
|
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 |
|
19.05.2019 - 22:09
Сообщение
#4
|
|
Группа: Пользователи Сообщений: 1202 Регистрация: 13.01.2008 Из: Челябинск Пользователь №: 4704 |
Если что, могу написать вам на VBA формулу для расчета и Жаккара и p-value к нему. Так сказать, мой подарок челябинским братьям по разуму. Будем рады такому подарку! P.S. А пакет jaccard у меня не загрузился. Начал требовать наличия на компе компиляторов C/C++. P.P.S. А как работает этот пакет - вообще не понял, ибо не нашел в описании не только рабочих формул или вменяемых описаний алгоритмов, но даже ссылок на соответствующие источники. У меня тоже были проблемы, не помню точно что писали. Но точно не ставился требуемый пакет qvalue, т.к. он оказался не в основном репозитории, а в Bioconductor: https://www.bioconductor.org/packages/relea...tml/qvalue.html После его установки и обновления кучи пакетов jaccard встал. А то, что к нему сопровождение отвратительное - это да... |
|
20.05.2019 - 16:51
Сообщение
#5
|
|
Группа: Пользователи Сообщений: 902 Регистрация: 23.08.2010 Пользователь №: 22694 |
Будем рады такому подарку! Тогда ловите. С нашего стола вашему столу ). Файл с поддержкой макросов в формате .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 |
|
20.05.2019 - 22:06
Сообщение
#6
|
|
Группа: Пользователи Сообщений: 1202 Регистрация: 13.01.2008 Из: Челябинск Пользователь №: 4704 |
Тогда ловите. С нашего стола вашему столу ). Файл с поддержкой макросов в формате .xlsm. Открывать Экселем не старше 2007-го. Если настройки безопасности заблокируют макросы, то надо через центр управления безопасностью разрешить их выполнение. Пользоваться очень просто: либо в затененном месте с пометкой "Исходная таблица сопряженности" заносите свои данные, либо для произвольной предварительно сделанной таблицы сопряженности выделяете на любом листе в рабочей книге строку о двух столбцах, вносите туда функцию "Jaccard" следующим образом: "=Jaccard()" (без кавычек) и указываете в качестве ее аргумента таблицу сопряженности 2х2. (Синтаксис можно увидеть, встав на ячейку Е10). Затем нажимаете комбинацию клавиш "Ctrl+Shift+Enter". Функция вернет массив, первым значением в котором будет индекс Жаккара, а вторым - p-value. И вся любовь. Огромное спасибо! Теперь мои студентки смогут сами посчитать значимость в Excel Вставил вашу формулу в 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 |
|
21.05.2019 - 11:33
Сообщение
#7
|
|
Группа: Пользователи Сообщений: 902 Регистрация: 23.08.2010 Пользователь №: 22694 |
С 95% ДИ для Жаккара и бутстреп-оценками р по ДИ повожусь когда будет больше времени. А зачем? Индекс Жаккара идейно представляет собой просто долю объектов с одновременной совстречаемостью признаков в выборке, из которой предварительно исключены объекты с их (признаков) одновременным отсутствием. Почему бы просто не рассчитать ДИ для доли: Клоппера - Пирсона, Уилсона, Агрести - Коула, арксинуса, ... вот недавно открыл для себя ДИ по Жангу - Ли? Просто интересно. |
|
21.05.2019 - 12:57
Сообщение
#8
|
|
Группа: Пользователи Сообщений: 1202 Регистрация: 13.01.2008 Из: Челябинск Пользователь №: 4704 |
А зачем? Индекс Жаккара идейно представляет собой просто долю объектов с одновременной совстречаемостью признаков в выборке, из которой предварительно исключены объекты с их (признаков) одновременным отсутствием. Почему бы просто не рассчитать ДИ для доли: Клоппера - Пирсона, Уилсона, Агрести - Коула, арксинуса, ... вот недавно открыл для себя ДИ по Жангу - Ли? Просто интересно. Уже настроился с бутстрепом для Жаккара разбираться (т.к. с первого раза по аналогии с прописями не вышло), поэтому просто не догадался про ДИ для частот. Про Жанга - Ли ещё не слышал, использую в последнее время байесовский априорный интервал Джеффриса. Есть в онлайновом калькуляторе EpiTools (http://epitools.ausvet.com.au/content.php?page=CIProportion , здесь же ссылка на статью с формулами), также добавил его в экселевский калькулятор плава (Доверительный интервал для долей.xls в папке Программы к Практикуму: https://yadi.sk/d/g50i73pt3J6pAa). Сообщение отредактировал nokh - 21.05.2019 - 12:58 |
|
21.05.2019 - 13:32
Сообщение
#9
|
|
Группа: Пользователи Сообщений: 902 Регистрация: 23.08.2010 Пользователь №: 22694 |
Уже настроился с бутстрепом для Жаккара разбираться (т.к. с первого раза по аналогии с прописями не вышло), поэтому просто не догадался про ДИ для частот. Про Жанга - Ли ещё не слышал, использую в последнее время байесовский априорный интервал Джеффриса. Есть в онлайновом калькуляторе 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 |
|