2017-08-31 63 views
0

我很新的R和完全新的這個網站,所以我真的希望我巧妙地傳達我的問題以明確的方式。事後具體的配對比較後韋爾奇的ANOVA

以下是我的數據集的一部分:

A1<-c(0.308, 0.3624, 0.1861, 0.6176, 0.0506, 0.1014, 0.2245, 0.1894, 0.246, 0.1795) 
A2<-c(0.0785, 0.1583, 0.1803, 0.0538, 0.0534, 0.0646, 0.0902, 0.0307, 0.2002, 0.1135, 0.0862) 
B1<-c(0.293, 0.2159, 0.1919, 0.1904, 0.1274, 0.1482, 0.1579, 0.3284, 0.1948, 0.3159, 0.1764, 0.0403) 
B2<-c(0.0741, 0.0601, 0.0273, 0.077, 0.1214, 0.0837, 0.0521, 0.0746, 0.0733, 0.0403, 0.0544) 

數據是正態分佈的,但顯示異,所以我創建一個數據幀後,用ANOVA與韋爾奇的修正:

(X <- data.frame(Y = c(A1,A2,B1,B2), Group = rep(c("A1", "A2", "B1", "B2"), times = c(length(A1), length(A2), length(B1), length(B2))))) 
oneway.test(Y ~ Group, data = X) 

    One-way analysis of means (not assuming equal variances) 

data: Y and Group 
F = 12.346, num df = 3.000, denom df = 19.002, p-value = 0.0001037 

然後,我使用了具有非合併標準偏差(由於異方差性)的成對t檢驗用於事後比較

with(X, pairwise.t.test(Y, Group, pool.sd=FALSE)) 

    Pairwise comparisons using t tests with non-pooled SD 

data: Y and Group 

    A1  A2  B1  
A2 0.05617 -  -  
B1 0.40115 0.01665 -  
B2 0.02360 0.17723 0.00089 

P value adjustment method: holm 

我的問題是我並不是真的對所有的比較感興趣,我真的只想比較A1和A2,B1和B2等等。 我的數據集還包括C1 & 2,D1 & 2和E1 & 2,所以我失去通過p值調整看到的是,t檢驗運行爲45對相當一些意義。

我當然可以只運行每個t檢驗我通過t.test()功能感興趣seperately和手動調節的p值。不過,我很快就會有一個類似但更大的數據集,這是一項非常乏味的工作。所以我想知道在R中是否有選項來選擇pairwise.t.test()中包含哪些比較,或者是否有另一個使這成爲可能的事後選項。

任何意見將不勝感激。

回答

0

這裏有一個快速的方法

Z <- split(X, substr(X$G, 1, 1)) # split your data frame into a list of data frames 
ans <- lapply(Z, function(A) with(A, pairwise.t.test(Y, Group, pool.sd=FALSE))) 

輸出

您想要的兩兩比較的列表($ A組,$ B組)

$A 
     Pairwise comparisons using t tests with non-pooled SD 
data: Y and Group 

    A1 
A2 0.019 

P value adjustment method: holm 

$B 
     Pairwise comparisons using t tests with non-pooled SD 
data: Y and Group 

    B1  
B2 0.00015 

P value adjustment method: holm 
+0

感謝您的回答 雖然代碼工作正常,但p值並未實際調整。如果我做單個t.tests,我會得到相同的結果。 這是兩個比較,所以最低p值應該乘以2,以holm得到調整後的p值。 對於B比較,調整後的p值應該爲:0.0002966 – OCSee