Lệnh anova () làm gì với một đối tượng mô hình lmer?


30

Hy vọng rằng đây là một câu hỏi mà ai đó ở đây có thể trả lời cho tôi về bản chất của việc phân tách các tổng bình phương từ một mô hình hiệu ứng hỗn hợp phù hợp với lmer(từ gói lme4 R).

Trước hết tôi nên nói rằng tôi nhận thức được sự tranh cãi khi sử dụng phương pháp này và trong thực tế, tôi có nhiều khả năng sử dụng LRT khởi động để so sánh các mô hình (như đề xuất của Faraway, 2006). Tuy nhiên, tôi bối rối về cách sao chép kết quả, và vì sự tỉnh táo của riêng tôi, tôi nghĩ rằng tôi sẽ hỏi ở đây.

Về cơ bản, tôi đang nắm bắt được việc sử dụng các mô hình hiệu ứng hỗn hợp phù hợp với lme4gói. Tôi biết rằng bạn có thể sử dụng anova()lệnh để đưa ra một bản tóm tắt kiểm tra tuần tự các hiệu ứng cố định trong mô hình. Theo như tôi biết thì đây là những gì Faraway (2006) đề cập đến như là phương pháp 'Dự kiến ​​bình phương trung bình'. Những gì tôi muốn biết là tổng các hình vuông được tính như thế nào?

Tôi biết rằng tôi có thể lấy các giá trị ước tính từ một mô hình cụ thể (sử dụng coef()), giả sử rằng chúng là cố định và sau đó thực hiện các thử nghiệm bằng cách sử dụng tổng bình phương của phần dư mô hình có và không có các yếu tố quan tâm. Điều này tốt cho một mô hình có chứa một yếu tố bên trong chủ đề. Tuy nhiên, khi thực hiện thiết kế chia ô, tổng giá trị bình phương tôi nhận được tương đương với giá trị do R tạo ra bằng cách sử dụng chỉ định aov()thích hợp Error(). Tuy nhiên, điều này không giống với các tổng bình phương được tạo bởi anova()lệnh trên đối tượng mô hình, mặc dù thực tế là các tỷ số F là như nhau.

Tất nhiên điều này có ý nghĩa hoàn toàn vì không cần Error()tầng lớp trong mô hình hỗn hợp. Tuy nhiên, điều này phải có nghĩa là các tổng bình phương bị phạt bằng cách nào đó trong một mô hình hỗn hợp để cung cấp tỷ lệ F thích hợp. Làm thế nào đạt được điều này? Và làm thế nào để mô hình bằng cách nào đó sửa tổng các ô vuông giữa các ô nhưng không sửa tổng các ô vuông trong ô. Rõ ràng đây là điều cần thiết cho một ANOVA phân chia cổ điển đã đạt được bằng cách chỉ định các giá trị lỗi khác nhau cho các hiệu ứng khác nhau, vậy làm thế nào một mô hình hiệu ứng hỗn hợp cho phép điều này?

Về cơ bản, tôi muốn có thể sao chép các kết quả từ anova()lệnh được áp dụng cho một đối tượng mô hình lmer để xác minh kết quả và sự hiểu biết của tôi, tuy nhiên, hiện tại tôi có thể đạt được điều này cho một thiết kế bên trong chủ đề bình thường nhưng không phải cho phân tách thiết kế cốt truyện và dường như tôi không thể tìm ra lý do tại sao lại như vậy.

Ví dụ:

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               

Như có thể thấy ở trên tất cả các tỷ lệ F đồng ý. Các tổng của hình vuông cho sự đa dạng cũng đồng ý. Tuy nhiên, các tổng bình phương cho tưới tiêu không đồng ý, tuy nhiên có vẻ như sản lượng lmer được thu nhỏ lại. Vậy lệnh anova () thực sự làm gì?


