我正在使用配对t检验比较来自3个实验的测量值。
但是,如果缺少某些值(NA
)
数据:
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)
请注意,G1 / 2/3不是独立测量,而是代表已测试的不同基因。它们没有关系,每个G都需要一个t.test它自己。
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
我理解为什么S1 / 2和S3之间没有G1 / 2的比较,因为缺少值。但是,我不明白为什么没有比较S1和S2的结果?
谢谢!
答案 0 :(得分:0)
对于pairwise.t.test
,您需要一个响应和一个分组向量;所以问题在于数据格式,而不是NA
。您只需相应地转换dat
的数据(有关详情,请参阅?pairwise.t.test
)。
以下是使用基本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
请注意,NA
将自动省略(默认情况下)。