Можно ли сделать Bland-Altman plot в Python? Кажется, я ничего не могу найти.Заговор Bland-Altman в Python
Другим названием для этого типа является Tukey разностный график.
Пример:
Можно ли сделать Bland-Altman plot в Python? Кажется, я ничего не могу найти.Заговор Bland-Altman в Python
Другим названием для этого типа является Tukey разностный график.
Пример:
Если я правильно понял теорию, лежащую в основе сюжета, этот код должен обеспечивать базовое построение графика, тогда как вы можете настроить его в соответствии с вашими конкретными потребностями.
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='--')
Соответствующие элементы в data1
и data2
используются для вычисления координат для точек на графике.
Затем вы можете создать график, выполнив, например.
from numpy.random import random
bland_altman_plot(random(10), random(10))
plt.title('Bland-Altman Plot')
plt.show()
Не должно быть 'md + 1.96 * sd' и' md - 1.96 * sd' вместо? –
может быть, я что-то не хватает, но это, кажется, довольно легко:
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()
Здесь я просто создать некоторые случайные данные между 0 и 1 и I случайным образом ставит горизонтальную линию при y = 0,5 - но вы можете поместить столько, сколько хотите, где хотите.
Почему вы не просто построить точки с помощью 'plt.plot' и добавить горизонтальные линии с помощью' plt.axhline'? Этот сюжет кажется достаточно простым. –
Да, проложение легко. Но я подумал, что, возможно, в библиотеке есть модуль, который тоже делал вычисления. Например, я передаю свои 2 сигнала, и это замышляет мой сюжет. Это всегда среднее по оси x и разница в 2 сигналах по оси y. Горизонтальные линии являются средними стандартными отклонениями (neg и pos) – Ojtwist