Bu özel kontrastlar nasıl yorumlanır?


10

Özel kontrastlı tek yönlü bir ANOVA (tür başına) yapıyorum.

     [,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

burada yoğunluk 0.5'i 5'e karşı 5, 12'ye karşı 5 vb. Bunlar üzerinde çalıştığım veriler

resim açıklamasını buraya girin

aşağıdaki sonuçlarla

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 "niphargus" için küresel ortalamadır. Yoğunluk1'de, yoğunluk 0,5 ile 5 arasındaki araçları karşılaştırıyorum.

Bu hakkı anladıysam, 2.2 yoğunluğu1 katsayısı, 0.5 ve 5 yoğunluk seviyeleri arasındaki farkın yarısı olmalıdır. Ancak, el hesaplamalarım özetle eşleşmiyor. Yanlış yaptığım birileri çipleyebilir mi?

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 

Tahmin etmek için kullandığınız R'den lm () işlevini sağlayabilir misiniz? Zıtlık işlevini tam olarak nasıl kullandınız?
Philippe

btw geom_points(position=position_dodge(width=0.75)), planınızdaki noktaların kutularla hizalanma biçimini düzeltir.
uçar

Sorumdan beri @ sinekler, bir giriş yapıldı geom_jitter, bu da tüm geom_point () parametreleri için bir kısayol.
Roman Luštrik

Oradaki titremeyi fark etmedim. does geom_jitter(position_dodge)işi? Ben kullanıyorum geom_points(position_jitterdodge)kaçmak ile kutudiyagramlar için noktaları ekleyin.
uçar

@flies için dokümanlar bakın geom_jitter burada . Yukarıdaki cevabımdan bu yana yaşadığım deneyime göre, kutu grafikleri kullanmanın gereksiz olduğunu düşünüyorum. Hiç. Eğer çok puanım varsa, nokta yoğunluğunu kutu grafiklerden çok daha ince ayrıntılarla gösteren keman grafikleri kullanırım. Boxplotlar birçok noktayı çizerken icat edildi veya yoğunlukları uygun değildi. Belki de bu (özürlü) görselleştirmeyi bırakmayı düşünmenin zamanı gelmiştir.
Roman Luštrik

Yanıtlar:


10

Kontrastlar için belirttiğiniz matris prensipte doğrudur. Uygun bir kontrast matrisine dönüştürmek için orijinal matrisinizin genelleştirilmiş tersini hesaplamanız gerekir.

Eğer Msizin matristir:

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 

Şimdi, genelleştirilmiş tersi kullanarak hesaplayın ginvve sonucu aşağıdakileri kullanarak aktarın 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

Sonuç @Greg Snow'la aynıdır. Analiziniz için bu matrisi kullanın.

Bu, manuel olarak yapmaktan çok daha kolay bir yoldur.


Kayan farklar matrisi oluşturmanın daha kolay bir yolu vardır ( tekrarlanan kontrastlar ). Bu, contr.sdifparametre olarak fonksiyon ve faktör seviyesi sayısı ile yapılabilir . Örneğinizde olduğu gibi beş faktör seviyeniz varsa:

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

Üstteki matris, kukla değişkenleri nasıl kodladığınızsa ( R'de Cveya contrastfonksiyonuna geçtiğiniz şey ), birincisi, 1. seviyeyi diğerleriyle karşılaştırır (aslında 1'in 0.8 katı, diğerlerinin toplamı).

İkinci terim ilk 2 seviyeleri son 3 ile karşılaştırır. Üçüncüsü ilk 3 seviyeleri son2 ile karşılaştırır ve dördüncü ilk 4 seviyeleri son 4 ile karşılaştırır.

Açıkladığınız karşılaştırmaları yapmak istiyorsanız (her çifti karşılaştırın), istediğiniz kukla değişken kodlaması:

      [,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

Bu genelleştirilmiş inverese matrisin kullanılması, aov()yerine kullanılırken de gerekli lm()midir? Soruyorum, çünkü kontrast matrislerinin aov()Roma tarafından verilen gibi oluşturulduğu birkaç öğretici okudum . Örneğin Bölüm 5'e bakınız cran.r-project.org/doc/contrib/Vikneswaran-ED_companion.pdf
crsh

2
aovFonksiyonu çağıran lmkontrast matrisleri gibi şeyler hem de aynı etkiye sahip olacak, böylece ana hesaplamalar yapmak işlevini.
Greg Snow
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.