【问题标题】:Multiple T-test in RR中的多重T检验
【发布时间】:2015-09-17 08:13:02
【问题描述】:

我在矩阵中有 94 个变量(样本+蛋白质+组)和 172 个观察值:

Sample   Protein1   Protein2 ... Protein92 Group
1          1.53      3.325   ...   5.63      0
2          2.32      3.451   ...   6.32      0
.
. 
.
103        3.24      4.21    ...   3.53      0               
104        3.44      5.22    ...   6.78      1
.
.
.
192        6.75      4.34    ...   6.15      1

有些样本在第 0 组,有些在第 1 组。我想使用 t 检验测试第 0 组和第 1 组之间是否存在差异,并且我想对所有蛋白质进行测试。我正在考虑使用应用程序,但我不确定如何使用它。 名称也不是 Protein1, protein2... ,它要长得多,所以我不想把它们都写出来。

我也只想要矩阵中每个蛋白质的 p 值,如下所示:

Protein  p-value
Protein1   0.00563
Protein2   0.0640
.
.
Protein92  0.610

或类似的东西,这样我就可以找到 p 值低于 0.05/92 的那些。


编辑:

开始以长格式工作这件事不再是问题了:

library(tidyverse)

df %>%
gather(Protein, Value,-Sample,-Group)) %>%
group_by(Protein) %>%
do(broom::tidy(t.test(Value ~ Group, data = .))) %>%
ungroup() %>% 
mutate(Adjusted_pval = p.adjust(p.value, method = "fdr"))

【问题讨论】:

标签: r hypothesis-test


【解决方案1】:

尝试类似:

sapply(df[,2:93], function(i) t.test(i ~ df$Group)$p.value)

将返回一个 p.value 数组。

您可以将其存储为 data.frame 并通过执行以下操作查找低 p 值:

x <- data.frame(p.value= sapply(df[,2:93], function(i) t.test(i ~ df$Group)$p.value))
x$protein_name <- rownames(x) # edit: new column for protein_name 
rownames(x) <- NULL           # edit: new column for protein_name
x[x$p.value < 0.05/92,]

请注意,数组元素的名称和数据框的行名称保留 Protein1、Protein2 等。编辑:我为每个 OP 意图添加了一个蛋白质名称列,并将其从行名中删除,因此它不会t 在print() 出现两次

附:很高兴看到您正在调整多重比较的 p 值。

【讨论】:

    猜你喜欢
    • 2018-02-28
    • 2013-05-01
    • 1970-01-01
    • 2014-05-30
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    • 2021-01-24
    相关资源
    最近更新 更多