2010-03-19 21 views
11

Các số liệu thống kê tiêu chuẩn :: Module kruskal.test cho phép để tính toán kiểm tra Kruskal-Wallis trên một tập dữ liệu:Kruskal-Wallis thử nghiệm với các chi tiết trên so sánh cặp

>>> data(diamonds) 
>>> kruskal.test(price~carat, data=diamonds) 

Kruskal-Wallis rank sum test 

data: price by carat by color 
Kruskal-Wallis chi-squared = 50570.15, df = 272, p-value < 2.2e-16 

này là chính xác, nó được đem lại cho tôi một xác suất rằng tất cả các nhóm trong dữ liệu đều có cùng ý nghĩa.

Tuy nhiên, tôi muốn có chi tiết cho mỗi cặp so sánh, như kim cương màu D và E có cùng mức giá trung bình, như một số phần mềm khác làm (SPSS) khi bạn yêu cầu kiểm tra Kruskal.

Tôi đã tìm thấy kruskalmc từ pgirmess gói cho phép tôi làm những gì tôi muốn làm:

> kruskalmc(diamonds$price, diamonds$color) 
Multiple comparison test after Kruskal-Wallis 
p.value: 0.05 
Comparisons 
     obs.dif critical.dif difference 
D-E 571.7459  747.4962  FALSE 
D-F 2237.4309  751.5684  TRUE 
D-G 2643.1778  726.9854  TRUE 
D-H 4539.4392  774.4809  TRUE 
D-I 6002.6286  862.0150  TRUE 
D-J 8077.2871 1061.7451  TRUE 
E-F 2809.1767  680.4144  TRUE 
E-G 3214.9237  653.1587  TRUE 
E-H 5111.1851  705.6410  TRUE 
E-I 6574.3744  800.7362  TRUE 
E-J 8649.0330 1012.6260  TRUE 
F-G 405.7470  657.8152  FALSE 
F-H 2302.0083  709.9533  TRUE 
F-I 3765.1977  804.5390  TRUE 
F-J 5839.8562 1015.6357  TRUE 
G-H 1896.2614  683.8760  TRUE 
G-I 3359.4507  781.6237  TRUE 
G-J 5434.1093  997.5813  TRUE 
H-I 1463.1894  825.9834  TRUE 
H-J 3537.8479 1032.7058  TRUE 
I-J 2074.6585 1099.8776  TRUE 

Tuy nhiên, gói này chỉ cho phép một biến categoric (ví dụ như tôi không thể nghiên cứu các giá nhóm bởi màu sắc và carat, như tôi có thể làm với kruskal.test), và tôi không biết bất cứ điều gì về gói pgirmess, cho dù nó được duy trì hay không, hoặc nếu nó được kiểm tra.

Bạn có thể giới thiệu cho tôi một gói để thực hiện kiểm tra Kruskal-Wallis trả về chi tiết cho mọi so sánh không? Bạn xử lý vấn đề như thế nào?

+0

Có chức năng 'kruskal' trong gói' agricolae'. Bạn có thể kiểm tra xem có phù hợp với nhu cầu của bạn không. – Marek

+1

Rõ ràng bạn có nghĩa là kruskal.test (không có giây .test). Tôi đoán bạn đang sử dụng tập dữ liệu kim cương từ gói ggplot2. Vâng, tôi không thể hiểu tại sao, nhưng khi tôi thử tải nó, tôi nhận được một lỗi 'nội bộ lỗi -3 trong R_decompress1 Ngoài ra: Thông báo cảnh báo: khởi động lại đánh giá lời hứa gián đoạn'. (Tôi biết, điều này trông giống như một câu hỏi tôi nên đăng bài, nhưng có ai phải đối mặt với cùng một vấn đề?) –

+0

