2011-12-15 3 views
0

피셔 정확한 검사를 400 일 이상 수행하려고합니다. Fisher Exact Test는 2x2 가능성을 제공합니다. 이 검사는 분자 마커 및 유전학 연구에 많이 사용됩니다. 그래서 많은 날짜가 필요하다면 불가능한 것이 마커 조합과 모든 가능성을 일대일로 만듭니다. R에서fisher.test using R

분석 코드 :

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

가 나는를 사용합니까 시도 :

(for i in) 

하지만 성공을 거두었하지 않았다. R을 사용하여 어떻게 자동으로 할 수 있습니까?

Tnks!

+2

(1) 철자'p.value' 아닌 'p.valeu'이기

똑같은 동작한다. (2) 두 번째 발췌 문장에서도 구문이 틀립니다. 그것을 얻으려면''에 대해'? '를보십시오. (3) 예제 데이터가 없으면 많은 것을 할 수 없습니다. 그 밖의 다른 질문을보고 어떻게 완료되었는지 확인하십시오. 감사! –

답변

1

원하는 것을 질문하는 것이 약간 어렵지만 뭔가 해독 할 수 있었다면 2X400 행렬의 열에서 2X2 행렬 조합을 만들고 싶다고 생각합니다.

그래서 79800 개의 조합이 있습니까? 나는 생각한다.

choose(400,2) = 79800 

나는 fisher.test 난에 대한 생각, j는 그래서, 나는 = j는 훨씬 이해가되지 않습니다

내가 기능을 수행하여 시작할 것

난, 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) 
} 

그런 다음 (i in 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 
} 
} 
+0

'choose (400, 2)':) –

+0

txs @ RomanLuštrik. 그냥 편집했습니다. – aatrujillob