2014-02-14 21 views
6

我從不同的網站獲得了兩個樣本。我感興趣的參數是離散(頻率)。我爲兩個站點都進行了模擬,所以我知道每個站點隨機分佈的概率。由於我的模擬,我知道我的參數與其平均值的偏差不是正態分佈,所以我參加了參數測試。我有一個樣本柯爾莫哥洛夫 - 斯米爾諾夫檢驗樣本中是否可以從這些隨機分佈推導(例如數據,而不是真正的):Kolmogorov-Smirnov測試:在存在關係時應用於離散變量的雙樣本測試的精確p值

sample1 <- rep(1:5, c(25, 12, 12, 0, 1)) 
rand.prob1 <- c(.51, .28, .111, .08, 0.019) 
StepProb1 <- stepfun(0:4, c(0, cumsum(rand.prob1)), right = T) 
dgof::ks.test(sample1, StepProb1) 

sample2 <- rep(1:5, c(19, 13, 10, 5, 3)) 
rand.prob2 <- c(.61, .18, .14, .05, 0.02) 
StepProb2 <- stepfun(0:4, c(0, cumsum(rand.prob2)), right = T) 
dgof::ks.test(sample2, StepProb2) 

在下一步我要檢查,如果這兩個網站的樣本可能派生自相同的分配。對KS-測試(包statsdgof)的兩個implemetations發出警告,因爲我的樣品有關係:

stats::ks.test(sample1, sample2) 
dgof::ks.test(sample1, sample2) 

如果我沒有理解Dufour and Farhat(2001)正確,有計算通過配合精確的p值的方法通過蒙特卡羅模擬破解。如果我正確理解dgof軟件包的軟件包描述,則其實施蒙特卡洛模擬僅適用於單樣本測試。

所以我的問題:是否有人知道如何計算R中的確切的p值,用於當關系存在時應用於離散變量的雙樣本Kolmogorov-Smirnov測試?

或者(雖然與R無關):如果沒有人知道如何以可承受的工作量來做到這一點,我會選擇不正確的p值,因此小心討論結果。但p值低於0.0001。我其實並不過分擔心。但是,我知道什麼......你認爲這是對的還是我在這種情況下犯了嚴重的錯誤?

在此先感謝,我已經感謝您閱讀,直到這裏。

+0

看一看[bootstraped KS檢驗(http://sekhon.berkeley.edu/matching/ks。 boot.html)。 – pbible

回答

4

正如在評論中提到的那樣,function ks.boot of package Matching實現了Bootstrap Kolmogorov-Smirnov,即對參數nboots進行任意次數的重新採樣的Monte Carlo模擬。我認爲這會給你你需要的東西。

+0

自舉已領我到正確的方向和包似乎是在社會上廣爲接受的,所以我會獎勵這個答案與賞金。 – iraserd

+0

感謝您的賞金。 [自舉](http://en.wikipedia.org/wiki/Bootstrapping_(統計))是最強大的統計技術之一,在你的工具箱。我鼓勵大家看看它。 – pbible

+0

謝謝你的建議。提到的軟件包看起來正是我正在尋找的東西。我一定會仔細研究bootstrapping。根據數據 – Jonas

2

不知道你是否可以在這裏申請KS。
Kolmogorov-Smirnov是NON-參數測試,只適用於連續的x和y數據。我猜你的sample1和sample2不夠「連續」。引用?stats::ks.test

如果y爲數字,零假設,即X和從執行相同的連續分佈ý 繪製的兩樣本測試。

另見:

解決方法:嘗試在R進行擬合優度卡方檢驗
?chisq.test做到這一點。
理論例如可以在這裏找到:

+0

Chisq.test可能不適用,如果不連續的觀測值不在兩個數據集是相同的,因爲你需要先建一個應急表? – iraserd

+0

@ iraserd:Thants不幸的是真正的 – Rentrop

+0

有點關係,[足球數字的統計處理(http://www-stat.wharton.upenn.edu/~hwainer/Readings/Frederick%20Lord_On%20the%20statistical%20treatment% 20of%20football%20numbers.pdf)。 – pbible