fisher.test с использованием R - PullRequest
0 голосов
/ 15 декабря 2011

Я пытаюсь провести точный тест Фишера для более чем 400 дат.Точный тест Фишера работает 2x2 возможностей.Этот тест для многих используется в молекулярных маркерах и генетических исследованиях.Итак, если мне нужно много дат, стало невозможно сделать все возможности однозначного сочетания маркеров.

Анализ кода в R:

alelo1<-data[,1]
alelo2<-data[,2]
fisher.test(alelo1,alelo2)$p.valeu

Я попытался сделать, используя:

(for i in)

Но у меня не было успеха.Как я могу сделать это автоматически, используя R ??

Tnks!

1 Ответ

1 голос
/ 15 декабря 2011

Сложно сказать из вопроса, что вы хотите, но если бы я смог что-то расшифровать, я думаю, вы хотите создать комбинации матриц 2X2 из столбцов матрицы 2X400.

Так что вы быесть 79800 комбинаций?Я думаю.

choose(400,2) = 79800

Я предполагаю, что для fisher.test i, j совпадает с j, i, и что i = j не имеет особого смысла, поэтому

я быначните с выполнения функции:

alelos = function(i,j){
alleys= matrix(c(df[,i],df[,j]),nrow=2,byrow=F)
#df is the 2X400 matrix, called data in the question
return(fisher.test(alleys)$p.value)
}

Затем попробуйте циклы с for (i в 1: 400) и какое-то время?или что-то, что делает треугольную матрицу с результатами.Например:

Я приведу пример с вектором из 10 столбцов.

То же самое должно работать для 400.

set.seed(4)
df= matrix(c(sample(1:100,10,replace=T),sample(1:100,10,replace=T)),nrow=2)


resultmatrix = matrix(0,10,10)
#or 10x9 if you prefer

for(i in 10:1){
  j=1
while(i > j){
  resultmatrix[i,j]= alelos(i,j)

j=j+1
}
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...