Saya mencoba untuk memahami output dari fungsi tes Kolmogorov-Smirnov (dua sampel, dua sisi). Ini tes sederhana.
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
Ada beberapa hal yang tidak saya mengerti di sini.
Dari bantuan itu, tampaknya nilai-p merujuk pada hipotesis
var1=var2
. Namun, ini berarti bahwa tes tersebut mengatakan (p<0.05
):Sebuah. Tidak bisa mengatakan itu
X = Y
;b. Dapat mengatakan itu
X = Z
;c. Tidak bisa mengatakan itu
X = X
(!)
Selain muncul bahwa x berbeda dari dirinya sendiri (!), Juga cukup aneh bagi saya bahwa x=z
, karena kedua distribusi memiliki nol dukungan yang tumpang tindih. Bagaimana mungkin?
Menurut definisi tes,
D
harus ada perbedaan maksimum antara dua distribusi probabilitas, tetapi misalnya dalam kasus(x,y)
itu harusD = Max|P(x)-P(y)| = 4
(dalam kasus ketikaP(x)
,P(y)
tidak dinormalisasi) atauD=0.3
(jika mereka dinormalisasi). Kenapa D berbeda dari itu?Saya sengaja membuat contoh dengan banyak ikatan , karena data yang saya kerjakan memiliki banyak nilai yang identik. Mengapa ini membingungkan tes? Saya pikir itu menghitung distribusi probabilitas yang tidak boleh dipengaruhi oleh nilai yang diulang. Ada ide?
sumber
dgof::ks.test(x,y,simulate.p.value=TRUE, B=1000)
danMatching::ks.boot(x,y, nboots=1000)
( sekhon.berkeley.edu/matching/ks.boot.html ). Baik D dan nilai p yang dihitung benar-benar identik dalam kedua kasus. Ini membuat saya berpikir bahwa mungkin KS tidak terlalu buruk, bahkan ketika seseorang memiliki beberapa ikatan dan metode ini tidak dijamin berhasil? Alasan mengapa saya suka KS adalah karena itu bukan parametrik, yaitu saya tidak perlu berasumsi distribusi untuk sampel.D(x,y) = sqrt(100/20)*0.3=0.67
, yang masih berbeda.Untuk menghitung D (dari
ks.test
kode):sumber