1
Bạn có thể muốn xem chức năng mixed()từ afexđó cung cấp những gì bạn muốn (thông qua method = "PB"). Và như bạn rõ ràng đã thực hiện một số thử nghiệm với dữ liệu đồ chơi, chắc chắn sẽ rất hữu ích nếu bạn có thể hiển thị các tương đương đó với dữ liệu và mã (do đó, không có +1).
Henrik

@Henrik Tough đám đông ... Martyn, bạn có thể cung cấp tài liệu tham khảo cho Faraway (2006) không?
Patrick Coulombe


@PatrickCoulombe Hehe, bạn nói đúng. Nhưng đôi khi một số lực lượng thân thiện giúp có được câu hỏi tốt hơn.
Henrik

1
Aaron là chính xác trong tài liệu tham khảo cuốn sách, xin lỗi vì đã không cung cấp nó ban đầu!
Martyn

Câu trả lời:


31

Sử dụng Nguồn, Luke. Chúng ta có thể nhìn trộm bên trong hàm ANOVA bằng cách thực hiện getAnywhere(anova.Mermod). Phần đầu tiên của chức năng đó là để so sánh hai mô hình khác nhau. Anova trên các hiệu ứng cố định xuất hiện trong elsekhối lớn trong nửa sau:

 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

objectlà đầu ra lmer. Chúng ta bắt đầu tính tổng bình phương trong dòng 5: ss <- as.vector ...Mã nhân các tham số cố định (in beta) bằng một ma trận tam giác trên; sau đó bình phương mỗi kỳ. Đây là ma trận tam giác trên cho ví dụ tưới. Mỗi hàng tương ứng với một trong năm thông số hiệu ứng cố định (đánh chặn, 3 bậc tự do cho tưới tiêu, 1 df cho sự đa dạng).

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

Hàng đầu tiên cung cấp cho bạn tổng bình phương cho phần chặn và hàng cuối cung cấp cho bạn SS cho hiệu ứng đa dạng trong trường. Hàng 2-4 chỉ liên quan đến 3 thông số cho các mức tưới, do đó, phép nhân trước cung cấp cho bạn ba mảnh SS để tưới.

Bản thân các mảnh này không thú vị vì chúng đến từ độ tương phản điều trị mặc định trong R, nhưng trong dòng ss <- unlist(lapply(split ....Bates sẽ tìm ra các bit của tổng bình phương theo số cấp và các yếu tố mà chúng đề cập đến. Có rất nhiều việc giữ sách đang diễn ra ở đây. Chúng tôi cũng nhận được mức độ tự do (là 3 cho tưới tiêu). Sau đó, anh ta nhận được các ô vuông trung bình xuất hiện trên bản in anova. Cuối cùng, anh ta chia tất cả các bình phương trung bình của mình cho phương sai còn lại trong nhóm , sigma(object)^2.

lmeraovlmerRXR00σ2/σf2σf2

Không có triệu chứng, các ước tính về các hiệu ứng cố định có phân phối:

β^~N(β,σ2[R00-1R00-T])

R00β^β= =0σ2σ2σ2R00σ2

Lưu ý rằng bạn sẽ không có cùng số liệu thống kê F nếu dữ liệu không cân bằng. Bạn cũng sẽ không có được số liệu thống kê F tương tự nếu bạn đã sử dụng ML thay vì REML.

aovσ2σf2σ2σf2

Thật thú vị, Bates và Pinheiro khuyên bạn nên sử dụng ANOVA trên việc lắp hai mô hình và thực hiện kiểm tra tỷ lệ khả năng. Cái sau có xu hướng chống bảo thủ.

R00

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

Như bạn có thể thấy, các tổng bình phương cho các tham số tưới hiện cũng chứa một số varietyhiệu ứng.


10
+6, thật tuyệt khi thấy một câu hỏi cũ, chưa được trả lời được chọn và trả lời rất tốt. Có thể nguồn tin sẽ ở bên bạn ...
gung - Tái lập Monica
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.