Anova () komutu bir lmer model nesnesiyle ne yapar?


30

Umarım bu, burada benim için birisinin lmer( lme4 R paketinden) uygun olan karışık efektler modelindeki kareler toplamının ayrıştırılması niteliği ile ilgili cevap verebileceği bir sorudur .

Öncelikle, bu yaklaşımı kullanma konusundaki tartışmaların farkında olduğumu söylemeliyim ve pratikte modelleri karşılaştırmak için önyüklemeli bir LRT kullanma ihtimalim daha fazla olacaktır (Faraway, 2006 tarafından önerildiği gibi). Ancak, sonuçları nasıl çoğaltacağım konusunda şaşkına döndüm ve bu yüzden kendi aklım için burada soracağımı düşündüm.

Temel olarak, lme4pakete uygun karışık efekt modellerini kullanmaya başlıyorum . anova()Modeldeki sabit efektlerin sıralı olarak test edilmesinin bir özetini vermek için komutu kullanabileceğinizi biliyorum . Bildiğim kadarıyla, Faraway'in (2006) “Beklenen ortalama kareler” yaklaşımı olarak adlandırdığı şey budur. Bilmek istediğim şey, karelerin toplamı nasıl hesaplanır?

Tahmini değerleri belirli bir modelden (kullanarak coef()) alabileceğimi, sabit olduklarını varsayabileceğimi, sonra da ilgilenen faktörleri olan ve olmayan model kalıntılarının karelerinin toplamlarını kullanarak testler yapabileceğimi biliyorum. Tek bir konu içi faktörü içeren bir model için bu iyidir. Bununla birlikte, bir bölünmüş arsa tasarımını uygularken, elde ettiğim karelerin değerlerinin toplamı, aov()uygun bir Error()atama ile R'nin ürettiği değere eşittir . Bununla birlikte, bu değil üretilen kare toplamı aynı anova()F oranları aynı olmasına rağmen, model nesnesinde komutu.

Tabii ki Error()karma bir modelde tabakalara gerek olmadığından bu tam anlam ifade ediyor . Bununla birlikte, bu, uygun F oranları sağlamak için karelerin toplamlarının bir şekilde karışık bir modelde cezalandırıldığı anlamına gelmelidir. Bu nasıl başarılır? Ve model bir şekilde kareler arası arsa toplamını düzeltir, fakat karelerin arsa içi toplamını nasıl düzeltmez. Açıkçası bu, farklı etkiler için farklı hata değerleri belirlenerek elde edilen klasik bölünmüş bir arsa ANOVA'sı için gerekli olan bir şeydir, o halde karma etki modeli buna nasıl izin verir?

Temel olarak, anova()sonuçları ve anlayışımı doğrulamak için kendimi bir lmer model nesnesine uygulanan komuttan elde ettiğim sonuçları kopyalayabilmek istiyorum, ancak şu anda bunu normal bir konu içi tasarım için başarabilirim. arsa tasarımı ve neden böyle olduğunu bulmak gibi görünmüyor.

Örnek olarak:

library(faraway)
library(lme4)
data(irrigation)

anova(lmer(yield ~ irrigation + variety + (1|field), data = irrigation))

Analysis of Variance Table
           Df Sum Sq Mean Sq F value
irrigation  3 1.6605  0.5535  0.3882
variety     1 2.2500  2.2500  1.5782

summary(aov(yield ~ irrigation + variety + Error(field/irrigation), data = irrigation))

Error: field
           Df Sum Sq Mean Sq F value Pr(>F)
irrigation  3  40.19   13.40   0.388  0.769
Residuals   4 138.03   34.51               

Error: Within
          Df Sum Sq Mean Sq F value Pr(>F)
variety    1   2.25   2.250   1.578  0.249
Residuals  7   9.98   1.426               

Yukarıda da görüleceği üzere tüm F oranları aynı fikirde. Çeşitlilik için karelerin toplamları da aynı fikirde. Ancak, sulama için karelerin toplamı aynı fikirde değildir, ancak lmer çıktısının ölçeklendirildiği anlaşılmaktadır. Peki anova () komutu gerçekte ne yapar?


1
İşlevin bir göz isteyebilirsin mixed()dan afexhangi teklifler istediğini (via method = "PB"). Ve belli ki oyuncak verisi ile bazı testler yaptığınız için, bu eşdeğerleri verilerle ve kodla gösterebilmeniz kesinlikle yararlı olacaktır (dolayısıyla, + 1).
Henrik

@Henrik Zorlu kalabalık ... Martyn, lütfen Faraway (2006) için referans verebilir misiniz?
Patrick Coulombe,


@PatrickCoulombe Hehe, haklısın. Ancak bazen bazı dostça güç daha iyi sorular almaya yardımcı olur.
Henrik

1
Aaron, kitap referansında haklı, başlangıçta sağlamadığı için özür diler!
Martyn

Yanıtlar:


31

