2017-08-31 4 views
0

Ich bin ziemlich neu in R und ganz neu auf dieser Website, also hoffe ich wirklich, dass ich meine Frage klar und verständlich vermitteln kann.post hoc für bestimmte paarweise Vergleiche nach welch's anova

Das folgende ist ein Teil meiner Datensatz:

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) 

die Daten normalverteilt sind, jedoch zeigen heteroscedasticity, so habe ich eine ANOVA mit Welcher Korrektur nach einem Datenrahmen zu erstellen:

(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 

Dann verwendete ich einen paarweisen t-Test mit nicht gepoolten Standardabweichungen (wegen der Heteroskedastizität) für die Post-hoc-Vergleiche

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 

Mein Problem ist, dass ich mich nicht wirklich für alle Vergleiche interessiere, ich möchte wirklich nur A1 mit A2, B1 mit B2 und so weiter vergleichen. Mein Datensatz enthält auch C1 & 2, D1 & 2 und E1 & 2, so dass ich durch die p-Wert-Anpassung eine gewisse Bedeutung verliere, da der t-Test für 45 Paare ausgeführt wird.

Ich könnte natürlich einfach jeden t-tests durchführen, die mich interessieren, separat über die t.test() Funktion und die p-Werte manuell einstellen. Ich werde jedoch bald einen ähnlichen, aber größeren Datensatz haben, was eine sehr langweilige Arbeit ist. Also habe ich mich gefragt, ob es eine Option in R gibt, um auszuwählen, welche Vergleiche in der pairwise.t.test() enthalten sind, oder ob es eine andere Post-hoc-Option gibt, die dies ermöglicht.

Jeder Rat würde sehr geschätzt werden.

Antwort

0

Hier ist ein schneller Weg,

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))) 

Ausgabe

Eine Liste Ihrer gewünschten paarweise Vergleiche ($ A-Gruppe, $ B-Gruppe)

$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

Danke für die Antwort Obwohl der Code gut funktioniert, werden die p-Werte nicht wirklich angepasst. Ich erhalte die gleichen Ergebnisse, wenn ich Einzeltests mache. Dies sind zwei Vergleiche, daher sollte der niedrigste p-Wert mit 2 multipliziert werden, um den angepassten p-Wert von holm zu erhalten. Für den B-Vergleich sollte der eingestellte p-Wert: 0,0002966 sein – OCSee

Verwandte Themen