如何执行 pvalue t 检验并标准化 R 中的表

问题描述 投票:0回答:1

我有一张这样的桌子:

                      a_25    a_26    a_27    a_28    a_29    a_30
ENST00000673902.1       26      38      40      38      36      63
ENST00000618500.4        0       0       0       0       0       0
ENST00000420646.6        0      26       0     115       0     220
ENST00000394991.8     3496    2272    4848    2508    2427    3024
ENST00000336904.7       19       0      40      43      61       0
ENST00000394989.6        0       0      27       0       0      40
ENST00000673766.1      220     274     321     338     248     304
ENST00000673718.1       56     197     603     176     437      43
ENST00000674129.1      743     538    1047     202     276     269
ENST00000345009.8        0       0       0       0       0       0
ENST00000394986.5       85      97     277      10      41      63
ENST00000508895.5     3034    2152    5165    1231    1245    1814
ENST00000506244.5      554     283     276     247     248     182
ENST00000505199.5        0       0       0       0       0       0
ENST00000611107.1        0       0       0       0       0       0
ENST00000502987.5      113     128     213     127     139     144
ENST00000506691.1      212     170     397      87     106     126
ENSRNOT00000039247    1623    1230    2239    1413    1573    1611
ENSRNOT00000118428       0       0       0     106     119     132

我想首先对其进行标准化,然后对我有一个 con1 (样本 a_25 a_26 a_27)和第二个 con2 (样本 a_28 a_29 a_30)的两个条件执行 t 检验。如何在 R 中做到这一点?

我尝试使用 cpm 进行标准化

Norm_count <- edgeR::cpm(Counts,log10 = T)

但结果是奇怪的大数字!什么样的归一化是正确的以及如何对每个 ENST0000X 执行 t 检验让我们说并导出 p 值以查看 R 中条件之间的统计显着性?

r
1个回答
0
投票

apply
为每一行提供一个匿名函数,该函数首先检查每组值的方差,如果不为零,则运行 t 检验。结果将输出到列表中,并且可以像任何其他列表一样访问。

con1_cols <- 1:3
con2_cols <- 4:6

tst_list <- apply(df1, 1L, \(x) {
  con1 <- x[con1_cols]
  con2 <- x[con2_cols]
  if(var(con1) > 0L && var(con2) > 0L) {
    t.test(con1, con2)
  } else invisible(NULL)
})

tst_list$ENST00000673902.1
#> 
#>  Welch Two Sample t-test
#> 
#> data:  con1 and con2
#> t = -1.1312, df = 2.9522, p-value = 0.3414
#> alternative hypothesis: true difference in means is not equal to 0
#> 95 percent confidence interval:
#>  -42.23167  20.23167
#> sample estimates:
#> mean of x mean of y 
#>  34.66667  45.66667
tst_list[[1]]
#> 
#>  Welch Two Sample t-test
#> 
#> data:  con1 and con2
#> t = -1.1312, df = 2.9522, p-value = 0.3414
#> alternative hypothesis: true difference in means is not equal to 0
#> 95 percent confidence interval:
#>  -42.23167  20.23167
#> sample estimates:
#> mean of x mean of y 
#>  34.66667  45.66667

创建于 2024-04-26,使用 reprex v2.1.0


数据

df1 <- "                   a_25 a_26 a_27 a_28 a_29 a_30
ENST00000673902.1       26      38      40      38      36      63
ENST00000618500.4        0       0       0       0       0       0
ENST00000420646.6        0      26       0     115       0     220
ENST00000394991.8     3496    2272    4848    2508    2427    3024
ENST00000336904.7       19       0      40      43      61       0
ENST00000394989.6        0       0      27       0       0      40
ENST00000673766.1      220     274     321     338     248     304
ENST00000673718.1       56     197     603     176     437      43
ENST00000674129.1      743     538    1047     202     276     269
ENST00000345009.8        0       0       0       0       0       0
ENST00000394986.5       85      97     277      10      41      63
ENST00000508895.5     3034    2152    5165    1231    1245    1814
ENST00000506244.5      554     283     276     247     248     182
ENST00000505199.5        0       0       0       0       0       0
ENST00000611107.1        0       0       0       0       0       0
ENST00000502987.5      113     128     213     127     139     144
ENST00000506691.1      212     170     397      87     106     126
ENSRNOT00000039247    1623    1230    2239    1413    1573    1611
ENSRNOT00000118428       0       0       0     106     119     132"
df1 <- read.table(text = df1, header = TRUE)

创建于 2024-04-26,使用 reprex v2.1.0

© www.soinside.com 2019 - 2024. All rights reserved.