これは、私が以前に尋ねた質問に触発された質問です: t.tests に tapply/dapply などを使用する
次のようなインターラボ研究からのデータフレームがありますhttp://pastebin.com/AD57AYD1
基本的に lab=実験室、mat=素材、fab=強度、thick=厚さ
材料の種類ごとに各ラボを比較する t.test データが必要です。つまり、mat=v の場合、t.test を実行してラボ B とラボ S を比較したいと考えています。材料 c、n、l についても同様です。
私の以前の質問は、plyr を使用して、これらの組み合わせごとに t.tests を実行できるようにすることについてでした。ただし、複数の比較を検討する問題があると指摘されました。
私は自分のデータで paired.t.test 関数を使用しようとしましたが、あまりにも多くの比較を行いました (つまり、ラボ B のニトリルとラボ S のビニルの t 検定を行いましたが、これは無関係です。私は次のように呼びました:
pairwise.t.test(interlab$fab,interaction(interlab$mat,interlab$lab),paired=FALSE, pool.sd=FALSE)
そしてそれは私にくれました
> pairwise.t.test(interlab$fab,interaction(interlab$mat,interlab$lab),paired=FALSE, pool.sd=FALSE)
Pairwise comparisons using t tests with non-pooled SD
data: interlab$fab and interaction(interlab$mat, interlab$lab)
c.B l.B n.B v.B c.S l.S n.S
l.B 0.54484 - - - - - -
n.B 3.8e-07 1.9e-06 - - - - -
v.B 0.93881 0.22393 3.6e-07 - - - -
c.S 0.00576 0.93881 1.2e-05 0.00026 - - -
l.S 0.00067 0.48601 2.5e-05 4.6e-05 0.89883 - -
n.S 4.3e-12 2.2e-10 0.92366 5.4e-12 6.7e-10 7.7e-10 -
v.S 0.93881 0.93881 1.9e-06 0.31885 0.01217 0.00169 1.3e-10
P value adjustment method: holm
材料 n を l と比較したり、l と c を比較したりしていないため、調整された p 値が間違っているのではないかと懸念しています。ラボ「B」および「S」)。
pairwise.t.test への適切な呼び出しで次の比較のみが得られるように、データをサブセット化/グループ化する方法はありますか?
c.B l.B n.B v.B c.S l.S n.S
l.B - - - - - - -
n.B - - - - - - -
v.B - - - - - - -
c.S 0.00576 - - - - - -
l.S - 0.48601 - - - - -
n.S - - 0.92366 - - - -
v.S - - - 0.31885 - - -
よろしくピート
編集:@Johnからのコメントの後
そのようにpairwise.t.test関数を使用することはできないようですが、@droopyからの以前のソリューションは、p.adjust関数の呼び出しで利用できます。
> FUN<- function(x) {
t.test(x[,"fab"] ~ x[,"lab"])$p.value
}
res<-ddply(interlab, .(mat), FUN)
res$adjpvalue<-p.adjust(res$V1)
res
mat V1 adjpvalue
1 c 0.0004798071 0.001919228
2 l 0.0607510365 0.121502073
3 n 0.1847312857 0.184731286
4 v 0.0354274420 0.106282326
これを手伝ってくれた @John と @droopy に感謝します。