Hiểu thử nghiệm Kolmogorov-Smirnov trong R


17

Tôi đang cố gắng để hiểu đầu ra của hàm kiểm tra Kolmogorov-Smirnov (hai mẫu, hai mặt). Đây là một bài kiểm tra đơn giản.

x <- c(1,2,2,3,3,3,3,4,5,6)
y <- c(2,3,4,5,5,6,6,6,6,7)
z <- c(12,13,14,15,15,16,16,16,16,17)

ks.test(x,y)

#   Two-sample Kolmogorov-Smirnov test
#
#data:  x and y
#D = 0.5, p-value = 0.1641
#alternative hypothesis: two-sided
#
#Warning message:
#In ks.test(x, y) : cannot compute exact p-value with ties

ks.test(x,z)

#Two-sample Kolmogorov-Smirnov test

#data:  x and z
#D = 1, p-value = 9.08e-05
#alternative hypothesis: two-sided
#
#Warning message:
#In ks.test(x, z) : cannot compute exact p-value with ties


ks.test(x,x)

#Two-sample Kolmogorov-Smirnov test

#data:  x and x
#D = 0, p-value = 1
#alternative hypothesis: two-sided
#
#Warning message:
#In ks.test(x, x) : cannot compute exact p-value with ties

Có một vài điều tôi không hiểu ở đây.

  1. Từ sự giúp đỡ , dường như giá trị p đề cập đến giả thuyếtvar1=var2 . Tuy nhiên, ở đây có nghĩa là thử nghiệm nói ( p<0.05):

    a. Không thể nói rằngX = Y ;

    b. Có thể nói rằngX = Z ;

    c. Không thể nói rằng X = X(!)

Bên cạnh việc xuất hiện rằng x khác với chính nó (!), Nó cũng khá lạ đối với tôi x=z, vì hai bản phân phối không hỗ trợ chồng chéo. Làm thế nào là có thể?

  1. Theo định nghĩa của thử nghiệm, Dnên là sự khác biệt tối đa giữa hai phân phối xác suất, nhưng trong trường hợp (x,y)đó phải là D = Max|P(x)-P(y)| = 4(trong trường hợp khi P(x), P(y)không được chuẩn hóa) hoặc D=0.3 (nếu chúng được chuẩn hóa). Tại sao D khác với điều đó?

  2. Tôi đã cố tình làm một ví dụ với nhiều mối quan hệ , vì dữ liệu tôi đang làm việc có rất nhiều giá trị giống hệt nhau. Tại sao điều này gây nhầm lẫn trong bài kiểm tra? Tôi nghĩ rằng nó đã tính toán phân phối xác suất không bị ảnh hưởng bởi các giá trị lặp lại. Bất kỳ ý tưởng?

Câu trả lời:


21

Thử nghiệm KS được đặt ra trước khi thử nghiệm tính "giống nhau" của hai mẫu độc lập từ phân phối liên tục (như trang trợ giúp nêu rõ). Nếu đó là trường hợp thì xác suất của mối quan hệ sẽ nhỏ đáng kinh ngạc (cũng đã nêu). Thống kê kiểm tra là khoảng cách tối đa giữa ECDF của hai mẫu. Giá trị p là xác suất nhìn thấy một thống kê kiểm tra cao hoặc cao hơn so với giá trị quan sát được nếu hai mẫu được rút ra từ cùng một phân phối. (Đây không phải là "xác suất var1 = var2". Và hơn nữa, 1-p_value cũng không phải là xác suất đó.) Giá trị p cao cho biết bạn không thểyêu cầu hỗ trợ thống kê cho một sự khác biệt, nhưng giá trị p thấp không phải là bằng chứng của sự giống nhau. Giá trị p thấp có thể xảy ra với kích thước mẫu thấp (như ví dụ của bạn cung cấp) hoặc sự hiện diện của những khác biệt nhỏ nhưng thú vị, ví dụ như nhiễu loạn dao động chồng chất. Nếu bạn đang làm việc với các tình huống có số lượng lớn các mối quan hệ, điều đó cho thấy bạn có thể cần sử dụng một bài kiểm tra phù hợp hơn với tình huống dữ liệu của mình.

