これらのカスタムコントラストを解釈する方法は?


10

私は、カスタムコントラストを使用して(種ごとに)一元配置分散分析を行っています。

     [,1] [,2] [,3] [,4]
0.5    -1    0    0    0
5       1   -1    0    0
12.5    0    1   -1    0
25      0    0    1   -1
50      0    0    0    1

ここでは、強度0.5を5と比較し、5を12.5と比較しています。これらは私が取り組んでいるデータです

ここに画像の説明を入力してください

次の結果

Generalized least squares fit by REML
  Model: dark ~ intensity 
  Data: skofijski.diurnal[skofijski.diurnal$species == "niphargus", ] 
       AIC      BIC    logLik
  63.41333 67.66163 -25.70667

Coefficients:
            Value Std.Error  t-value p-value
(Intercept) 16.95 0.2140872 79.17334  0.0000
intensity1   2.20 0.4281744  5.13809  0.0001
intensity2   1.40 0.5244044  2.66970  0.0175
intensity3   2.10 0.5244044  4.00454  0.0011
intensity4   1.80 0.4281744  4.20389  0.0008

 Correlation: 
           (Intr) intns1 intns2 intns3
intensity1 0.000                      
intensity2 0.000  0.612               
intensity3 0.000  0.408  0.667        
intensity4 0.000  0.250  0.408  0.612 

Standardized residuals:
       Min         Q1        Med         Q3        Max 
-2.3500484 -0.7833495  0.2611165  0.7833495  1.3055824 

Residual standard error: 0.9574271 
Degrees of freedom: 20 total; 15 residual

16.95は「ニファルガス」の世界平均です。強度1では、強度0.5と5の平均を比較しています。

私がこの権利を理解していれば、2.2の強度1の係数は、強度レベル0.5と5の平均値の差の半分になるはずです。しかし、私の手計算は要約の計算と一致しません。誰かが私が間違っていることにチップを入れることはできますか?

ce1 <- skofijski.diurnal$intensity
levels(ce1) <- c("0.5", "5", "0", "0", "0")
ce1 <- as.factor(as.character(ce1))
tapply(skofijski.diurnal$dark, ce1, mean)
       0    0.5      5 
  14.500 11.875 13.000 
diff(tapply(skofijski.diurnal$dark, ce1, mean))/2
      0.5       5 
  -1.3125  0.5625 

推定に使用したRのlm()関数を提供できますか?コントラスト関数はどの程度正確に使用しましたか?
フィリップ

btw geom_points(position=position_dodge(width=0.75))は、プロット内のポイントがボックスと一致しない方法を修正します。
飛ぶ

私の質問以来@flies、geom_jitterジッターを起こすすべてのgeom_point()パラメータのショートカットであるの紹介がありました。
RomanLuštrik2018

そこのジッターに気づきませんでした。動作しgeom_jitter(position_dodge)ますか?私はgeom_points(position_jitterdodge)覆い焼きでボックスプロットにドットを追加するために使用しています。
フライ

@fliesは、geom_jitter ここのドキュメントを参照してください。上記の回答からの私の経験では、箱ひげ図を使用する必要はありません。ずっと。ポイントが多い場合は、ボックスプロットよりも細かい点の密度を示すバイオリンプロットを使用します。箱ひげ図は、多くの点またはその密度をプロットすることが都合が悪いときに発明されました。おそらく、この(障害者向けの)視覚化を削除することを考え始める時でしょう。
RomanLuštrik2018

回答:


10

コントラストに指定したマトリックスは、原則として正しいです。これを適切なコントラスト行列に変換するには、元の行列の一般化された逆行列を計算する必要があります。

Mあなたのマトリックスなら:

M

#     [,1] [,2] [,3] [,4]
#0.5    -1    0    0    0
#5       1   -1    0    0
#12.5    0    1   -1    0
#25      0    0    1   -1
#50      0    0    0    1 

ここで、一般化された逆行列を使用して計算しginv、結果をt次のように転置します。

library(MASS)
t(ginv(M))

#     [,1] [,2] [,3] [,4]
#[1,] -0.8 -0.6 -0.4 -0.2
#[2,]  0.2 -0.6 -0.4 -0.2
#[3,]  0.2  0.4 -0.4 -0.2
#[4,]  0.2  0.4  0.6 -0.2
#[5,]  0.2  0.4  0.6  0.8

結果は@Greg Snowのものと同じです。このマトリックスを分析に使用します。

これは手動で行うよりもはるかに簡単な方法です。


スライディング差分のマトリックス(別名繰り返しコントラスト)を生成するさらに簡単な方法があります。これは、関数contr.sdifと因子レベルの数をパラメーターとして使用して行うことができます。例のように5つの因子レベルがある場合:

library(MASS)
contr.sdif(5)

#   2-1  3-2  4-3  5-4
#1 -0.8 -0.6 -0.4 -0.2
#2  0.2 -0.6 -0.4 -0.2
#3  0.2  0.4 -0.4 -0.2
#4  0.2  0.4  0.6 -0.2
#5  0.2  0.4  0.6  0.8

4

一番上の行列がダミー変数(R のCcontrast関数に渡すもの)をエンコードする方法である場合、最初のレベルは1番目のレベルを他のレベルと比較しています(実際には、最初のレベルの0.8倍に、0.2倍からその他の合計)。

2番目の用語は、最初の2レベルを最後の3と比較します。3番目は、最初の3レベルを最後の2と比較し、4番目は、最初の4レベルを最後のレベルと比較します。

記述した比較を行う場合(各ペアを比較する場合)、必要なダミー変数エンコーディングは次のとおりです。

      [,1] [,2] [,3] [,4]
[1,] -0.8 -0.6 -0.4 -0.2
[2,]  0.2 -0.6 -0.4 -0.2
[3,]  0.2  0.4 -0.4 -0.2
[4,]  0.2  0.4  0.6 -0.2
[5,]  0.2  0.4  0.6  0.8

aov()代わりに使用する場合、この一般化されたインバーゼ行列の使用も必要lm()ですか?私が尋ねているのは、いくつかのチュートリアルを読んだためです。このチュートリアルでは、コントラストマトリックスはaov()、Romanによって与えられたものと同じように作成されます。たとえば、cran.r-project.org
doc / contrib /

2
このaov関数は、lmメインの計算を行うために関数を呼び出します。そのため、コントラスト行列のようなものは、両方で同じ効果があります。
Greg Snow
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.