Mein Datensatz besteht aus Genexpressionswerten, die über 3 Zeitpunkte aufgezeichnet wurden. Ich versuche einen Anova-Test mit Tukey-Korrektur anzuwenden, um nach differenziellen Genexpressionen über die Zeitpunkte zu suchen. So für jedes Gen möchte ich einen Vergleich wie: Gen ein Zeitpunkt 1 vs 2 Gen ein Zeitpunkt 2 vs 3 Gen ein Zeitpunkt 3 vs 1ANOVA innerhalb von Teilmengen von Daten
Meine Daten sind im folgenden Format:
> head(rf)
gene expn timepoint rep
2 EG620009 // EG620009 8.428851 x0hr 0
3 LYPLA1 10.386500 x0hr 0
21 EG620009 // EG620009 8.582346 x0hr 1
31 LYPLA1 10.379710 x0hr 1
22 EG620009 // EG620009 8.566248 x0hr 2
32 LYPLA1 10.399080 x0hr 2
> tail(rf)
gene expn timepoint rep
23 EG620009 // EG620009 8.561409 x24hr 0
33 LYPLA1 10.233400 x24hr 0
24 EG620009 // EG620009 8.750639 x24hr 1
34 LYPLA1 10.023780 x24hr 1
25 EG620009 // EG620009 8.560267 x24hr 2
35 LYPLA1 10.025980 x24hr 2
wenn ich tun waren:
TukeyHSD(aov(rf$expn ~ rf$timepoint * rf$gene))
dies würde mir einen Vergleich zwischen jedem Zeitpunkt über alle Gene dh. einschließlich Vergleiche wie Gen ein Zeitpunkt 1 gegen Gen b Zeitpunkt 2
Ich habe versucht zu erarbeiten, wie die AOV-Funktion auf die Daten-Teilmenge nach Gen anzuwenden. Ich habe eine Funktion definiert, die den p-Wert als Ausgabe gibt und versuchte, das auf jedes Gen einzeln anzuwenden, indem ich die by-Funktion wie unten verwende;
> gene.aov = function(x) {TukeyHSD(aov(expn ~ timepoint, data = x))}
> aov.pval = function(y) {y$timepoint[,4]}
> gene.pval = function(z) {aov.pval(gene.aov(z))}
> pvals = by(rf$expn,list(rf$gene),gene.pval)
> Error in eval(predvars, data, env) :
numeric 'envir' arg not of length one
Irgendein Hinweis, warum das nicht funktioniert? Oder sollte ich dieses Problem ganz anders angehen? Danke!
Großartig, vielen Dank für Ihre Hilfe :) – Sarah