Ist es möglich, einen Bland-Altman plot in Python zu machen? Ich kann nichts darüber finden.Bland-Altman-Plot in Python
Ein anderer Name für diese Art von Plot ist die Tukey Mittelwert-Differenz-Plot.
Beispiel:
Ist es möglich, einen Bland-Altman plot in Python zu machen? Ich kann nichts darüber finden.Bland-Altman-Plot in Python
Ein anderer Name für diese Art von Plot ist die Tukey Mittelwert-Differenz-Plot.
Beispiel:
Wenn ich die Theorie hinter dem Plot richtig verstanden habe, sollte dieser Code das Grundplotten bieten, während Sie ihn nach Ihren eigenen Bedürfnissen konfigurieren können.
import matplotlib.pyplot as plt
import numpy as np
def bland_altman_plot(data1, data2, *args, **kwargs):
data1 = np.asarray(data1)
data2 = np.asarray(data2)
mean = np.mean([data1, data2], axis=0)
diff = data1 - data2 # Difference between data1 and data2
md = np.mean(diff) # Mean of the difference
sd = np.std(diff, axis=0) # Standard deviation of the difference
plt.scatter(mean, diff, *args, **kwargs)
plt.axhline(md, color='gray', linestyle='--')
plt.axhline(md + 1.96*sd, color='gray', linestyle='--')
plt.axhline(md - 1.96*sd, color='gray', linestyle='--')
die entsprechenden Elemente in data1
data2
und werden verwendet, um die Koordinaten für die geplotteten Punkte zu berechnen.
Dann können Sie ein Diagramm erstellen, indem Sie z.
from numpy.random import random
bland_altman_plot(random(10), random(10))
plt.title('Bland-Altman Plot')
plt.show()
Sollen nicht 'md + 1.96 * sd' und' md - 1.96 * sd' sein? –
vielleicht bin ich etwas fehlt, aber das scheint ziemlich einfach:
from numpy.random import random
import matplotlib.pyplot as plt
x = random(25)
y = random(25)
plt.title("FooBar")
plt.scatter(x,y)
plt.axhline(y=0.5,linestyle='--')
plt.show()
Hier schaffe ich nur einige zufällige Daten zwischen 0 und 1 und I Setze zufällig eine horizontale Linie bei y = 0.5 - aber du kannst beliebig viele setzen, wo du willst.
Warum zeichnen Sie nicht nur die Punkte 'plt.plot' verwenden und die horizontalen Linien mit' plt.axhline' hinzufügen? Diese Handlung scheint einfach genug zu sein. –
Ja, das Plotten ist einfach. Aber ich dachte, vielleicht gab es ein Modul in einer Bibliothek, das auch die Berechnungen durchführte. Zum Beispiel gebe ich meine 2 Signale und es zeichnet meine Handlung auf. Es ist immer Durchschnitt auf der X-Achse und Unterschied in den 2 Signalen auf der Y-Achse. Die horizontalen Linien sind die mittleren Standardabweichungen (neg und pos) – Ojtwist