ในภาษาอังกฤษธรรมดาหนึ่งคนตีความพล็อตเรื่อง Bland-Altman อย่างไร
ข้อดีของการใช้พล็อต Bland-Altman เหนือวิธีอื่นในการเปรียบเทียบวิธีการวัดสองวิธีแตกต่างกันอย่างไร
ในภาษาอังกฤษธรรมดาหนึ่งคนตีความพล็อตเรื่อง Bland-Altman อย่างไร
ข้อดีของการใช้พล็อต Bland-Altman เหนือวิธีอื่นในการเปรียบเทียบวิธีการวัดสองวิธีแตกต่างกันอย่างไร
คำตอบ:
พล็อตเรื่อง Bland-Altman เป็นที่รู้จักอย่างกว้างขวางในชื่อTukey Mean-Difference Plot (หนึ่งในหลาย ๆ แผนภูมิที่คิดค้นโดย John Tukey http://en.wikipedia.org/wiki/John_Tukey )
แนวคิดคือแกน x เป็นค่าเฉลี่ยของการวัดสองค่าของคุณซึ่งเป็นการคาดเดาที่ดีที่สุดของคุณเกี่ยวกับผลลัพธ์ "ถูกต้อง" และแกน y คือความแตกต่างระหว่างความแตกต่างของการวัดทั้งสอง แผนภูมิสามารถเน้นความผิดปกติบางประเภทในการวัดได้ ตัวอย่างเช่นหากวิธีใดวิธีหนึ่งให้ผลลัพธ์สูงเกินไปคุณจะได้คะแนนทั้งหมดที่สูงกว่าหรือต่ำกว่าเส้นศูนย์ นอกจากนี้ยังสามารถเปิดเผยได้ว่าวิธีหนึ่งมีค่าสูงเกินกว่าประมาณการและต่ำกว่าค่าต่ำ
หากคุณเห็นคะแนนในพล็อต Bland-Altman กระจัดกระจายไปทั่วสถานที่ทั้งด้านบนและด้านล่างศูนย์จากนั้นแสดงให้เห็นว่าไม่มีอคติที่สอดคล้องกันของวิธีการหนึ่งเมื่อเทียบกับที่อื่น ๆ (แน่นอนอาจมีอคติซ่อนเร้น ไม่แสดง)
โดยพื้นฐานแล้วมันเป็นขั้นตอนแรกที่ดีสำหรับการสำรวจข้อมูล เทคนิคอื่น ๆ สามารถใช้ในการขุดหาพฤติกรรมของการวัดที่เฉพาะเจาะจงมากขึ้น
นอกเหนือจากความแตกต่างเมื่อเทียบกับพล็อตค่าเฉลี่ยแผนการ Bland และ Altman ยังสามารถเป็นอัตราส่วนเทียบกับค่าเฉลี่ย แปลง
ตัวอย่างเช่นเครื่องชั่งน้ำหนักใหม่ให้ข้อมูลต่อไปนี้เมื่อผู้คนที่มีน้ำหนัก 60, 70 และ 80 กิโลกรัมก้าวเข้ามา ..
66 กก. 77 กก. 88 กก
ในสถานการณ์ดังกล่าวเครื่องชั่งน้ำหนักจะประเมินน้ำหนักเกิน 10% ทุกครั้ง อัตราส่วนกับพล็อตเฉลี่ยจะให้ภาพข้อมูลที่ดีขึ้นในกรณีนี้
นี่คือคำจำกัดความของ Wikipedia ของพล็อตเรื่อง Bland-Altman:
Bland – Altman plot (different plot) ในเคมีวิเคราะห์หรือ biomedicine เป็นวิธีการวางแผนข้อมูลที่ใช้ในการวิเคราะห์ข้อตกลงระหว่างการทดสอบสองแบบที่แตกต่างกัน มันเหมือนกับพล็อตค่าความแตกต่าง Tukey 1ซึ่งเป็นชื่อที่รู้จักกันในสาขาอื่น แต่ได้รับความนิยมในสถิติทางการแพทย์โดย J. Martin Bland และ Douglas G. Altman
หากคุณต้องการใช้พล็อต Bland-Altman ใน Python คุณสามารถใช้สิ่งนี้
หากคุณต้องการทำสิ่งนี้ใน Python คุณสามารถใช้รหัสนี้ได้
import matplotlib.pyplot as plt
import numpy as np
from numpy.random import random
%matplotlib inline
plt.style.use('ggplot')
ฉันเพิ่งเพิ่มบรรทัดสุดท้ายเพราะฉันชอบสไตล์ ggplot
def plotblandaltman(x,y,title,sd_limit):
plt.figure(figsize=(20,8))
plt.suptitle(title, fontsize="20")
if len(x) != len(y):
raise ValueError('x does not have the same length as y')
else:
for i in range(len(x)):
a = np.asarray(x)
b = np.asarray(x)+np.asarray(y)
mean_diff = np.mean(b)
std_diff = np.std(b, axis=0)
limit_of_agreement = sd_limit * std_diff
lower = mean_diff - limit_of_agreement
upper = mean_diff + limit_of_agreement
difference = upper - lower
lowerplot = lower - (difference * 0.5)
upperplot = upper + (difference * 0.5)
plt.axhline(y=mean_diff, linestyle = "--", color = "red", label="mean diff")
plt.axhline(y=lower, linestyle = "--", color = "grey", label="-1.96 SD")
plt.axhline(y=upper, linestyle = "--", color = "grey", label="1.96 SD")
plt.text(a.max()*0.85, upper * 1.1, " 1.96 SD", color = "grey", fontsize = "14")
plt.text(a.max()*0.85, lower * 0.9, "-1.96 SD", color = "grey", fontsize = "14")
plt.text(a.max()*0.85, mean_diff * 0.85, "Mean", color = "red", fontsize = "14")
plt.ylim(lowerplot, upperplot)
plt.scatter(x=a,y=b)
และสุดท้ายฉันก็แค่สร้างค่าสุ่มและเปรียบเทียบมันในฟังก์ชั่นนี้
x = np.random.rand(100)
y = np.random.rand(100)
plotblandaltman(x,y,"Bland-altman plot",1.96)
ด้วยการดัดแปลงเล็กน้อยคุณสามารถเพิ่ม for-loop และทำการแปลงหลาย ๆ อย่างได้อย่างง่ายดาย