Является ли перекрытие между несколькими группами значительным? (R) - перестановка?
У меня есть шесть групп наблюдений (в формате 128_A, 16001_T и т. Д.). С использованием UpSetR
пакет в R
Я нашел конкретные перекрывающиеся наблюдения между моими 6 группами, т.е. наблюдения разделены на 2,3,4,5,6 группы или специфические для группы.
Размеры группы:
Группа1: 1565
Группа2: 379
Группа 3: 703
Группа 4: 1700
Группа 5: 1788
Группа 6: 548
Количество разных наблюдений: 3821
(теоретическое количество возможных наблюдений: 65196)
Я обнаружил, что частичное совпадение для группы 1/4/5 составляет 429. Возможно, что между этими тремя группами существуют другие наблюдения, но затем они также разделяются другими группами.
library(UpSetR)
listInput = list(
G1 = c(G1),
G2 = c(G2),
G3 = c(G3),
G4 = c(G4),
G5 = c(G5),
G6 = c(G6)
)
upset(fromList(listInput))
Теперь я хочу знать, является ли это перекрытие значительным, то есть является ли это перекрытие больше, чем можно было бы ожидать случайно.
Мои навыки для выполнения этого строго ограничены... Я привык делать t.test
или же wilcox.test
, но я не знаю, как бороться с этими непостоянными переменными. Я думаю, что мне нужно выполнить тест перестановки - это правильно? Кто-нибудь может привести меня к примеру, как выполнить этот тест? Я посмотрел на coin
пакет, но я не вижу способа выполнить это три способа, и многие из примеров, которые я могу найти при сравнении трех групп, имеют непрерывные переменные.
Я пытался использовать SuperExactTest
в R
и это работает довольно хорошо. Тем не менее, при взгляде на перекрывающиеся группы, это не делает тот же вид конкретного перекрытия групп, которое я получаю при использовании UpSetR
, который я хотел бы получить (то есть, если наблюдения найдены в перекрытии G1/2/3, они также будут учитываться в перекрывающихся группах G1 / 2 и G1/3 и G2/3).
library(SuperExactTest)
list.data = list(G1,G2,G3,G4,G5,G6)
res = supertest(list.data,n=3821)
plot(res)
Для перекрытия двух групп я выполнил fisher.test
:
data = matrix(
c(O,G1,G2,A),
nrow = 2,
dimnames = list(G2 = c("Yes","No"),
G1 = c("Yes","No"))
)
fisher.test(data)
Где O = перекрытия, специфичные для G1/G2, G1 = наблюдения, специфичные для G1, G2 = наблюдения, специфичные для G2, A = общее количество наблюдений во всех 6 группах. Но даже в этом я не уверен. Одним из требований к перекрытию является то, что оно характерно для двух групп по сравнению со всеми шестыми группами. И это здесь не учитывается, верно?
Я надеюсь, что кто-то может направить меня в правильном направлении:) (Я обучен в лаборатории влажной молекулярной биологии, а не по статистике / математике, пожалуйста, помните об этом при ответе - спасибо!)
Я могу жить с результатами SuperExactTest, но я бы очень хотел сделать это вместо этого..:)