3051 개의 유전자와 38 개의 열 (두 개의 클래스 레이블 - 27 개의 열, 하나의 레이블 : 0, 11 개의 열, 다른 레이블 : 1)이있는 데이터 프레임 (golubdf
)이 있습니다. 각 반복마다 데이터 프레임의 열을 섞어서 (클래스 레이블을 섞어서), 모든 유전자에 대해 Wilcox 테스트를 계산하고 목록에 저장된 모든 유전자에 대해 최대 테스트 통계를 계산할 수 있도록 for
루프를 500 번 반복해야합니다. :Wilcox.test in R (최대 테스트 통계)
t.test.all.genes <- function(x,s1,s2) {
x1 <- x[s1]
x2 <- x[s2]
x1 <- as.numeric(x1)
x2 <- as.numeric(x2)
t.out <- wilcox.test(x1,x2, alternative="two.sided", exact=F, correct=T)
out <- as.numeric(t.out$statistic)
return(out)
}
prs = replicate(500, apply(golubdf[ ,sample(ncol(golubdf))], 1,
t.test.all.genes, s1=labels==0, s2=labels==1))
ps.max = apply(prs, 1, max)
나는이 맞다면 확실하지 않다 - 나는 행 또는 열을 사용해야합니까? 모든 유전자에 대해 최대 테스트 통계가 필요하므로 행 (1)을 사용했습니다. 이 후에는 최대 테스트 통계 목록에서 95 % 값 테스트 통계를 가져와야합니다. 테스트 통계를 얻는 방법을 잘 모르겠습니다.
예제 데이터가 없으면 도움을 받기가 매우 어렵습니다. 데이터 제공 방법을 배우려면 [FAQ] (http://stackoverflow.com/q/5963269/1412059)를 읽으십시오. – Roland
R에서 golub 데이터를 사용하고 클래스 레이블이 동일한 데이터 (첫 번째 27 개 샘플 및 AML 중 나머지 11 개) – ser2207860
변경된 유일한 것은 모든 3051 레코드에 대한 이름을 변경 한 것입니다. (golubdf) = c (paste ("g", 1 : 3051, sep = "")) 레이블 <- golub.cl \t # 클래스 레이블 ALL = 0; AML = 1 labelgb <- factor (c (rep ("ALL", 27), rep ("AML", 11))) – ser2207860