Doğrusal bir modelde uzamsal kovaryansı nasıl açıklayabilirim?


10

Arka fon

İki blokun her birinde dört tedavi seviyesi ve altı replikat bulunan bir saha çalışmasından elde edilen verilerim var. (4x6x2 = 48 gözlem)

Bloklar yaklaşık 1 mil uzaklıktadır ve bloklar içinde 42, 2m x 4m araziler ve 1m genişliğinde bir geçit vardır; çalışmam her blokta sadece 24 parsel kullandı.

Uzamsal kovaryans değerlendirmesini değerlendirmek istiyorum.

Burada, uzamsal kovaryans hesaba katılmadan, tek bir bloktaki verileri kullanan bir örnek analiz. Veri kümesinde, plotgrafik kimliği, grafik 1'in 0, 0 üzerinde ortalanmış olduğu her grafiğin xx konumu ve yy konumudur level, tedavi seviyesidir ve responseyanıt değişkendir.

layout <- structure(list(plot = c(1L, 3L, 5L, 7L, 8L, 11L, 12L, 15L, 16L, 
17L, 18L, 22L, 23L, 26L, 28L, 30L, 31L, 32L, 35L, 36L, 37L, 39L, 
40L, 42L), level = c(0L, 10L, 1L, 4L, 10L, 0L, 4L, 10L, 0L, 4L, 
0L, 1L, 0L, 10L, 1L, 10L, 4L, 4L, 1L, 1L, 1L, 0L, 10L, 4L), response = c(5.93, 
5.16, 5.42, 5.11, 5.46, 5.44, 5.78, 5.44, 5.15, 5.16, 5.17, 5.82, 
5.75, 4.48, 5.25, 5.49, 4.74, 4.09, 5.93, 5.91, 5.15, 4.5, 4.82, 
5.84), x = c(0, 0, 0, 3, 3, 3, 3, 6, 6, 6, 6, 9, 9, 12, 12, 12, 
15, 15, 15, 15, 18, 18, 18, 18), y = c(0, 10, 20, 0, 5, 20, 25, 
10, 15, 20, 25, 15, 20, 0, 15, 25, 0, 5, 20, 25, 0, 10, 20, 
25)), .Names = c("plot", "level", "response", "x", "y"), row.names = c(NA, 
-24L), class = "data.frame")

model <- lm(response ~ level, data = layout)      
summary(model)

Sorular

  1. Bir kovaryans matrisi nasıl hesaplayabilir ve regresyonuma dahil edebilirim?
  2. Bloklar çok farklıdır ve güçlü tedavi * blok etkileşimleri vardır. Bunları ayrı ayrı analiz etmek uygun mu?

1
37 ve 39 numaralı parsellerin her ikisi de x = 18, y = 10'dur. Tipo?
Aaron Stack Overflow'dan ayrıldı

@Aaron bunu işaret ettiğiniz için teşekkür ederim. y = [0,10]. Sabit.
David LeBauer

Yanıtlar:


10

1) nlmeKütüphane ile mekansal korelasyonu modelleyebilirsiniz ; Seçebileceğiniz birkaç olası model var. Bkz. Sayfa 260-266, Pinheiro / Bates.

İyi bir ilk adım korelasyonun mesafeye nasıl bağlı olduğunu görmek için bir variogram yapmaktır.

library(nlme)
m0 <- gls(response ~ level, data = layout)  
plot(Variogram(m0, form=~x+y))

Burada örnek semivariogram, gözlemlerle gerçekten mekânsal olarak ilişkili olduğunu gösteren mesafe ile birlikte artar.

Korelasyon yapısı için bir seçenek küresel bir yapıdır; bu, aşağıdaki şekilde modellenebilir.

m1 <- update(m0, corr=corSpher(c(15, 0.25), form=~x+y, nugget=TRUE))

Bu model, korelasyon yapısı olmayan modelden daha iyi gözükmektedir, ancak tamamen olası diğer korelasyon yapılarından biri ile de geliştirilebilir.

> anova(m0, m1)
   Model df     AIC      BIC    logLik   Test  L.Ratio p-value
m0     1  3 46.5297 49.80283 -20.26485                        
m1     2  5 43.3244 48.77961 -16.66220 1 vs 2 7.205301  0.0273

