R

你能計算出 R 中 Kolmogorov-Smirnov 檢驗的功效嗎?

  • March 24, 2015

是否可以對 R 中的 2 面 Kolmogorov Smirnov 檢驗進行功效分析?

我正在使用 ks.test() 測試兩個經驗分佈是否不同,並希望添加功率分析。

我無法在 R 中找到任何用於 KS 測試的內置功率分析。有什麼建議嗎?

編輯:這些是隨機生成的分佈,非常接近我的數據(具有真實樣本大小和估計的指數分佈衰減率)

set.seed(100)
x <- rexp(64, rate=0.34)
y <- rexp(54,rate=0.37)

#K-S test: Do x and y come from same distribution?
ks.test(x,y)

這些數據是對兩個不同組的體型的測量。我想證明這兩個群體的分佈基本相同,但一位合作者問我是否有能力根據樣本量說出這一點。我從這裡的指數分佈中隨機抽取,但這些接近真實數據。

到目前為止,我已經說過基於雙邊 KS 測試的這些分佈沒有顯著差異。我還繪製了兩個分佈。考慮到 x 和 y 的樣本量和衰減率,我如何證明我有能力做出這樣的陳述?

尋找針對指數規模轉移替代方案的能力相當簡單。

但是,我不知道您應該使用數據中計算出的值來計算功率可能是多少。這種事後的權力計算往往會導致違反直覺(並且可能具有誤導性)的結論。

權力和顯著性水平一樣,是你在事前處理的現象;您將使用先驗理解(包括理論、推理或任何先前的研究)來決定要考慮的一組合理的替代方案和理想的效果大小

您還可以考慮各種其他替代方案(例如,您可以將指數嵌入伽馬族中,以考慮或多或少偏斜情況的影響)。

人們可能試圖通過功效分析來回答的常見問題是:

1)對於給定的樣本量,在某些效應量或一組效應量*下的功效是多少?

  1. 給定樣本大小和功效,可檢測到多大的影響?

  2. 給定特定效應大小的所需功效,需要多大的樣本量?

*(這裡的“效果大小”是泛指的,例如,可能是特定的均值比率或均值差異,不一定是標準化的)。

顯然,您已經有了樣本量,因此您不在情況 (3) 中。您可以合理地考慮案例 (2) 或案例 (1)。

我建議案例(1)(這也提供了一種處理案例(2)的方法)。

為了說明案例 (1) 的方法並了解它與案例 (2) 的關係,讓我們考慮一個具體示例,其中:

  • 規模轉移替代方案
  • 指數種群
  • 64 和 54 兩個樣本中的樣本量

因為樣本大小不同,我們必須考慮其中一個樣本中的相對散佈既小於 1 又大於 1 的情況(如果它們的大小相同,對稱性考慮可以只考慮一側)。但是,因為它們的大小非常接近,所以效果非常小。在任何情況下,固定其中一個樣本的參數並改變另一個。

所以一個人做的是:

預先:

choose a set of scale multipliers representing different alternatives
select an nsim (say 1000)
set mu1=1

要進行計算:

for each possible scale multiplier, kappa 
 repeat nsim times
   generate a sample of size n1 from Exp(mu1) and n2 from Exp(kappa*mu1)
   perform the test
 compute the rejection rate across nsim tests at this kappa

在 R 中,我這樣做了:

alpha = 0.05
n1 = 54
n2 = 64
nsim = 10000
s = c(1.1,1.2,1.5,2,2.5,3) # set up grid for kappa
s = c(1/rev(s),1,s)        # also below and at 1
rr = array(NA,length(s))   # to hold rejection rates

for(i in seq_along(s)) rr[i]=mean(replicate(nsim,
                                   ks.test(rexp(n1,1),rexp(n2,s[i]))$p.value)<alpha
                                )

plot(rr~s,log="x",ylim=c(0,1),type="n") #set up plot
points(rr~rev(s),col=3) # plot the reversed case to show the (tiny) asymmetry+noise
points(rr~s,col=1) # plot the "real" case last 
abline(h=alpha,col=8,lty=2) # draw in alpha

這給出了以下功率“曲線”

在此處輸入圖像描述

x 軸是對數刻度,y 軸是拒絕率。

這裡很難說,但左邊的黑點比右邊略高(也就是說,當較大的樣本具有較小的比例時,功率會略微增加)。

使用逆正態 cdf 作為拒絕率的變換,我們可以使變換後的拒絕率與 log kappa 之間的關係(kappas在圖中,但 x 軸是 log-scaled)非常接近線性(除了接近 0 ),並且模擬的數量足夠高,以至於噪音非常低——我們可以忽略它就目前的目的。

所以我們可以只使用線性插值。下面顯示的是樣本大小下 50% 和 80% 功效的近似效應大小:

在此處輸入圖像描述

另一邊的效果大小(較大的組具有較小的比例)僅略微偏離(可以拾取較小的效果大小),但差別不大,所以我不會強調這一點。

所以測試會發現很大的差異(從比例為 1),但不會很小。


現在發表一些評論:我不認為假設檢驗與感興趣的潛在問題特別相關(它們是否非常相似?),因此這些功效計算並沒有告訴我們與該問題直接相關的任何內容。

我認為您通過在操作上預先指定您認為“基本相同”的實際含義來解決這個更有用的問題。- 合理地追求統計活動 - 應該導致對數據進行有意義的分析。

引用自:https://stats.stackexchange.com/questions/143245

comments powered by Disqus