Giải thích của tôi về lý do tại sao các mối quan hệ là vi phạm các giả định không phải là một tuyên bố rằng các mối quan hệ làm mất hiệu lực kết quả. Các thuộc tính thống kê của kiểm tra KS trong thực tế là tương đối kháng hoặc mạnh đối với thất bại của giả định đó. Vấn đề chính với thử nghiệm KS như tôi thấy là nó quá chung chung và hậu quả là không đủ năng lực để xác định sự khác biệt có ý nghĩa của một bản chất thú vị. Bài kiểm tra KS là một bài kiểm tra rất tổng quát và có sức mạnh khá thấp cho các giả thuyết cụ thể hơn.

Mặt khác, tôi cũng thấy thử nghiệm KS (hoặc thử nghiệm "thậm chí mạnh hơn" Anderson Darling hoặc Lillefors (sp?)) Được sử dụng để kiểm tra "tính chuẩn" trong các tình huống mà thử nghiệm như vậy là hoàn toàn không chính đáng, chẳng hạn như thử nghiệm tính quy phạm của các biến được sử dụng làm công cụ dự báo trong mô hình hồi quy trước khi phù hợp. Người ta có thể muốn kiểm tra tính quy phạm của phần một cách hợp pháp vì đó là những gì được giả định trong lý thuyết mô hình hóa. Ngay cả sau đó khởi hành khiêm tốn từ tính bình thường của phần dư thường không thách thức tính hợp lệ của kết quả. Mọi người sẽ tốt hơn khi sử dụng các phương pháp mạnh mẽ để kiểm tra tác động quan trọng của "tính phi quy tắc" đối với kết luận về ý nghĩa thống kê.

Có lẽ bạn nên tham khảo ý kiến ​​của một nhà thống kê địa phương? Nó có thể hỗ trợ bạn xác định câu hỏi thống kê chính xác hơn một chút và do đó có cơ hội xác định sự khác biệt tốt hơn nếu thực sự tồn tại. Đó sẽ là tránh "lỗi loại II": không hỗ trợ kết luận về sự khác biệt khi có sự khác biệt như vậy.



Tôi đã thử nghiệm các ví dụ tương tự cả với dgof::ks.test(x,y,simulate.p.value=TRUE, B=1000)Matching::ks.boot(x,y, nboots=1000)( sekhon.ber siêu.edu / matching /ks.boot.html ). Cả D và giá trị p được tính hoàn toàn giống nhau trong cả hai trường hợp. Điều này khiến tôi nghĩ rằng có lẽ KS không quá tệ, ngay cả khi một người có một vài mối quan hệ và phương pháp không được đảm bảo để hoạt động? Lý do tại sao tôi thích KS không phải là tham số, tức là tôi không cần phải phân phối cho các mẫu.
Nonancourt

Tuy nhiên, tôi vẫn không thể hiểu được các giá trị của D. Tôi nghĩ rằng nó có thể là một tiền tố như sqrt (m * n / (m + n)) như ở đây , nhưng điều đó sẽ khác D(x,y) = sqrt(100/20)*0.3=0.67, vẫn khác.
Nonancourt

3

Để tính D (từ ks.testmã):

ks.test(x,y)

    Two-sample Kolmogorov-Smirnov test

data:  x and y
D = 0.5, p-value = 0.1641
alternative hypothesis: two-sided

alternative <- "two.sided"
x <- x[!is.na(x)]
n <- length(x)
  y <- y[!is.na(y)]
  n.x <- as.double(n)
  n.y <- length(y)
  w <- c(x, y)
  z <- cumsum(ifelse(order(w) <= n.x, 1/n.x, -1/n.y))
  z <- z[c(which(diff(sort(w)) != 0), n.x + n.y)] #exclude ties
  STATISTIC <- switch(alternative, two.sided = max(abs(z)), 
                      greater = max(z), less = -min(z))
  STATISTIC

[1] 0.5
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.