@ Marek: cảm ơn bạn rất nhiều. Tôi thấy agricolae nhưng có vẻ như có cùng một vấn đề như pgirmess :-( @ gd047: Tôi không có ý tưởng gì về lỗi của bạn, thật vậy. Có lẽ bạn nên thử cài đặt lại ggplot2.Bạn có lỗi tương tự với các tập dữ liệu khác không hoặc các gói? – dalloliogm

Trả lời

16

Một cách tiếp cận khác ngoài kruskal :: agricolae được Marek đề cập, là thử nghiệm Nemenyi-Damico-Wolfe-Dunn được thực hiện trong trang trợ giúp cho oneway_test trong gói tiền xu sử dụng multcomp. Sử dụng thiết lập hadley và giảm B = giá trị cho() chức năng gần đúng để nó kết thúc trong thời gian hữu hạn:

#updated translation of help page implementation of NDWD 
NDWD <- 
    independence_test(dv ~ iv, data = sum_codings1, distribution = approximate(B = 10000), 
          ytrafo = function(data) trafo(data, numeric_trafo = rank_trafo), 
          xtrafo = mcp_trafo(iv = "Tukey")) 


    ### global p-value 
    print(pvalue(NDWD)) 

    ### sites (I = II) != (III = IV) at alpha = 0.01 (page 244) 
    print(pvalue(NDWD, method = "single-step")) 

kết quả ổn định Thông tin thêm về rằng bộ dữ liệu lớn có thể yêu cầu tăng giá trị B và tăng sự kiên nhẫn của người dùng.

Jan: 2012: Gần đây, có một bài đăng trên R-help tuyên bố kết quả không mong muốn từ phương pháp này vì vậy tôi đã chuyển tiếp email đó đến người duy trì.Đánh dấu Difford cho biết ông đã khẳng định các vấn đề và đưa ra một bài kiểm tra thay thế với gói nparcomp: https://stat.ethz.ch/pipermail/r-help/2012-January/300100.html

Có cũng trong cùng một tuần một vài gợi ý khác trên rhelp cho hậu hoc tương phản để kiểm tra KW: kruskalmc suggested by Mario Garrido Escuderorms::polr theo sau là rms::contrasts được đề xuất bởi Frank Harrell https://stat.ethz.ch/pipermail/r-help/2012-January/300329.html

tháng 11 năm 2015: Đồng ý với toto_tico giúp mã trang của gói tiền xu đã được thay đổi trong những năm liền. Trang trợ giúp ?independence_test hiện cung cấp thử nghiệm đa biến KW và trang trợ giúp ?oneway_test đã thay thế triển khai trước đó của nó bằng mã ở trên sử dụng hàm independence_test.

+0

cảm ơn bạn rất nhiều, nhưng tôi không thể tìm thấy bất kỳ tài liệu tham khảo cho các thử nghiệm Nemenyi-Damico-Wolfe-Dunn. Bạn có thể chỉ cho tôi một số tài nguyên không? thanks – dalloliogm

+0

Trang trợ giúp oneway_test (in pkg = coin) trích dẫn mã này: "Kiểm tra Nemenyi-Damico-Wolfe-Dunn (xếp hạng chung) Hollander & Wolfe (1999), trang 244 (trong đó kết quả Steel-Dwass được cung cấp) " Và điều này trong Tài liệu tham khảo: Myles Hollander \ & Douglas A. Wolfe (1999). Phương pháp thống kê Nonparametric, 2nd Edition. New York: John Wiley & Sons. –

+0

@ 42- Không kiểm tra Tukey cũng giả định tính bình thường và tính đồng nhất của phương sai? Nhưng ở đây bạn đang đề xuất nó sau một thử nghiệm phi tham số (Kruskal-Wallis). Hơn nữa, 'oneway_test' (với ước lượng Monte Carlo aproximation, tức là' distribution = approximate (B = 1000) ') cũng không tham số. Làm thế nào đến Tukey là tốt cho trường hợp này? –

1

Rất tiếc, tôi không biết chức năng như thế này. Nếu chưa có, nó sẽ là một nhiệm vụ thú vị để xây dựng một hàm trả về một ma trận với tất cả các so sánh điều trị theo cặp. Một sự tương phản được coi là đáng kể nếu sự bất bình đẳng sau đây được thỏa mãn

alt text http://www.statsdirect.com/help/image/stat0199_wmf.gif

trong đó T là kiểm tra thống kê Kruskal-Wallis cho mẫu k, S^2 là mẫu số của thống kê T, N là tổng số (tất cả ni) và Ri là tổng của các cấp bậc (từ tất cả các mẫu gộp chung) cho mẫu thứ i, và t là một định lượng từ phân bổ Student t trên mức độ tự do Nk.

Tôi biết tôi không giúp được gì nhiều :)
Tôi cũng đang chờ đợi một câu trả lời tốt hơn

+1

cảm ơn bạn rất nhiều, bất kỳ câu trả lời nào cũng được chào đón :-) – dalloliogm

1

Tôi đã có thể nghĩ bạn muốn có thể làm như sau:

data(diamonds, package = "ggplot2") 

library(coin) 
library(multcomp) 

kt <- kruskal_test(price ~ clarity, data = diamonds) 
glht(kt, mcp(clarity = "Tukey")) 

Nhưng có vẻ như multcomp không hỗ trợ các đối tượng coin (chưa?).

+0

? glht nói "Giả thuyết tuyến tính tổng quát và so sánh nhiều đối với ** mô hình ** tham số ...", nhưng kiểm tra Kruskal Wallis là phép thử * không ** - tham số. – Martin

+0

@Martin nhưng hãy xem các tác giả của hai gói ... – hadley

+0

Cảm ơn bạn đã trả lời mặc dù bài đăng origonal đã lâu lắm rồi - tôi cũng đang xử lý một vấn đề tương tự. Có lẽ tôi là một người dốt nát hoàn toàn - nhưng tôi có thể yêu cầu bạn cụ thể hơn một chút, tôi đánh giá cao sự giúp đỡ nào. – Martin

2

Bạn có thể sử dụng gói PMCMR. There là thông tin thêm về nó.

Spelling_Grades <- c(90,87,89,90,75,88,97,99,78,85,72,76,77,79,70) 
Methods <- c("A","A","A","A","B","B","B","B","B","B","C","C","C","C","C") 
kruskalmc(Spelling_Grades~Methods) 

#This method doesn't accept characters that's why I've changed the methods to integer 
Methods <- c(1,1,1,1,2,2,2,2,2,2,3,3,3,3,3) 
posthoc.kruskal.nemenyi.test(Spelling_Grades~Methods) 

Hai phương pháp trên cung cấp kết quả tương tự.

Các vấn đề liên quan