次のデータフレームでRを使用してt検定を実行しようとしました。
df <- structure(list(freq = c(9, 11, 14, 12, 10, 9, 16, 10, 11, 15,
13, 12, 12, 13, 13, 9, 16, 14, 12, 15, 16, 10, 11, 13, 14, 14,
14, 16, 8, 10, 14, 14, 11, 11, 11, 11, 13, 7, 12, 13, 14, 11,
11, 13, 10, 14, 10, 10, 12, 8, 9, 12, 14, 11, 12, 12, 14, 14,
14, 15, 12, 13, 14, 8, 9, 11, 10, 14, 12, 12, 9, 10, 8, 14, 11,
14, 9, 13, 13, 13, 10, 9, 13, 10, 13, 10, 13, 12, 11, 12, 10,
12, 8, 11, 12, 15, 12, 12, 11, 13, 12, 10, 13, 9, 11, 9, 11,
8, 12, 12, 12, 10, 11, 12, 9, 13, 14, 11, 11, 14, 13, 12, 14,
15, 12, 12, 12, 14), class = structure(c(3L, 3L, 2L, 2L, 2L,
2L, 2L, 3L, 2L, 3L, 4L, 4L, 4L, 4L, 3L, 2L, 3L, 2L, 1L, 4L, 1L,
4L, 1L, 4L, 2L, 2L, 3L, 3L, 2L, 4L, 1L, 4L, 4L, 4L, 3L, 3L, 3L,
2L, 1L, 4L, 3L, 3L, 1L, 4L, 1L, 2L, 2L, 3L, 3L, 4L, 2L, 2L, 3L,
3L, 2L, 2L, 2L, 1L, 1L, 2L, 1L, 1L, 4L, 1L, 1L, 1L, 2L, 2L, 3L,
2L, 3L, 2L, 3L, 3L, 4L, 2L, 1L, 4L, 1L, 1L, 3L, 2L, 2L, 2L, 3L,
1L, 1L, 1L, 1L, 3L, 4L, 4L, 4L, 4L, 4L, 1L, 1L, 1L, 3L, 3L, 4L,
4L, 3L, 4L, 4L, 4L, 4L, 3L, 3L, 1L, 4L, 4L, 1L, 4L, 4L, 1L, 3L,
1L, 2L, 2L, 1L, 2L, 1L, 1L, 3L, 3L, 2L, 1L), .Label = c("ending",
"mobile", "stem.first", "stem.second"), class = "factor")), .Names = c("freq",
"class"), row.names = c(NA, -128L), class = "data.frame")
以前の投稿で読んだように、Rでこれを行う方法は複数あります。 t.test
-functionと-functionの両方を使用してみましたpairwise.t.test
。
使用t.test
するために、比較するクラスごとにデータフレームをサブセット化し、サブセットに対して後続のt検定を実行しました。
ending.vs.mobile <- df[df$class=="ending"|df$class=="mobile",]
ending.vs.first <- df[df$class=="ending"|df$class=="stem.first",]
ending.vs.second <- df[df$class=="ending"|df$class=="stem.second",]
mobile.vs.first <- df[df$class=="mobile"|df$class=="stem.first",]
mobile.vs.second <- df[df$class=="mobile"|df$class=="stem.second",]
first.vs.second <- df[df$class=="stem.first"|df$class=="stem.second",]
t.test(ending.vs.mobile$freq ~ ending.vs.mobile$class, var.equal=T)
t.test(ending.vs.first$freq ~ ending.vs.first$class, var.equal=T)
t.test(ending.vs.second$freq ~ ending.vs.second$class, var.equal=T)
t.test(mobile.vs.first$freq ~ mobile.vs.first$class, var.equal=T)
t.test(mobile.vs.second$freq ~ mobile.vs.second$class, var.equal=T)
t.test(first.vs.second$freq ~ first.vs.second$class, var.equal=T)
私が理解している限り(ここでは間違っているかもしれませんが)、pairwise.t.test
すべてのサブセットを作成する必要はなく、元のデータフレーム上で実行できるため、ここの方が便利です。
pairwise.t.test(df$freq, df$class, p.adjust.method="none", paired=FALSE, pooled.sd=FALSE)
ただし、ここでは異なる結果が得られます。これは、stem.secondとの比較で最も顕著です。p= 0.7を使用しt.test
、p=0.1を使用しpairwise.t.test
ます。
ここで何が問題になっていますか?私はどこでsthをしましたか。間違い?
問題自体は解決しましたが、それが発生した理由は、私を少しパラノイアにしていると思います(もう自分自身を信頼していません):入力するpooled.sd
代わりに入力するだけでpool.sd
は、期待する結果が得られません。これはエラーが発生しやすいのではないですか?
他の多くの場合、たとえば、、、、などのバリアントを入力できbonf
ます。ただし、「pooled sd」は実際には意図されていますが、ここでは完全に無視されます。わかりました。出力の見出しをよく読むと、「プールされたSDでテストします」と表示されているため、認識されなかったと推測できますが、出力を自己にパイプする場合など、これを印刷しないとどうなりますか。書かれた関数?このエラーが認識されない可能性があります。bonferroni
fa()
factor()
pooled.sd
pooled.sd
Rの一部の開発者に手紙を書く必要があります。これは、Rの将来のリリースでは、両方のスペルのバリエーションが有効になるはずです。