Kaynağı kullan, Luke. ANOVA fonksiyonunun içine göz atarak göz atabiliriz getAnywhere(anova.Mermod). Bu fonksiyonun ilk kısmı iki farklı modeli karşılaştırmak içindir. Sabit etkiler üzerindeki anova elseikinci yarıda büyük blokta geliyor :

 dc <- getME(object, "devcomp")
        X <- getME(object, "X")
        asgn <- attr(X, "assign")
        stopifnot(length(asgn) == (p <- dc$dims[["p"]]))
            ss <- as.vector(object@pp$RX() %*% object@beta)^2
        names(ss) <- colnames(X)
        terms <- terms(object)
        nmeffects <- attr(terms, "term.labels")[unique(asgn)]
        if ("(Intercept)" %in% names(ss)) 
            nmeffects <- c("(Intercept)", nmeffects)
        ss <- unlist(lapply(split(ss, asgn), sum))
        stopifnot(length(ss) == length(nmeffects))
        df <- vapply(split(asgn, asgn), length, 1L)
        ms <- ss/df
        f <- ms/(sigma(object)^2)
        table <- data.frame(df, ss, ms, f)
        dimnames(table) <- list(nmeffects, c("Df", "Sum Sq", 
            "Mean Sq", "F value"))
        if ("(Intercept)" %in% nmeffects) 
            table <- table[-match("(Intercept)", nmeffects), 
                ]
        attr(table, "heading") <- "Analysis of Variance Table"
        class(table) <- c("anova", "data.frame")
        table

objectlmer çıkışıdır. 5. satırdaki karelerin toplamını hesaplamaya başlıyoruz: ss <- as.vector ...Kod, sabit parametreleri (in beta) üst üçgen matris ile çarpar ; sonra her terimi kareler. İşte sulama örneği için üst üçgen matris. Her sıra beş sabit efekt parametresinden birine karşılık gelir (kesişme, sulama için 3 serbestlik derecesi, çeşitlilik için 1 df).

zapsmall(irrigation.lmer@pp$RX(), digits = 3)
      [,1]  [,2]   [,3]   [,4]  [,5]
[1,] 0.813 0.203  0.203  0.203 0.407
[2,] 0.000 0.352 -0.117 -0.117 0.000
[3,] 0.000 0.000  0.332 -0.166 0.000
[4,] 0.000 0.000  0.000  0.287 0.000
[5,] 0.000 0.000  0.000  0.000 2.000

İlk satır size kesişme karelerinin toplamını verir ve sonuncusu size alan içi çeşitlilik efekti için SS değerini verir. 2-4. Satırlar yalnızca sulama seviyelerinin 3 parametresini içerir, bu yüzden ön çarpma size sulama için üç SS cinsi verir.

Bu parçalar, R'deki varsayılan tedavi karşıtlığından geldiklerinden kendi başlarına ilgi çekici değillerdir, ancak ss <- unlist(lapply(split ....Bates çizgisi , seviye sayısına ve atıfta bulundukları faktörlere göre kareler toplamı miktarlarını toplar. Burada bir sürü kitap var. Aynı zamanda (sulama için 3 olan) serbestlik derecelerine de sahibiz. Sonra, çıktısında görünen ortalama kareleri alır anova. Sonunda, bütün ortalama karelerini gruplar içindeki artık varyansa böler sigma(object)^2.

Yani, ne oluyor? Felsefesinin lmerkullandığı moment yaklaşımı yöntemiyle hiçbir ilgisi yoktur aov. Buradaki fikir lmer, görünmeyen rastgele etkileri bir araya getirerek elde edilen marjinal bir olasılığı en üst düzeye çıkarmaktır. Bu durumda, her alanın rastgele doğurganlık seviyesi. Pinheiro ve Bates Bölüm 2'de bu sürecin çirkinliği açıklanmaktadır. RXKareleri toplamı elde etmek için kullanılan matris kendi matrisidirR,00denklem 2.17, metnin 70. sayfasından. Bu matris, (diğer şeylerin yanı sıra) rastgele etkilerin tasarım matrisinin üzerine bir grup QR ayrışmasından elde edilir veσ2/σf2, nerede σf2 is the variance of the field effect. This is that missing factor you were asking about, but it does not enter into the solution in a transparent or simple way.

Asymptotically, the estimates of the fixed effects have distribution:

β^N(β,σ2[R001R00T])

which means that the components of R00β^ are independently distributed. If β=0, the squares of those terms (divided by σ2) follow a chi-squared distribution. Dividing through by the estimate of σ2 (another chi-squared when divided by σ2) gives an F statistic. We don't divide by the mean square error for the between-groups analysis because that has nothing to do with what's going on here. We need to compare the sums of squares obtained through R00 by comparing them to an estimate of σ2.

Note that you would not have got the same F statistics had the data been unbalanced. Nor would you have obtained the same F statistics if you had used ML instead of REML.

The idea behind aov is that the expected mean squares for irrigation is a function of σ2, σf2 and the irrigation effects. The expected mean square for field residuals is a function of σ2 and σf2. When the irrigation effects are 0, both of these quantities estimate the same thing and their ratio follows an F distribution.

Interestingly, Bates and Pinheiro recommend using the ANOVA over fitting two models and doing a likelihood ratio test. The latter tends to be anti-conservative.

Of course, if the data are unbalanced, it is no longer clear exactly what hypothesis the ANOVA is testing. I removed the first observation from the irrigation data and refit. Here is the R00 matrix again:

zapsmall(fit2@pp$RX(), digits = 3)
      [,1]  [,2]   [,3]   [,4]   [,5]
[1,] 0.816 0.205  0.205  0.205  0.457
[2,] 0.000 0.354 -0.119 -0.119 -0.029
[3,] 0.000 0.000  0.334 -0.168 -0.040
[4,] 0.000 0.000  0.000  0.288 -0.071
[5,] 0.000 0.000  0.000  0.000  1.874

As you can see, the sums of squares for the irrigation parameters now contain some of the variety effect as well.


10
+6, it's always nice to see an old, unanswered question get picked up & answered so well. May the source be with you...
gung - Reinstate Monica
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.