Tài liệu hướng dẫn
thống kê y học sử dụng SPSS
SPSS
Biểu đồ ROC: khảo sát test chẩn đoán
Lê Đông Nhật Nam
Lời nói đầu
Kì thi tuyển sinh vào đại học Y khoa có thể xem như 1 test chẩn đoán, nhằm xác định những hạt
giống ưu tú nhất có tiềm năng trở thành bác sĩ sau này. Như mọi quy trình sàng lọc khác, kết quả
trúng tuyển dựa hoàn toàn vào 1 giá trị ngưỡng là điểm chuẩn. Cánh cửa vào trường Y khoa thường
hẹp với đa số thí sinh, có nhiều bạn bè tôi thi đến lần thứ 3 mới đỗ. Thời của tôi sau khi thi xong khó
có học sinh nào ăn ngon ngủ yên ngay cả khi họ làm bài tốt, chúng tôi trông chờ điểm chuẩn như một
bản án mà quan tòa phán ra, ai sẽ lên thiên đường và ai sẽ vào hỏa ngục. Có một câu chuyện buồn
về một cô bạn của tôi, khi công bố điểm chuẩn cô ta chỉ thiếu 0,5 điểm và bị đánh trượt. Cô ấy tuyệt
vọng, bị gia đình đánh đập và thậm chí nghĩ đến chuyện tự sát. Nhưng chỉ vài ngày sau, người ta
nâng điểm chuẩn lên 1 điểm để lấy thêm chỉ tiêu. Và cô ta đã trúng tuyển (Cô bạn ấy sau này trở
thành một bác sĩ giỏi).
Trên lâm sàng, đôi khi chúng ta phải đắn đo rất lâu trước một quyết định chẩn đoán. Nhiều lúc, ta
đối chiếu kết quả xét nghiệm với một ngưỡng giá trị mong manh mà dựa vào nó một người có thể
được xem là bình thường hay bệnh lý.
Một điều thú vị là bác sĩ tại VN ngày càng chủ động hơn khi tham gia vào nghiên cứu giá trị chẩn
đoán của các biomarker (dấu chỉ sinh học). Có lẽ sự phát triển về trang thiết bị tại bệnh viện là
nguyên nhân chính. Khái niệm biomarker rất rộng, nó có thể là một thang điểm trong chẩn đoán
hình ảnh, dấu hiệu giải phẫu bệnh lý, nồng độ một protein hay kháng thể trong máu, dấu hịệu sinh
lý, số lượng tế bào viêm, vân vân…Nghiên cứu về biomarker vừa dễ, vừa khó. Dễ dàng ở khâu thu
thập số liệu (bệnh nhân đông, kết quả xét nghiệm có sẵn và phong phú), việc tạo ra đề tài mới cũng
dễ dàng vì chỉ cần có trong tay 1 thiết bị xét nghiệm mới, một biomarker mới là có thể đẻ ra một đề
tài nghiên cứu nào đó cho luận văn tốt nghiệp, nội trú, cao học hay nghiên cứu sinh. Thậm chí 1
Khả Nhi là một nữ bác sĩ trẻ dễ thương và sử dụng thành
thạo SPSS. Như tên gọi của mình, BS Nhi có tính cách rất hồn
nhiên và sống ngây thơ như trẻ con, vì vậy cô luôn có khuynh
hướng đơn giản hóa tối đa mọi vấn đề. Cô ấy sẽ hướng dẫn
các bạn sử dụng SPSS từng bước cụ thể, chia sẻ những mẹo
vặt, thủ thuật để giúp các bạn đi đến kết quả nhanh và dễ
dàng nhất.
Sinh viên Trần Quốc Bảo
Bảo là sinh viên y khoa năm thứ sáu và bắt đầu làm quen với nghiên
cứu khoa học. Đây là một cậu sinh viên rất tò mò và luôn đặt ra
nhiều câu hỏi liên quan đến thống kê. Mặc dù những đế tài do Bảo
thực hiện rất đơn giản, nhưng đồng hành với cậu ta, các bạn có cơ
hội tích lũy cho mình nhiều kinh nghiệm trong công việc phân tích
số liệu và thiết kế nghiên cứu.
3
1
1.1 Tình huống thí dụ
Trong bệnh lý xơ cứng bì hệ thống (systemic sclerosis), tổn thương xơ phổi
rất phổ biến. Dấu hiệu sớm nhất là hiện tượng viêm trong phế nang. Hiện
tượng viêm phế nang được chẩn đoán xác định bằng sự tăng các loại tế bào
viêm trong dịch rửa phế quản, tuy nhiên đây là một xét nghiệm xâm lấn.
Một cách khác để phát hiện viêm phế nang là dựa trên sự tăng nồng độ của
Surfactant protein D (SPD) trong máu (định lượng bằng ELISA). Có nhiều
nghiên cứu đã được làm để xác định ngưỡng giá trị SPD cho phép chẩn đoán
viêm phế nang.
Câu hỏi thứ 2 đặt ra vấn đề so sánh giá trị AUC giữa 2 đường cong ROC khác
nhau. Để làm việc này, ta sẽ sử dụng phương pháp của Hanley-McNeil (1987).
1
1.2 Giới thiệu
Trong nghiên cứu y học, biểu đồ ROC là một phương pháp phân tích trực quan cho liên hệ giữa độ
nhạy và tỉ lệ dương tính giả trong một test chẩn đoán, dựa trên những ngưỡng giá trị chẩn đoán
khác nhau. Phương pháp này được lập ra bởi những kỹ thuật viên radar trong thế chiến thứ II để
phân biệt tín hiệu thật và giả (nhiễu) quyết định độ chính xác của việc phát hiện ra máy bay của
địch.
Trong thực hành lâm sàng, một test chẩn đoán có thể hiểu như 1 quy trình phân loại mang tính nhị
phân, nhằm xác định một cá thể Có hoặc không có bệnh. Thông thường kết quả phân loại phụ
thuộc vào 1 đại lượng với 1 giá trị ngưỡng chẩn đoán xac định. Giá trị của ngưỡng chẩn đoán cao
hay thấp sẽ quyết định tỉ lệ dương tính (âm tính) thật/giả trong 1 quần thể xác định.
Thực chất đường cong ROC chỉ là một trò chơi
về xác suất, bằng cách biểu diễn mối tương
quan giữa 2 đại lượng: Độ nhạy, hay xác suất
chẩn đoán chính xác có bệnh (dương tính thật
trên tổng số bệnh nhân), và (1- độ đặc hiệu),
hay xác suất chẩn đoán nhầm (một người
không có bệnh bị chẩn đoán dương tính).
Khi chẩn đoán dựa trên giá trị của một biến số
định lượng liên tục, việc di chuyển ngưỡng
chẩn đoán và chọn đúng điểm cắt sẽ giúp giảm
tỉ lệ chẩn đoán nhầm (FP) đến mức thấp nhất
đồng thời tăng độ nhạy lên cao nhất.
phương pháp toán học, có 2 tiêu chuẩn thường
dùng nhất là:
a) Hệ số J của Youden (Youden index) lớn nhất
b) Khoảng cách d từ điểm cắt tới đỉnh cao nhất
trục tung có giá trị nhỏ nhất
Hệ số J của Youden: J = (Se + Sp)− 1
𝑲𝒉𝒐ả𝒏𝒈 𝒄á𝒄𝒉 𝒅 =
(𝟏 − 𝑺𝒆)𝟐 +(𝟏 − 𝑺𝒑𝒆)𝟐
Phân tích biểu đồ ROC có nhiều ứng dụng như
1) Khảo sát phẩm chất của một 1 đại lượng X có thể dùng để chẩn đoán một bệnh lý F. Trong trường
hợp này ta cần có: giá trị của X cho mỗi cá thể, và kết quả chẩn đoán của cá thể đó (F=0: không có
bệnh, F=1: có bệnh) dựa vào 1 tiêu chuẩn quy ước có sẵn.
Nội dung của quy trình sẽ là:
+ Dựng biểu đồ ROC cho quần thể đang khảo sát. Xác định AUC và so sánh nó với ngưỡng 0,5.
+ Khảo sát tất cả các khả năng có thể của giá trị độ nhạy và độ đặc hiệu tương ứng cho 1 điểm cắt X,
và xác định điểm cắt tối ưu.
2) So sánh khả năng của 2 test chẩn đoán dựa vào AUC:
Lúc này bài toán đặt ra sẽ là so sánh AUC(A) của phương pháp A và AUC(B) của phương pháp B.
Cách giải quyết thường dựa vào trị số U theo Mann-Whitney, vì theo lý thuyết AUC có liên hệ rất gần
với phân phối U trong test Mann-Whitney, theo công thức:
𝐴𝑈𝐶 =
𝑈
𝑛1𝑛2
Trong tài liệu này tác giả hướng dẫn thực hiện thủ công phương pháp Hanley-McNeil (1982) vốn
không được SPSS hỗ trợ. Chỉ có Medcalc và XLSTAT cho phép so sánh AUC một cách tự động.
2
2.2 Vẽ đường cong ROC và tính AUC
2.2.1 Thiết lập cấu hình cho đường cong ROC
1
2
Nhấn tab Analyze, chọn mục ROC curve để mở hộp thoại sau đây:
2
2.2 Vẽ đường cong ROC và tính AUC
Kéo biến số Viemphenang vào ô State variable
Kéo 2 biến số định lượng NO phế nang và Surfactant Pro D vào ô Test variable
Chọn tất cả các mục trong phần « Display », sau đó nhấn OK
2
2.2 Vẽ đường cong ROC và tính AUC
2.2.2 Chỉnh sửa hiệu ứng đồ họa
Trong bảng kết quả, đường cong ROC đã được vẽ ra. Tuy nhiên đây là hình vẽ thô sơ, không thể
đưa ngay vào văn bản khoa học.
3
x2
2
Khi bạn click chuột vào một thành phần nào đó,
ví dụ màu nền, hộp thoại Properties sẽ mở ra
Trước hết, bỏ màu nền cho đồ thị để có nền màu
trắng trong suốt
4
5
Sau đó vào mục « Variables »,
Đổi chế độ Groupe từ «phân biệt 2 đường cong bằng màu sắc
(Style: color)» sang« phân biệt bằng nét đứt (Style: Dash) », kết
quả bạn sẽ có 2 đường cong màu đen, một nét liền và một nét đứt
2.2 Vẽ đường cong ROC và tính AUC
2
2.2.2 Chỉnh sửa hiệu ứng đồ họa
Sau mỗi thay đổi, bạn nhấn Apply để lưu thay đổi và xem kết
Kiểu « Spline »
Kiểu « Step »
3
3. Diễn giải kết quả
3.1 kết quả mô tả AUC
Case Processing Summary
Kết quả đường cong ROC bao gồm 3 nội dung chính
Valid N
Viêm phế nang
(listwise)
Positivea
40
Negative
20
Đầu tiên, bảng Case processing summary cho biết số trường hợp
có bệnh (positive case, hay Np) và không có bệnh (negative case
NO phế nang (ppb)
,892
,041
,000
,813
,972
Surfactant Pro D (ng/ml)
,749
,062
,002
,627
,870
The test result variable(s): NO phế nang (ppb), Surfactant Pro D (ng/ml) has at least one tie
between the positive actual state group and the negative actual state group. Statistics may be
biased.
a. Under the nonparametric assumption
b. Null hypothesis: true area = 0.5
Giá trị của điểm cắt chẩn đoán
Coordinates of the Curve
Positive if
Greater Than or
Test Result Variable(s)
NO phế nang (ppb)
Tên biến số
khảo sát
Equal To
a
Sensitivity
1 - Specificity
1,5000
1,000
1,000
2,5500
1,000
,950
3,7500
,950
,700
3,9000
,950
,650
4,0500
,950
,600
4,2000
,950
,550
4,4500
,925
,500
5,8500
,875
,200
6,1000
,850
,200
6,3500
,825
,150
6,6500
,800
6,9000
,775
,150
7,1000
,100
8,4000
,050
Bảng này sẽ giúp chúng ta lựa chọn điểm
cắt tối ,650
ưu, tuy nhiên
đây chỉ là số liệu thô và khó diễn giải.
8,8500
,625
,050
Trong phần tiếp theo tôi sẽ hướng dẫn các bạn khai thác số liệu trong bảng này trên phần mềm Excel.
9,3500
,600
,050
9,5050
,600
,000
9,6150
,575
,000
1,000
,950
2,7500
1,000
,900
3,0000
1,000
,850
3,1500
1,000
,800
3,3500
,975
,800
3,6000
,925
,500
4,8000
,925
,450
5,0500
,875
,400
5,1500
,875
,350
5,3000
,875
,300
5,5500
,775
,150
7,1000
,750
,150
7,3500
,725
,150
7,7500
,700
,100
8,1000
,675
,100
8,2500
,575
,000
9,8600
,550
,000
3
Điểm cắt
Se
(1-Sp)
Sp
Youden khoảng cách
index J (d)
1) Đầu tiên, trong Excel bạn tạo bảng tính gồm 6 cột như trong hình vẽ, bạn có thể lập trình công thức
Tính tự động: Specificity , Hệ số J của Youden và khoảng cách d
2) Sau đó bạn quay trở lại bảng kết quả Cut-off point trong SPSS,
3) cắt toàn bộ kết quả của 3 cột : Cut-off value, Sensitivity và Specificity và dán qua bảng Excel.
4) Dùng chức năng xếp thứ tự của Excel:
Đầu tiên, chọn toàn bộ cột Youden Index J, xếp thứ tự từ cao đến thấp : Bạn ghi lại 3 điểm cắt đầu tiên
(có giá trị J cao nhất)
1-Specificity
0,15
0,2
Specificity
0,8
0,85
0,85
Specificity
0,85
0,8
Youden index J
0,675
0,675
0,65
Youden index J
0,675
0,675
Distance d
0,230488611
0,235849528
Ví dụ: đối với biến số CANO, ta có:
Giá trị J max = 0,675 tương ứng với 2 điểm cắt: CANO = 5,85 và 6,35
Giá trị d min = 0,230 tương ứng với điểm cắt CANO = 6,35
Như vậy ta kết luận: Điểm cắt tối ưu cho CANO là 6,35 ppb
Cut-off point
0,2
Specificity
0,85
0,85
0,8
0,85
Specificity
0,85
0,85
0,8
Youden index J
0,525
0,5
0,475
0,475
Youden index J
0,525
0,5
0,475
Tương tự cho Surfactant protein D: Ta xác định được điểm cắt tối ưu là 247 ng/ml
Distance d
0,357945527
0,380788655
0,381608438
Ghi chú: Np và Nn = số trường hợp có bệnh (positive) và không bệnh (negative)
2
Tính SE cho khác biệt giữa 2 AUC : SE (A1-A2)
𝑆𝐸 𝐴1 − 𝐴2 =
𝑆𝐸(𝐴1)2 + 𝑆𝐸(𝐴2)2
Ghi chú: SE(A1) và SE(A2) lần lượt là SE của AUC test chẩn đoán 1 và AUC của test chẩn đoán 2
3
Tính Z-score
𝑍=
4
𝐴1 − 𝐴2
𝑆𝐸 (𝐴1 − 𝐴2)
So sánh giá trị tuyệt đối của Z-score và 1,96 :
Nếu Z < 1,96: Không có sự khác biệt ý nghĩa
> 1,96: có sự khác biệt ý nghĩa giữa AUC1 và AUC2
5
Tính giá trị P từ Z-score theo phân phối Gaussian: Trong Excel giá trị P tính bằng hàm số DISTNORM(1-Z)
P
0,892
0,749
0,142973433
0,018457791
1,000185818
0,158610296
Ghi chú
Abs(Z) > 1,96: có ý nghĩa (p
Ghi chú: SE(A1) và SE(A2) lần lượt là SE của AUC test chẩn đoán 1 và AUC của test chẩn đoán 2
Giá trị của r được xác định từ bảng Hanley-McNeil
5
Tính Z-score
𝑍=
6
𝐴1 − 𝐴2
𝑆𝐸 (𝐴1 − 𝐴2)
So sánh giá trị tuyệt đối của Z-score và 1,96 :
Nếu Z < 1,96: Không có sự khác biệt ý nghĩa
> 1,96: có sự khác biệt ý nghĩa giữa AUC1 và AUC2
Tính giá trị P từ Z-score theo phân phối Gaussian: Trong Excel giá trị P tính bằng hàm số DISTNORM(1-Z)
P
/VARIABLES=CANO SPD
/PRINT=TWOTAIL NOSIG
/MISSING=PAIRWISE.
USE ALL.
COMPUTE filter_$=(Viemphenang=1).
VARIABLE LABELS filter_$ 'Viemphenang=1 (FILTER)'.
VALUE LABELS filter_$ 0 'Not Selected' 1 'Selected'.
FORMATS filter_$ (f1.0).
FILTER BY filter_$.
EXECUTE.
CORRELATIONS
/VARIABLES=CANO SPD
/PRINT=TWOTAIL NOSIG
/MISSING=PAIRWISE.
Copy và paste vào đây
6
Ghi chú:
Các lệnh trên để thực hiện quy trình tính hệ số tương quan Pearson trong 2 trường hợp: 1) Lọc bỏ tất
cả case không có bệnh và 2) Lọc bỏ tất cả case có bệnh.
Những chữ màu đỏ là tên biến số trong thí dụ, khi bạn làm cho nghiên cứu khác thì thay đổi tên biến lại
cho phù hợp
Qui trình này nhằm xác định Rn và Rp trong PP của Hanley-McNeil
4
So sánh 2 AUC bằng phương pháp Hanley-McNeil
,000
N
Surfactant Pro D (ng/ml) Pearson Correlation
Sig. (2-tailed)
20
20
,988**
1
,000
N
20
20
NO phế nang
Surfactant Pro
(ppb)
D (ng/ml)
40
40
Giá trị R trung bình
**. Correlation is significant at the 0.01 level (2-tailed).
So sánh AUC của cùng 1 mẫu
Nhập dữ liệu vào 7 ô dưới đây
AUC của Phương pháp A
0,892
AUC của Phương pháp B
0,749
8
Hệ số tương quan rp ở nhóm bệnh
0,982
Hệ số tương quan rn ở nhóm không bệnh
0,988
Tổng số case có bệnh (Np)
40
Tổng số case không bệnh (Nn)
20
Hệ số r của Hanley-McNeil
0,98
Kết quả kiểm định Hanley-McNeil
Standard error của [AUC(A) - AUC(B)]
SD của [AUC(A) - AUC(B)]
Z score
P value (one-tailed)
(rn+rp)/2
(rn+rp)/2
(rn+rp)/2
(rn+rp)/2
(rn+rp)/2
(rn+rp)/2
(rn+rp)/2
(rn+rp)/2
(rn+rp)/2
(rn+rp)/2
(rn+rp)/2
(rn+rp)/2
(rn+rp)/2
(rn+rp)/2
(rn+rp)/2
(rn+rp)/2
(rn+rp)/2
(rn+rp)/2
(rn+rp)/2
(rn+rp)/2
(rn+rp)/2
(rn+rp)/2
(rn+rp)/2
(rn+rp)/2
(rn+rp)/2
(rn+rp)/2
(rn+rp)/2
(rn+rp)/2
(rn+rp)/2
(rn+rp)/2
0.24 0.22 0.22 0.21 0.21 0.21 0.20 0.19 0.19 0.18 0.17 0.15 0.12
0.26 0.24 0.23 0.23 0.23 0.22 0.22 0.21 0.20 0.19 0.18 0.16 0.13
0.28 0.26 0.25 0.25 0.25 0.24 0.24 0.23 0.22 0.21 0.20 0.18 0.15
0.30 0.27 0.27 0.27 0.26 0.26 0.25 0.25 0.24 0.23 0.21 0.19 0.16
0.32 0.29 0.29 0.29 0.28 0.28 0.27 0.26 0.26 0.24 0.23 0.21 0.18
0.34 0.31 0.31 0.31 0.30 0.30 0.29 0.28 0.27 0.26 0.25 0.23 0.19
0.36 0.33 0.33 0.32 0.32 0.31 0.31 0.30 0.29 0.28 0.26 0.24 0.21
0.38 0.35 0.35 0.34 0.34 0.33 0.33 0.32 0.31 0.30 0.28 0.26 0.22
0.40 0.37 0.37 0.36 0.36 0.35 0.35 0.34 0.33 0.32 0.30 0.28 0.24
0.42 0.39 0.39 0.38 0.38 0.37 0.36 0.36 0.35 0.33 0.32 0.29 0.25
0.44 0.41 0.40 0.40 0.40 0.39 0.38 0.38 0.37 0.35 0.34 0.31 0.27
0.46 0.43 0.42 0.42 0.42 0.41 0.40 0.39 0.38 0.37 0.35 0.33 0.29
0.48 0.45 0.44 0.44 0.43 0.43 0.42 0.41 0.40 0.39 0.37 0.35 0.30
0.50 0.47 0.46 0.46 0.45 0.45 0.44 0.43 0.42 0.41 0.39 0.37 0.32
0.52 0.49 0.48 0.48 0.47 0.47 0.46 0.45 0.44 0.43 0.41 0.39 0.34
0.54 0.51 0.50 0.50 0.49 0.49 0.48 0.47 0.46 0.45 0.43 0.41 0.36
0.56 0.53 0.52 0.52 0.51 0.51 0.50 0.49 0.48 0.47 0.45 0.43 0.38
0.58 0.55 0.54 0.54 0.53 0.53 0.52 0.51 0.50 0.49 0.47 0.45 0.40
0.60 0.57 0.56 0.56 0.55 0.55 0.54 0.53 0.52 0.51 0.49 0.47 0.42
0.62 0.59 0.58 0.58 0.57 0.57 0.56 0.55 0.54 0.53 0.51 0.49 0.45
0.64 0.61 0.60 0.60 0.59 0.59 0.58 0.58 0.57 0.55 0.54 0.51 0.47
0.66 0.63 0.62 0.62 0.62 0.61 0.60 0.60 0.59 0.57 0.56 0.53 0.49
0.68 0.65 0.64 0.64 0.64 0.63 0.62 0.62 0.61 0.60 0.58 0.56 0.51
0.70 0.67 0.66 0.66 0.66 0.65 0.65 0.64 0.63 0.62 0.60 0.58 0.54
0.72 0.69 0.69 0.68 0.68 0.67 0.67 0.66 0.65 0.64 0.63 0.60 0.56
0.74 0.71 0.71 0.70 0.70 0.69 0.69 0.68 0.67 0.66 0.65 0.63 0.59
0.76 0.73 0.73 0.72 0.72 0.72 0.71 0.71 0.70 0.69 0.67 0.65 0.61
0.78 0.75 0.75 0.75 0.74 0.74 0.73 0.73 0.72 0.71 0.70 0.68 0.64
0.80 0.77 0.77 0.77 0.76 0.76 0.76 0.75 0.74 0.73 0.72 0.70 0.67
0.82 0.79 0.79 0.79 0.79 0.78 0.78 0.77 0.77 0.76 0.75 0.73 0.70