Die Berechnung der paarweisen Korrelationen zwischen allen Spalten
Arbeite ich mit großer Biologischer dataset.
Möchte ich berechnen, PCC(Pearson ' s Korrelationskoeffizient) von allen 2-Säulen-Kombinationen in meinem Daten-Tabelle und speichern Sie das Ergebnis als DataFrame oder CSV-Datei.
Daten Tabelle ist wie folgt:die Spalten sind die Namen der Gene und die Zeilen sind der code dataset. Die float-zahlen bedeuten, wie viel die gene aktiviert, die in das dataset.
GeneA GeneB GeneC ...
DataA 1.5 2.5 3.5 ...
DataB 5.5 6.5 7.5 ...
DataC 8.5 8.5 8.5 ...
...
Als Ausgabe möchte ich zum erstellen der Tabelle(DataFrame oder csv-Datei), wie unten, weil scipy.stats.pearsonr-Funktion gibt (PCC, p-Wert).
In meinem Beispiel XX und YY bedeuten die Ergebnisse der pearsonr([1.5, 5.5, 8.5], [2.5, 6.5, 8.5]). In der gleichen Weise, ZZ und AA-bedeutet das Ergebnis pearsonr([1.5, 5.5, 8.5], [3.5, 7.5, 8.5]). Ich brauche das nicht redundante Daten wie GeneB_GeneA oder GeneC_GeneB in meinem test.
PCC P-value
GeneA_GeneB XX YY
GeneA_GeneC ZZ AA
GeneB_GeneC BB CC
...
Als die Anzahl der Spalten und Zeilen sind viele(über 100) und Ihre Namen sind kompliziert, mit Spaltennamen oder-Zeile Namen, wird schwierig sein.
Könnte es eine einfache Aufgabe für die Experten, ich weiß nicht, wie viel mit dieser Art von Tabelle mit python pandas-Bibliothek. Vor allem die Herstellung des neuen DataFrame und das hinzufügen von Ergebnis scheint sehr schwierig zu sein.
Sorry für meine schlechte Erklärung, aber ich hoffe, dass mir jemand helfen könnte.
- Dies wird hier beantwortet: link
- Vielen Dank für Ihren Kommentar. Ich denke, der Titel war nicht gut genug. Was ich wissen will ist nicht, wie zu berechnen, PCC, aber die Berechnung PCC aller Spalten-pair-Mädchen, und speichern Sie die Ergebnisse als einen neuen DataFrame.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstellung von Stichproben-Daten:
DataFrame
Spalten mititertools.combination(iterable, r)
scipy.stats.stats.personr
dictionary
DataFrame
ausdictionary
Könnte man dann auch sparen
result.to_csv()
. Vielleicht finden Sie es bequem zu verwendenMultiIndex
(zwei Spalten mit den Namen der einzelnen Spalten) anstelle von dem erstellten Namen für die paarweisen Korrelationen.Bekommen Paare, es ist ein
combinations
problem. Sie könnenconcat
alle Zeilen in einem Ergebnisdataframe
.Eine einfache Lösung ist die Verwendung der pairwise_corr Funktion der Pingouin-Paket (die ich erstellt):
Dadurch erhalten Sie einen DataFrame mit allen Kombinationen von Spalten, und für jede von diesen, ist der r-Wert, p-Wert, sample-Größe und mehr.
Gibt es auch eine Reihe von Optionen, um eine oder mehrere Spalten angeben (z.B. one-vs-all Verhalten), als auch als kovariablen für die partielle Korrelation und verschiedene Methoden zur Berechnung des Korrelationskoeffizienten. Bitte sehen dieses Beispiel Jupyter Notebook für eine weitere in-depth demo.