皆様
貴重な回答やコメント有難う御座います。Mann&Whitney U、Wilcoxon signed-rank、Fisher exact、kai square、Steel-Dwass、Steelなどが有効との事参考になります。私は確率統計はほぼ素人なのですが、一群で検定が可能なKolmogorov&Smirnovで下記の様なRスクリプトを作ってみました(Rもほぼ素人なので下記は非効率な部分が有ると思われます)。
x <- c("geneA", "geneA", "geneA", "geneB", "geneC", "geneD","geneB", "geneC", "geneD", "geneB", "geneC", "geneD", "geneE", "geneE", "geneE")
> my_function <- function (x) {
genelist <- x
unique_genelist <- unique(genelist)
for (i in 1:length(unique_genelist)) {
ks_result <- ks.test(grep(unique_genelist[i], genelist), punif, min=1, max=length(genelist))
cat(unique_genelist[i], ks_result$p.value, "\n")
}
}
> my_function(x)
geneA 0.005830904
geneB 0.7133139
geneC 0.9190152
geneD 0.7133139
geneE 0.005830904
上記の様に、一応geneA-Eでp値が出ますが、これはやはり多重検定が問題となるでしょうか。実際の遺伝子リストは遺伝子数は数百から数千、リスト長は数千から数万を想定しているので、nは充分だと思うのですが、そもそもこの様な単純な考え方で問題が無いかどうか確信が有りません。皆様の知恵を拝借したい次第です。 |
|