1. ホーム
  2. r

[解決済み] TukeyHSDによる誤差

2022-02-18 04:15:24

質問

以下のようなデータがあり、ANOVAを実行してすべての列間の差をチェックしようとします。どの程度有意に違うのか等。

df<- structure(list(color = structure(c(3L, 4L, 3L, 4L, 4L, 4L, 4L, 
    4L, 4L, 4L), .Label = c("B", "G", "R", "W"), class = "factor"), 
        type = 1:10, X1 = c(0.006605138, 0.001165448, 0.006975109, 
        0.002207839, 0.00187902, 0.002208638, 0.001199808, 0.001162252, 
        0.001338847, 0.001106317), X2 = c(0.006041392, 0.001639298, 
        0.006140877, 0.002958169, 0.002744017, 0.003107995, 0.001729594, 
        0.001582564, 0.001971713, 0.001693236), X3 = c(0.024180351, 
        0.002189061, 0.027377442, 0.002886651, 0.002816333, 0.003527908, 
        0.00231891, 0.001695633, 0.00212034, 0.001962923)), .Names = c("color", 
    "type", "X1", "X2", "X3"), row.names = c(NA, 10L), class = "data.frame")

まず、次のコマンドでANOVAを実行します。

 anovar= aov(type~.,df)

を実行し、次のように出力をまとめる。

summary(anovar)

ここまでは順調で、うまく動作しています。しかし、TukeyHSDを実行しようとすると、構造に問題があるようです。以下のようなエラーになります。検索してみましたが、同様の状況は見つかりませんでした。何かコメントがあればお願いします。

TukeyHSD(anovar)
# Error in rep.int(n, length(means)) : unimplemented type 'NULL' in 'rep3'
# In addition: Warning messages:
# 1: In replications(paste("~", xx), data = mf) : non-factors ignored: X1
# 2: In replications(paste("~", xx), data = mf) : non-factors ignored: X2
# 3: In replications(paste("~", xx), data = mf) : non-factors ignored: X3

解決方法は?

TukeyHSD のドキュメントの説明にあるように,この関数は,あるレベルの平均値の差に対する信頼区間のセットを作成します. 因子 を、指定された族単位の網羅確率で指定する。

つまり、実行するには、データセットにファクターが含まれている必要があります。そこで、以下のように因子を選択すると動作します。

> TukeyHSD(anovar, which = 'color') #color is the only categorical data

  Tukey multiple comparisons of means
    95% family-wise confidence level

Fit: aov(formula = type ~ ., data = df)

$color
     diff       lwr      upr     p adj
W-R 4.375 -1.465325 10.21532 0.1121168

また、非因子X1, X2, X3は無視されるという警告が表示されます。

TukeyHSD オブジェクトを印刷するには、それを保存して、次のようにします。 plot . このように plot メソッド(および print メソッド) を使用しています。

forplot <- TukeyHSD(anovar, which = 'color')
plot(forplot)