2016-07-10 17 views
1

Ich möchte Fischer-Score der folgenden listenartigen Daten Elementweise erhalten. Ich entschuldige mich, diese statistische Frage von dieser Gemeinschaft zu stellen. Meine Daten enthalten jedoch eine Liste der Überlappungs-Signifikanzwerte von 3 GRanges-Objekten. Ich möchte den globalen Fischer-Score elementweise abrufen. Wie kann ich das in R bekommen?Wie erhält man den globalen Fisher-Score?

Dies sind die Daten, die ich seine globale Punktzahl durch Element erhalten möchten weise:

[[1]] 
NumericList of length 7 
[[1]] 1e-22 
[[2]] 1e-19 
[[3]] 1e-18 
[[4]] 1e-16 
[[5]] 1e-24 
[[6]] 1e-20 
[[7]] 1e-15 

[[2]] 
NumericList of length 7 
[[1]] 1e-24 
[[2]] 1e-24 
[[3]] 1e-20 
[[4]] 1e-25 
[[5]] 0.1 
[[6]] 1e-19 
[[7]] 1e-18 

[[3]] 
NumericList of length 7 
[[1]] 1e-11 
[[2]] 1e-11 
[[3]] 1e-10 
[[4]] numeric(0) 
[[5]] numeric(0) 
[[6]] 1e-15 
[[7]] numeric(0) 

reproduzierbaren Beispiel sind:

numerisch zu ersetzen (0) mit 0, versuchen Sie dies:

v3 <- lapply(v3, function(x) { 
    res <- ifelse(length(x)>0, x, 0) 
}) 

data <- DataFrame(
       v1=c(1e-22,1e-19,1e-18,1e-16,1e-24,1e-20, 1e-15), 
       v2=c(1e-24,1e-24,1e-20,1e-25,0.1,1e-19,1e-18), 
       v3=c(1e-11,1e-11,1e-10,numeric(0),numeric(0),1e-15,numeric(0))) 

meine gewünschte Ausgabe etwas wie (nur Beispiel durch elementweise):

global fisher score of `(1e-22, 1e-24, 1e-11)` = ? 
global fisher score of `(1e-19, 1e-24, 1e-11)` = ? 
... 
global fisher score of `(1e-24, 1e-01, numeric(0))` = ? 

Ich weiß fisher.test Funktion von Basis-Pakete können Fischer genaue Test. aber es braucht Matrix als Eingabe, während ich meine Daten nicht als Matrix machen kann. Ich gebe meine Daten in mein gewünschtes Format für die elementweise Bedienung ein.

Ich möchte globale Fischer Punkte nach Element weise erhalten. Wie kann ich das in R bekommen? Alternativ, wenn ich chisq.test verwende, wie kann ich seine Chi-Quadrat-Statistik elementweise für die obige Datentabelle erhalten? Ich wäre dankbar, wenn mir jemand eine Idee dafür geben könnte.

+0

[Wie man eine große R reproduzierbaren Beispiel?] (Http://stackoverflow.com/questions/5963269) – zx8754

+0

Ist [dies] (http://stackoverflow.com/users/6070577/datageek) Ihr Klassenkamerad, fragte die [gleiche Frage und gelöscht] (http://stackoverflow.com/questions/38280952), obwohl es eine reproduzierbare Beispieldaten hatte: – zx8754

+0

Ich wirklich nicht Ich weiß, anscheinend konnte ich nicht genug Informationen über ihn bekommen, um ID zu kennen. Ich kann diese gelöschte Frage nicht sehen und wusste nicht, dass die Daten, die er bekam, mit mir identisch waren. Allerdings stehe ich vor diesem Problem, wenn ich meine eigene Dienstprogrammfunktion implementiere und diese Probleme lösen muss. Irgendeine Idee für das Problem, das ich aufgeworfen habe? Danke – Jeff

Antwort

3

das ist die Lösung unter Verwendung von Fisher Methode globalen Fischer Punktzahl bekommen:

library(metap) 
comb.pval <- suppressWarnings(
    res <- apply(data[,1:3],1, function(ro) sumlog(ro)$p) 
) 

prost

Jurat