2016-03-03 30 views
1

我想在R中執行bootstrapped配對t檢驗。我嘗試過使用參數配對t檢驗返回p < .05的多個數據集,但是當我運行bootstrap時,我得到的p值介於0.4和0.5。我運行這個不正確嗎?如何在R中執行引導配對t檢驗?

differences<-groupA-groupB 
    t.test(differences) #To get the t-statistic e.g. 1.96 

    Repnumber <- 10000     
    tstat.values <- numeric(Repnumber)  
    for (i in 1:Repnumber) { 
    group1 = sample(differences, size=length(differences), replace=T) 
    tstat.values[i] = t.test(group1)$statistic 
    } 

    #### To get the bootstrap p-value compare the # of tstat.values 
    greater (or lesser) than or equal to the original t-statistic divided 
    by # of reps: 

    sum(tstat.values<=-1.96)/Repnumber 

謝謝!

回答

1

它看起來像你比較蘋果和橘子。對於differences的單個t檢驗,您將得到一個t統計量,如果大於臨界值,則表示group1group2之間的差異是否與零差異顯着。您的引導代碼執行相同的操作,但對於10,000個自舉樣本differences,您可以估計來自differences總體的不同隨機樣本中t統計量的變化。如果您採用這些自助式t統計量的均值(mean(tstat.values)),則會看到它與來自整個differences樣本的單個t統計量大致相同。

sum(tstat.values<=-1.96)/Repnumber爲您提供小於-1.96的自舉t統計的百分比。這是從您的人口重複隨機樣本中獲得t統計量小於-1.96的時間百分比的估計值。我認爲這實際上是對於給定的樣本量和顯着性水平,檢測給定大小在group1group2之間差異的測試能力的估計值,儘管我不確定這樣的功效分析有多強大。

在正確引導t檢驗方面,我認爲你實際需要做的是某種排列檢驗,檢查你的實際數據是否是異常數據,比較重複地對數據進行洗牌並做一個對每個混洗數據集進行t檢驗。您可能想問一個關於CrossValidated的問題,以獲得有關如何正確處理數據的建議。這些CrossValidated答案可能有所幫助:here,herehere

+0

謝謝。引導時是否需要保留這些對?如果不是,我可以重寫這個。 – Sebastian112