なんかちがうな~
もっとすっきりかけないの?
どうしたらいいの?
そんな,プログラムが載っているWebページのアドレスを曝してください。お答えします。(^_^;)
なんかちがうな~
もっとすっきりかけないの?
どうしたらいいの?
そんな,プログラムが載っているWebページのアドレスを曝してください。お答えします。(^_^;)
2012年2月12日 (日) Multiple comparison among 4 groups using Fisher exact test
2012年2月10日 (金) Multiple comparison among 3 groups using Fisher exact test
5グループ,6グループ,... になったらまたプログラムを書くのだろうか?
同じような内容を繰り返す部分は,combn 関数を使うと簡単に書くことができる。
このやりかただと,p.x に名前を付けるためにもう一度 combn を使わなくてはならないが,それはデメリットには勘定されない。
結果を関数内で書くのはあまりお勧めではない。
必要ならば,print メソッドを書いてやるとよい。
p.fisher <- function(tab) {
nc <- ncol(tab)
p.x <- combn(nc, 2, function(x) fisher.test(tab[, x])$p.value)
names(p.x) <- combn(nc, 2, function(x) sprintf("p.fisher.%d%d", x[1], x[2]))
n.pairs <- length(p.x)
hochberg <- cbind(Crude = rev(sort(p.x)), "Hoch-Adj." = rev(sort(p.x)) * seq_along(p.x))
holm <- cbind(Crude = sort(p.x), "Holm-Adj." = sort(p.x) * rev(seq_along(p.x)))
ans <- list(hochberg = hochberg, holm = holm)
class(ans) <- "p.fisher"
return(ans)
}
print.p.fisher <- function(obj, digits = 4) {
print(round(obj$hochberg, 4))
print(round(obj$holm, 4))
}