Làm thế nào để có được kết quả của bài kiểm tra hậu hoc Tukey HSD trong bảng hiển thị các cặp được nhóm?


13

Tôi rất thích thực hiện bài kiểm tra hậu hoc TukeyHSD sau Anova hai chiều của tôi với R, thu được một bảng chứa các cặp được sắp xếp được nhóm theo sự khác biệt đáng kể. (Xin lỗi về từ ngữ, tôi vẫn còn mới với số liệu thống kê.)

Tôi muốn có một cái gì đó như thế này:

nhập mô tả hình ảnh ở đây

Vì vậy, được nhóm với các ngôi sao hoặc chữ cái.

Bất kỳ ý tưởng? Tôi đã kiểm tra chức năng HSD.test()từ agricolaegói, nhưng có vẻ như nó không xử lý các bảng hai chiều.

Câu trả lời:


22

Các agricolae::HSD.testchức năng thực hiện chính xác đó, nhưng bạn sẽ cần phải để cho nó biết rằng bạn đang quan tâm đến một thuật ngữ tương tác . Dưới đây là một ví dụ với bộ dữ liệu Stata:

library(foreign)
yield <- read.dta("http://www.stata-press.com/data/r12/yield.dta")
tx <- with(yield, interaction(fertilizer, irrigation))
amod <- aov(yield ~ tx, data=yield)
library(agricolae)
HSD.test(amod, "tx", group=TRUE)

Điều này cho kết quả hiển thị dưới đây:

Groups, Treatments and means
a        2.1     51.17547 
ab       4.1     50.7529 
abc      3.1     47.36229 
 bcd     1.1     45.81229 
  cd     5.1     44.55313 
   de    4.0     41.81757 
    ef   2.0     38.79482 
    ef   1.0     36.91257 
     f   3.0     36.34383 
     f   5.0     35.69507 

Chúng khớp với những gì chúng ta sẽ có được với các lệnh sau:

. webuse yield
. regress yield fertilizer##irrigation
. pwcompare fertilizer#irrigation, group mcompare(tukey)

-------------------------------------------------------
                      |                           Tukey
                      |     Margin   Std. Err.   Groups
----------------------+--------------------------------
fertilizer#irrigation |
                 1 0  |   36.91257   1.116571    AB    
                 1 1  |   45.81229   1.116571      CDE 
                 2 0  |   38.79482   1.116571    AB    
                 2 1  |   51.17547   1.116571         F
                 3 0  |   36.34383   1.116571    A     
                 3 1  |   47.36229   1.116571       DEF
                 4 0  |   41.81757   1.116571     BC   
                 4 1  |    50.7529   1.116571        EF
                 5 0  |   35.69507   1.116571    A     
                 5 1  |   44.55313   1.116571      CD  
-------------------------------------------------------
Note: Margins sharing a letter in the group label are
      not significantly different at the 5% level.

Các multcomp gói cũng cung cấp hình dung tượng trưng ( 'hiển thị thư compact', xem thuật toán cho Displays nhỏ gọn Letter: So sánh và đánh giá để biết thêm chi tiết) so sánh cặp đáng kể, mặc dù nó không trình bày chúng trong một định dạng bảng. Tuy nhiên, nó có một phương pháp vẽ cho phép hiển thị kết quả một cách thuận tiện bằng cách sử dụng các ô vuông. Trình tự trình bày cũng có thể được thay đổi (tùy chọn decreasing=) và nó có nhiều tùy chọn hơn cho nhiều so sánh. Ngoài ra còn có gói multcompView mở rộng các chức năng đó.

Đây là ví dụ tương tự được phân tích với glht:

library(multcomp)
tuk <- glht(amod, linfct = mcp(tx = "Tukey"))
summary(tuk)          # standard display
tuk.cld <- cld(tuk)   # letter-based display
opar <- par(mai=c(1,1,1.5,1))
plot(tuk.cld)
par(opar)

Điều trị chia sẻ cùng một chữ cái không khác biệt đáng kể, ở mức độ được chọn (mặc định, 5%).

nhập mô tả hình ảnh ở đây

Ngẫu nhiên, có một dự án mới, hiện đang được lưu trữ trên R-Forge, có vẻ đầy hứa hẹn: Factplot . Nó bao gồm hiển thị dòng và chữ, cũng như tổng quan về ma trận (thông qua biểu đồ mức) của tất cả các so sánh theo cặp. Một bài báo làm việc có thể được tìm thấy ở đây: Factplot: Cải thiện trình bày về sự tương phản đơn giản trong GLM


Cảm ơn bạn rất nhiều vì câu trả lời đầy đủ này! Tôi sẽ thử những phương pháp khác nhau ngay sau khi tôi nhận được vài phút. Chúc mừng!
stragu

Tôi đã thử chức năng gói multcomp, đặt khi tôi sử dụng hàm 'cld ()' Tôi gặp lỗi 'Lỗi: sapply (split_names, length) == 2 không phải là TRUE'
stragu

1
@chtfn Dường như có vấn đề với nhãn biến. Nhìn nhanh vào mã nguồn chỉ ra rằng thông báo lỗi này xuất phát từ insert_absorb()đó cố gắng trích xuất cặp phương pháp điều trị. Có lẽ bạn có thể thử thay đổi dấu phân cách bạn đã sử dụng cho các mức mã hóa của thuật ngữ tương tác của bạn? Không có ví dụ hoạt động, thật khó để nói chuyện gì đã xảy ra.
chl

Tôi đã hiểu ra: Tôi đã có điểm trong tên kiểu gen và phương pháp điều trị của mình, và vì qlht () sử dụng một điểm để phân chia tên cặp, nên nó bị hoảng loạn. Cảm ơn bạn rất nhiều vì tất cả sự giúp đỡ của bạn, chl! :)
stragu

3
Hôm nay tôi nhận thấy rằng bây giờ tôi phải thêm console=TRUEvào HSD.test()để có được các bảng, trong trường hợp ai đó thử điều này và không thấy kết quả. Có lẽ là một bản cập nhật của agricolae.
stragu

2

Có một hàm được gọi là TukeyHSD, theo tệp trợ giúp, tính toán một tập các khoảng tin cậy về sự khác biệt giữa các phương tiện của các yếu tố với xác suất bảo hiểm khôn ngoan của gia đình được chỉ định. Các khoảng thời gian được dựa trên thống kê phạm vi Sinh viên, phương pháp "Khác biệt đáng kể trung thực" của Tukey. Điều này có làm những gì bạn muốn?

http://stat.ethz.ch/R-manual/R-patched/lvern/stats/html/TukeyHSD.html


Cảm ơn bạn đã phản hồi của bạn. Vâng, tôi đã thử chức năng này, nhưng nó cho tôi danh sách so sánh thô. Điều tôi muốn là nhìn thấy chúng được nhóm lại như trong hình ảnh trong câu hỏi của tôi, để có một cái nhìn rõ ràng về nhóm nào khác với nhóm nào, và cuối cùng thêm tên nhóm vào biểu đồ của tôi (ví dụ: a, ab, abc, bc , c)
stragu
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.