2) Ayrıca dahil deneyebilirsiniz xve ydoğrudan modelinde; korelasyon paterni sadece mesafeden daha fazlasına bağlıysa bu uygun olabilir. Sizin durumunuzda (sesqu'in resimlerine bakarak) zaten bu blok için köşegen bir paterniniz olabilir.

Burada m0 yerine orijinal modeli güncelliyorum çünkü sadece sabit efektleri değiştiriyorum, bu yüzden modellerin her ikisi de maksimum olasılık kullanarak sığmalıdır.

> model2 <- update(model, .~.+x*y)
> anova(model, model2)
Analysis of Variance Table

Model 1: response ~ level
Model 2: response ~ level + x + y + x:y
  Res.Df    RSS Df Sum of Sq      F   Pr(>F)   
1     22 5.3809                                
2     19 2.7268  3    2.6541 6.1646 0.004168 **

Her üç modeli de karşılaştırmak için, hepsini glsREML yöntemi yerine maksimum olasılık yöntemiyle ve uydurmanız gerekir.

> m0b <- update(m0, method="ML")
> m1b <- update(m1, method="ML")
> m2b <- update(m0b, .~x*y)
> anova(m0b, m1b, m2b, test=FALSE)
    Model df      AIC      BIC     logLik
m0b     1  3 38.22422 41.75838 -16.112112
m1b     2  5 35.88922 41.77949 -12.944610
m2b     3  5 29.09821 34.98847  -9.549103

Özellikle çalışma hakkındaki bilginizle, bunlardan herhangi birinden daha iyi bir model bulabileceğinizi unutmayın. Yani, modelin m2bhenüz en iyisi olduğu düşünülmemelidir.

Not: Bu hesaplamalar, çizim 37'nin x değeri 0'a değiştirildikten sonra gerçekleştirildi.


yararlı cevabınız için teşekkürler; 2. bölümde güncellenen neden belli değil modelyerine m0örneğin. m2 <- update(m0, .~.+x*y)böylece her üç model de karşılaştırılabilir anova(m0,m1,m2); Bunu yaptıktan sonra, m2büyük bir gevşek (AIC = 64) gibi görünüyor sizin
rolünüz

ps son satır '37. parselin y değerini değiştirdikten sonra' olmalıdır; gerçek değer 0'dır, ancak sonuçlar eşdeğerdir.
David LeBauer

Eğer karşılaştırırsanız m0, m1ve m2sen uyarıyı almak önerdiği gibi: Fitted objects with different fixed effects. REML comparisons are not meaningful. Sabit etkilerini karşılaştırmak yerine REML normal maksimum olasılığını kullanmak zorunda. Bkz. Düzenleme.
Aaron Stack Overflow'dan ayrıldı

yardımlarınız için teşekkürler. Neden olduğundan emin değilim, ancak diğer korelasyon yapıları, örneğin Pinheiro ve Bates örneğinde olduğu gibi corExp kullanarak uymaya çalıştığımda hata alıyorum. Ben var SO bir soru açılmış bu hata hakkında ancak giriş mutluluk duyacağız.
David LeBauer

4

1) Mekânsal açıklayan değişkeniniz nedir? Görünüşe göre x * y düzlemi uzaysal etki için zayıf bir model olacaktır.

tedavilerin ve yanıtların çizimi

i=c(1,3,5,7,8,11,14,15,16,17,18,22,23,25,28,30,31,32,35,36,39,39,41,42)
l=rep(NA,42)[i];l[i]=level
r=rep(NA,42)[i];r[i]=response
image(t(matrix(-l,6)));title("treatment")
image(t(matrix(-r,6)));title("response")

2) Blokların 1 mil arayla nasıl olduğunu ve sadece 30 metre boyunca efektler görmeyi beklediğinizi görünce, bunları ayrı ayrı analiz etmenin tamamen uygun olduğunu söyleyebilirim.


Görselleştirme yardımcı olur, ancak sağ alt kısmı rakamların sağ üstüyle karşılaştırırsanız, bana göre konumun seviyeden daha güçlü bir etkisi vardır. (ps Sanırım l [i] = yanıt r [i] = ...)
olmalı

Evet. Konum etkisi dikkat çekicidir ve bu nedenle tedavi etkilerini tahmin etmeye başlamadan önce bunun için gerçekten iyi bir model istersiniz. Ne yazık ki, çok fazla eksik veri var, bu yüzden ne olması gerektiğini söylemek zor - gelebileceğim en iyisi, komşuların yanıtı + rastgele bileşenin ortalaması olarak bir modelleme konumu etkisi olacak ve daha sonra bunun üzerinde tedaviyi deneyeceğim . Bu çok şüphelidir, bu nedenle ek alan adı bilgileri değerli olacaktır. yazım hatası düzeltildi.
sesqu

@sesqu ... eksik veri yok, rastgele yerleştirilmiş 24 parselin tüm verileri var.
David LeBauer

Her x, y çiftinde veri olmadığı anlamında eksik veri var.
Aaron,
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.