一、Bland-Altman分析法簡介
Bland-Altman分析法又稱差異圖法,是一種常用的數據變換方法,用於比較兩種測量方法的一致性。它基於一種簡單的統計原理,即兩種測量方法的測值差異隨着測值增加而有可能發生變化。這種方法能夠直觀地體現兩種測量方法之間的偏倚和隨機誤差,同時可以用來確定兩種方法的測量差異是否顯著。
二、如何進行Bland-Altman分析
進行Bland-Altman分析共需要4個步驟:
1. 採集數據:使用兩種測量方法對同一批被測量物進行測試,記錄下各自的測量值。
import numpy as np
#假設存在兩種測量方法A和B
A = [2.1, 2.0, 2.2, 2.5, 2.3, 2.6, 2.4, 2.7, 2.5, 2.4]
B = [2.0, 2.2, 2.3, 2.8, 2.4, 2.5, 2.7, 2.6, 2.5, 2.3]
2. 計算平均值和差值:對每對測量值,計算其平均值和差值。
mean = np.mean([A, B], axis=0)
diff = A - B
3. 繪製Bland-Altman圖:將差異與平均值的平均值繪製成散點圖,使用一條水平線繪製平均差異值(bias)。
import matplotlib.pyplot as plt
plt.scatter(mean, diff)
plt.axhline(y=np.mean(diff), color='r', linestyle='-')
plt.xlabel('Mean')
plt.ylabel('Difference')
plt.title('Bland-Altman Plot')
plt.show()
4. 分析結果:分析散點圖和平均差異值,確定兩種測量方法之間的一致性和差異是否具有顯著性。
三、Bland-Altman圖的解讀
Bland-Altman圖常用於展示兩種測量方法之間的一致性和差異,其中,散點圖展示了每對測量值的平均值和差異值,水平線表示平均差異值。觀察Bland-Altman圖需要特別注意以下幾點:
1. 散點分佈是否隨機,是否呈現明顯的聚集現象。
2. 平均差異值是否為0,如果不為0,是否存在系統誤差或常數偏倚。
3. 平均差異值的95%限制是否太寬,如果過寬,說明兩種測量方法之間的一致性較差。
四、如何製作Bland-Altman圖
製作Bland-Altman圖可以按照以下步驟:
1. 建立兩個向量:其中一個向量包括每對測量值的平均值,另一個向量包括差異值。
mean = np.mean([A, B], axis=0)
diff = A - B
2. 繪製散點圖:使用matplotlib.pyplot.scatter()函數繪製散點圖,其中橫坐標為平均值,縱坐標為差異值。
import matplotlib.pyplot as plt
plt.scatter(mean, diff)
3. 添加水平線:使用matplotlib.pyplot.axhline()函數繪製一條水平線,代表平均差異值。
plt.axhline(y=np.mean(diff), color='r', linestyle='-')
4. 添加標籤和標題:使用matplotlib.pyplot.xlabel()、matplotlib.pyplot.ylabel()和matplotlib.pyplot.title()函數添加標籤和標題。
plt.xlabel('Mean')
plt.ylabel('Difference')
plt.title('Bland-Altman Plot')
5. 顯示圖形:使用matplotlib.pyplot.show()函數顯示Bland-Altman圖。
plt.show()
五、Bland-Altman一致性分析
Bland-Altman一致性分析是一種用於測定兩種測試方法之間一致性的方法,可用於圖像分析。其基本原理是通過計算兩種方法之間的平均差異程度,來比較它們的一致性。如果平均差異很小,則說明這兩種方法相對一致,反之則說明兩種方法存在差異。
def get_limits(data):
mean = np.mean(data)
std = np.std(data, ddof=1)
limits = [mean-1.96*std, mean+1.96*std]
return limits
def get_confidence_interval(data, alpha):
mean = np.mean(data)
std = np.std(data, ddof=1)
n = len(data)
t = 2.131 # 使用t分佈進行置信區間計算
interval = t*(std/np.sqrt(n))
ci = [mean-(interval*alpha), mean+(interval*alpha)]
return ci
mean_diff = np.mean(diff)
limits = get_limits(diff)
ci95 = get_confidence_interval(diff, 1.96)
ci99 = get_confidence_interval(diff, 2.58)
以上是計算Bland-Altman一致性分析所需的函數以及計算例子。其中,get_limits()函數用於計算95%的置信限,get_confidence_interval()函數用於計算置信區間,mean_diff為平均差異值,limits為95%置信限,ci95為95%置信區間,ci99為99%置信區間。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/309363.html