2017-11-28 2 views
0

Ich vergleiche Messungen von 3 Experimenten mit gepaarten t-Test. Ich bin jedoch keine Ergebnisse erhalten, wenn einige Werte fehlen (sind NA)Gepaart t.test gibt kein Ergebnis für NA

Daten:

dat <- read.table(text='sample G1 G2 G3 
S1 0.002458717 0.01045769 0.003770503 
S2 0.010009784 0.02465088 0.011505804 
S3 NA   NA   0.006403423 
S1 0.003458717 0.01145769 0.004770503 
S2 0.011009784 0.02565088 0.012505804 
S3 NA   NA   0.007403423 
S1 0.001458717 0.00945769 0.002770503 
S2 0.009009784 0.02365088 0.010505804 
S3 NA   NA   0.0054034232', header=TRUE) 

Beachten Sie, dass G1/2/3 sind nicht unabhängige Messungen, sondern verschiedene Gene darstellen, die getestet wurden . Sie sind nicht verwandt und jedes G benötigt einen t.test für sich.

t.test:

sig<-lapply(dat[-1], function(x) 
    pairwise.t.test(x, dat$sample, 
        p.adjust.method = "BH")) 



> sig 
    $G1 

     Pairwise comparisons using t tests with pooled SD 

    data: x and dat$sample 

     S1 S2 
    S2 - - 
    S3 - - 

    P value adjustment method: BH 

    $G2 

     Pairwise comparisons using t tests with pooled SD 

    data: x and dat$sample 

     S1 S2 
    S2 - - 
    S3 - - 

    P value adjustment method: BH 

    $G3 

     Pairwise comparisons using t tests with pooled SD 

    data: x and dat$sample 

     S1  S2  
    S2 0.00024 -  
    S3 0.01803 0.00117 

P value adjustment method: BH 

Ich verstehe, warum es keinen Vergleich zwischen S1/2 und S3 für G1/2, da die Werte fehlen. Ich verstehe jedoch nicht, warum es kein Ergebnis für den Vergleich von S1 und S2 gibt?

Vielen Dank!

+1

können Sie NA entfernen? 'lapply (2: 4, Funktion (x) { tmp <- na.omit (dat [, c (1, x)]) pairwise.t.test (tmp [, 2], tmp $ Beispiel) }) ' – Jimbou

+0

Sie benötigen mindestens 2 Beobachtungen pro Gruppe um p Werte zu erhalten. In Ihrem Beispiel fehlt S3 komplett für G1 und G2. Entferne daher Faktorstufen mit Beobachtungen <2. – Jimbou

+0

Danke @Jimbou. Ich weiß, dass ich mindestens 2 Beobachtungen benötige, und deshalb werde ich keine p-Werte für Vergleiche zwischen Gruppen bekommen, in denen eine Gruppe NAs hat, das ist kein Problem. Ich erhalte jedoch keine p-Werte, auch wenn Gruppen mit 3 Beobachtungen verglichen werden (S1 vs. S2). Ich werde versuchen, Ihre Lösung zu implementieren, die NA –

Antwort

0

Für pairwise.t.test benötigen Sie eine Antwort und einen Gruppierungsvektor; so ist das Problem mit dem Datenformat und nicht mit dem NA s. Sie müssen nur Daten von dat entsprechend konvertieren (siehe ?pairwise.t.test für weitere Details).

Hier ist eine Möglichkeit unter Verwendung der Basisfunktion R stack:

# Convert wide to long dataframe, then select values 
val <- stack(dat, select = -sample)$values; 

# Sample labels (the grouping vector) 
grp <- rep(dat$sample, 3); 


pairwise.t.test(val, grp, p.adjust.method = "BH"); 
#  
#  Pairwise comparisons using t tests with pooled SD 
#  
#data: val and grp 
# 
# S1  S2 
#S2 0.0031 - 
#S3 0.8160 0.0319 

anzumerken, dass NA s automatisch (Standard) weggelassen wird.

+0

Hi entfernt. Dank dafür. Ich denke, mein Beispiel war nicht klar, G1/2/3 sind eigentlich nicht verwandt. Sie sind nicht die 3 Messungen, die ich vergleichen möchte. Aus diesem Grund wurde für jede Spalte ein paarweiser t-Test durchgeführt. Die Daten sind tatsächlich in einem langen Format –