Я прочитал много постов, связанных с обработкой данных и «повторным» t-тестом, но я не могу понять, как добиться этого в моем случае.
Вы можете получить мой пример набора данных для StackOverflow здесь: https://www.dropbox.com/s/0b618fs1jjnuzbg/dataset.example.stckovflw.txt?dl=0
У меня есть большой массив данных выражения gen, такой как:
> b<-read.delim("dataset.example.stckovflw.txt")
> head(b)
animal gen condition tissue LogFC
1 animalcontrol1 kjhss1 control brain 7.129283
2 animalcontrol1 sdth2 control brain 7.179909
3 animalcontrol1 sgdhstjh20 control brain 9.353147
4 animalcontrol1 jdygfjgdkydg21 control brain 6.459432
5 animalcontrol1 shfjdfyjydg22 control brain 9.372865
6 animalcontrol1 jdyjkdg23 control brain 9.541097
> str(b)
'data.frame': 21507 obs. of 5 variables:
$ animal : Factor w/ 25 levels "animalcontrol1",..: 1 1 1 1 1 1 1 1 1 1 ...
$ gen : Factor w/ 1131 levels "dghwg1041","dghwg1086",..: 480 761 787 360 863 385 133 888 563 738 ...
$ condition: Factor w/ 5 levels "control","treatmentA",..: 1 1 1 1 1 1 1 1 1 1 ...
$ tissue : Factor w/ 2 levels "brain","heart": 1 1 1 1 1 1 1 1 1 1 ...
$ LogFC : num 7.13 7.18 9.35 6.46 9.37 ...
В каждой группе 5 животных,и у каждого животного есть много количественных генов.(Тем не менее, каждое животное может иметь различный набор количественных генов, но также многие из генов будут общими для животных и групп).
Я хотел бы выполнить t-тест для каждого поколения между моей группой (A, B, C или D) и контрольной группой.Данные должны быть представлены в виде таблицы, содержащей p-значение для каждого гена в каждой группе.
Поскольку у меня столько генов (тысяч), я не могу подгруппировать каждый ген.
У васзнаете, как я могу автоматизировать процедуру?
Я думал о цикле, но я абсолютно не уверен, что он может достичь того, что я хочу, и как продолжить.
Кроме того, я посмотрел больше на эти посты, используя функцию apply
: Применение t-критерия ко многим столбцам в кадре данных, разделенных на коэффициенты и Циклическая проверка t.testsдля подмножеств фрейма данных в r
# ################ дополнительная информация после прочтения первых комментариев и ответов:
@ andrew_reece: Большое спасибо за это,Это почти то, что я искал.Однако я не могу найти способ сделать это с помощью t-критерия.ANOVA - это интересная информация, но тогда мне нужно будет узнать, какая из обработанных групп значительно отличается от моей контрольной группы.Также мне нужно было бы знать, какая из обработанных групп значительно отличается друг от друга, «два на два».
Я пытался использовать ваш код, изменив «aov (..)» в «t.тестовое задание(…)".Для этого сначала я реализую подмножество (b, условие == "контроль" | условие == "обработка A"), чтобы сравнить только две группы.Однако при экспорте таблицы результатов в CSV-файл эта таблица недоступна для понимания (без имени поколения, без значений p и т. Д., Только числа).Я буду продолжать искать способ сделать это правильно, но до сих пор я застрял.
@ 42:
Большое спасибо за эти советы.Это просто пример набора данных, давайте предположим, что нам нужно использовать отдельные t-тесты.
Это очень полезное начало для изучения моих данных.Например, я пытался представить свои данные с помощью Venndiagrams.Я могу написать свой код, но это отчасти из начальной темы.Кроме того, я не знаю, как суммировать менее придирчивый общий ген, обнаруженный в каждой комбинации условий, поэтому я упростил только 3 условия.
# Visualisation of shared genes by VennDiagrams :
# let's simplify and consider only 3 conditions :
b<-read.delim("dataset.example.stckovflw.txt")
b<- subset(b, condition == "control" | condition == "treatmentA" | condition == "treatmentB")
b1<-table(b$gen, b$condition)
b1
b2<-subset(data.frame(b1, "control" > 2
|"treatmentA" > 2
|"treatmentB" > 2 ))
b3<-subset(b2, Freq>2) # select only genes that have been quantified in at least 2 animals per group
b3
b4 = within(b3, {
Freq = ifelse(Freq > 1, 1, 0)
}) # for those observations, we consider the gene has been detected so we change the value 0 regardless the freq of occurence (>2)
b4
b5<-table(b4$Var1, b4$Var2)
write.csv(b5, file = "b5.csv")
# make an intermediate file .txt (just add manually the name of the cfirst column title)
# so now we have info
bb5<-read.delim("bb5.txt")
nrow(subset(bb5, control == 1))
nrow(subset(bb5, treatmentA == 1))
nrow(subset(bb5, treatmentB == 1))
nrow(subset(bb5, control == 1 & treatmentA == 1))
nrow(subset(bb5, control == 1 & treatmentB == 1))
nrow(subset(bb5, treatmentA == 1 & treatmentB == 1))
nrow(subset(bb5, control == 1 & treatmentA == 1 & treatmentB == 1))
library(grid)
library(futile.logger)
library(VennDiagram)
venn.plot <- draw.triple.venn(area1 = 1005,
area2 = 927,
area3 = 943,
n12 = 843,
n23 = 861,
n13 = 866,
n123 = 794,
category = c("controls", "treatmentA", "treatmentB"),
fill = c("red", "yellow", "blue"),
cex = 2,
cat.cex = 2,
lwd = 6,
lty = 'dashed',
fontface = "bold",
fontfamily = "sans",
cat.fontface = "bold",
cat.default.pos = "outer",
cat.pos = c(-27, 27, 135),
cat.dist = c(0.055, 0.055, 0.085),
cat.fontfamily = "sans",
rotation = 1);