R t-test 2 группы, 3 повторности, каждая с несколькими значениями для сравнения - PullRequest
0 голосов
/ 15 января 2020

У меня есть три образца (повторов) на группу. Я хочу использовать T-тест для сравнения значений (MappedReadsCPM) между группами. Тем не менее, у меня есть 4000 значений для сравнения последовательно (обозначено PeakNumber). Следующая строка близка, но она не говорит R сравнивать только peak_1, а затем только peak_2, et c.

    t.test(MappedReadsCPM~Group, data=subset(data2, Group %in% c("1", "2")))$p.value

Я не хочу печатать 4000 p-значений - в идеале я могу добавить их в фрейм данных.

    pvalues <- t.test(MappedReadsCPM~Group, data=subset(data2, Group %in% c("1", "2")))$p.value

data2

PeakNumber Sample   Group   MappedReadsCPM
peak_1  A   1   43.53819
peak_2  A   1   49.20722
peak_3  A   1   38.54943
peak_4  A   1   99.09472
peak_1  B   2   105.21728
peak_2  B   2   42.63114
peak_3  B   2   78.00591
peak_4  B   2   74.37773
peak_1  C   2   509.30606
peak_2  C   2   101.36234
peak_3  C   2   25.17051
peak_4  C   2   32.8804
peak_1  D   1   35.37478
peak_2  D   1   89.11722
peak_3  D   1   112.24688
peak_4  D   1   386.40139
peak_1  E   3   631.07692
peak_2  E   3   162.58791
peak_3  E   3   46.93961
peak_4  E   3   56.69035
peak_1  F   2   38.7762
peak_2  F   2   261.45587
peak_3  F   2   43.99171
peak_4  F   2   72.11012
peak_1  G   1   118.5962
peak_2  G   1   250.1178
peak_3  G   1   84.35
peak_4  G   1   386.40139

Ответы [ 2 ]

1 голос
/ 15 января 2020

вы можете использовать от sapply до l oop по всем уникальным пикам в ваших данных и подмножеству данных к этому заданному c пику:

pvalues <- sapply(unique(data2$PeakNumber), function(peak){
  t.test(MappedReadsCPM~Group, data=subset(data2, Group %in% c("1", "2") & PeakNumber == peak))$p.value
})
0 голосов
/ 15 января 2020

По вашим данным, t тесты не могут быть запущены для Group == 3. Поэтому я начинаю с поднабора данных, чтобы оставить только группы 1 и 2.

df_12 <- subset(df1, Group != 3)

Теперь split на PeakNumber, а затем lapply тесты. Выходные данные представляют собой список результатов испытаний.

sp <- split(df_12, df_12$PeakNumber)

t_list <- lapply(sp, function(DF){
  t.test(MappedReadsCPM ~ Group, data = DF)
})

Извлекает p-значения из приведенных выше результатов.

pvals <- sapply(t_list, '[[', 'p.value')

pvals
#   peak_1    peak_2    peak_3    peak_4 
#0.4105493 0.9526529 0.3357703 0.1348856 

Окончательная очистка.

rm(df_12, sp)
...