gpt4 book ai didi

r - R 中的多重 T 检验

转载 作者:行者123 更新时间:2023-12-03 07:21:49 26 4
gpt4 key购买 nike

我的矩阵中有 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 组之间是否存在差异,并且我想对所有蛋白质执行此操作。我正在考虑使用 apply,但我不知道如何使用它。而且名称不是 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"))

最佳答案

尝试如下:

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 意图添加了一列蛋白质名称,并将其从 rowname 中删除,这样就不会' t 在 print()

处出现两次

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

关于r - R 中的多重 T 检验,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31139838/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com