我对 R 非常陌生,需要一些帮助才能完成我想要的分析(我一直在 GraphPad Prism 中进行的分析,但这不能处理大型数据集)。我有一个这样的数据框(简化):
Gene Seq RBP Sites.length
1 Short A 0.26
1 Short B 0.13
1 Short C 0.65
1 Long A 0.00
1 Long B 0.39
1 Long C 1.82
2 Short A 0.13
2 Short B 0.00
2 Short C 0.00
2 Long A 0.89
...etc...
我想知道每个 RBP 的“Short”和“Long”Seq 的平均“Sites.length”值之间是否存在显着差异。我执行了方差分析和 TukeyHSD:
> aov_migr <- aov (Sites.length ~ Seq * RBP, data = my_data)
> migr_hsd <- TukeyHSD (aov_migr)
结果如下所示:
> summary(aov_migr)
Df Sum Sq Mean Sq F value Pr(>F)
Seq 1 0.03 0.031 0.434 0.51
RBP 34 206.86 6.084 86.264 <2e-16 ***
Seq:RBP 34 0.84 0.025 0.351 1.00
Residuals 910 64.18 0.071
> migr_hsd
diff lwr upr p adj
Short:A-Long:A -0.012 -0.430 0.406 1
Long:B-Long:A -0.039 -.0.457 0.379 1
Short:B-Long:A -0.043 -0.460 0.375 1
Long:C-Long:A 0.556 0.138 0.974 8.909e-05
...etc...
问题是我需要 TukeyHSD 仅比较同一 RBP 的“长”和“短”(即仅长:A v 短:A,长:B v 短:B 等),因为其他比较没有意义. 将它们相互比较会增加调整后的 p 值,因为它正在纠正我不希望它执行的无意义比较。
有没有办法告诉 TukeyHSD 数据应该将每个 RBP 的“长”和“短”分组在一起/只比较同一 RBP 的“长”和“短”?
或者是否有另一个测试可以做到这一点?
更新:我已经尝试了许多其他测试,看看我是否可以从 R 中的 Prism Graphpad 复制我的分析 - lme、manova、HSD.test (agricolae)、glht (multcomp)、因子图、SidakSD、Sidak、重复测量方差分析(使用基因、Seq 和 RBP 设置为因子):
RM_aov <- aov(Sites.length ~ Seq * RBP + Error(Gene), data = mydata)
但是没有任何东西可以复制分析,我需要使用 Graphpad Prism 无法处理的更大数据集重复此分析。最接近的是 aov/TukeyHSD(除了上面描述的问题)和一个带有 t.test 的 for 循环(如下所述;但是虽然 Prism 分析中的一个比较给出了显着的结果,但与此的所有比较都不显着):
# separate long and short into separate data frames where the column headers are the RBP names and each row is the Sites.length for a Gene
result <- data.frame()
for (rbp in colnames (short)) {
test.result <- t.test (long [, rbp] - short [, rbp])
result [rbp, 'p'] <- test.result$p.value
}
result$p.adjusted <- p.adjust (result$p, method="bonferroni")
我执行的 Graphpad Prism 分析是:
重复测量双向方差分析(告诉它给定基因的“长”和“短”值匹配)
Sidak 的多重比较检验(但显着性比较在 Bonferroni 和 Holm-Sidak 多重比较检验中也很显着)。
有人可以帮忙吗?