Trong lĩnh vực thống kê, t-test bắt cặp (paired t-test) là một phương pháp mạnh mẽ được sử dụng để kiểm định sự khác biệt giữa hai nhóm dữ liệu có liên quan. Phương pháp này đặc biệt hữu ích khi bạn muốn so sánh hai giá trị đo lường từ cùng một nhóm người hoặc đối tượng. Ví dụ như đo lường sức khỏe của một bệnh nhân trước và sau khi điều trị, hoặc đo lường kết quả của một nhóm học sinh trước và sau một khóa học.
Mục lục bài viết
1. t-test bắt cặp là gì?
t-test bắt cặp (một số bài gọi là t-test phụ thuộc) hay còn gọi là paired sample t-test, là một kỹ thuật kiểm định thống kê dùng để so sánh giá trị trung bình của hai nhóm liên quan.
Mục tiêu của phương pháp này là kiểm tra xem có sự khác biệt có ý nghĩa thống kê giữa hai nhóm đo lường được thực hiện trên cùng một đối tượng hay không.
Ví dụ, nếu bạn muốn kiểm tra xem liệu một liệu pháp giảm cân có hiệu quả hay không.
Đầu tiên bạn có thể đo cân nặng của các đối tượng trước điều trị. Sau đó tiến hành đo lại cân nặng trên cùng đối tượng sau khi điều trị.
Kiểm định này sẽ giúp bạn xác định xem sự thay đổi này có ý nghĩa thống kê hay chỉ là sự ngẫu nhiên.
2. Công thức tính t-test bắt cặp
Để thực hiện kiểm định t-test này, bạn cần thực hiện các bước tính toán sau:
Bước 0: Đưa ra giả thuyết
Chọn mức ý nghĩa [math]\alpha[/math] mong muốn (thường là 0.05)
[math]H_0[/math]: Không có sự khác biệt nào giữa nhóm đo lường
[math]H_1[/math]: Có sự khác biệt có ý nghĩa thống kê giữa 2 nhóm đo lường.
Ở đây tùy vào yêu cầu mà chúng ta cũng có t-test 2 đuôi và 1 đuôi như những kiểm định khác.
Bước 1: Tính sự khác biệt giữa mỗi cặp giá trị
Giả sử bạn có hai tập dữ liệu: [math]X_1, X_2, \dots, X_n[/math] và [math]Y_1, Y_2, \dots, Y_n[/math].
Mỗi cặp giá trị [math](X_i, Y_i)[/math] đại diện cho hai lần đo lường trên cùng một đối tượng. Sự khác biệt giữa các cặp giá trị được tính bằng:
[math]D_i = X_i – Y_i[/math]
Bước 2: Tính trung bình và độ lệch chuẩn của các sự khác biệt
Tính trung bình của các sự khác biệt:
[math]\bar{D} = \frac{1}{n} \sum_{i=1}^{n} D_i[/math]
Và độ lệch chuẩn của các sự khác biệt:
[math]s_D = \sqrt{\frac{1}{n-1} \sum_{i=1}^{n} (D_i – \bar{D})^2}[/math]
Bước 3: Tính giá trị t tới hạn trong kiểm định t-test bắt cặp
Giá trị t tới hạn (t-critical) được tính theo công thức sau:
[math]t_c = \frac{\bar{D}}{s_D / \sqrt{n}}[/math]
Trong đó:
- [math]\bar{D}[/math] là trung bình của các sự khác biệt,
- [math]s_D[/math] là độ lệch chuẩn của các sự khác biệt,
- [math]n[/math] là số cặp dữ liệu.
Bước 4: Kiểm định giả thuyết
Cuối cùng, bạn so sánh giá trị [math]t_c[/math] tính được với giá trị t tới hạn từ bảng phân phối t với bậc tự do là [math]n-1[/math].
Nếu giá trị [math]t_c[/math] tính được vượt qua giá trị t tới hạn, bạn bác bỏ giả thuyết không và kết luận rằng có sự khác biệt có ý nghĩa thống kê giữa hai nhóm.
3. Ví dụ về t-test bắt cặp
Giả sử bạn có dữ liệu về huyết áp của 10 bệnh nhân trước và sau khi dùng một loại thuốc. Dưới đây là các số liệu huyết áp của 10 bệnh nhân trước và sau điều trị:
Bệnh Nhân | Trước Điều Trị | Sau Điều Trị | Sự Khác Biệt (D) |
---|---|---|---|
1 | 140 | 130 | 10 |
2 | 150 | 140 | 10 |
3 | 160 | 155 | 5 |
4 | 145 | 135 | 10 |
5 | 170 | 160 | 10 |
6 | 155 | 145 | 10 |
7 | 160 | 150 | 10 |
8 | 150 | 140 | 10 |
9 | 165 | 155 | 10 |
10 | 180 | 170 | 10 |
Bước 0: Đưa ra giả thuyết.
Chọn mức ý nghĩa [math]\alpha = 0.05[/math].
- [math]H_0[/math]: Không có sự khác biệt nào về huyết áp trước và sau khi dùng thuốc
- [math]H_1[/math]: Có sự khác biệt có ý nghĩa thống kê của huyết áp sau khi dùng thuốc điều trị
Bước 1: Tính sự khác biệt giữa các giá trị trước và sau điều trị.
Giá trị [math]D[/math] đã được tính ở cột cuối cùng.
Bước 2: Tính trung bình và độ lệch chuẩn của các sự khác biệt.
Trung bình sự khác biệt:
[math]\bar{D} = \frac{10 + 10 + 5 + 10 + 10 + 10 + 10 + 10 + 10 + 10}{10} = 9[/math]
Độ lệch chuẩn:
[math]s_D = \sqrt{\frac{1}{9} \sum_{i=1}^{10} (D_i – 9)^2} = 1.58[/math]
Bước 3: Tính giá trị t tới hạn.
[math]t_c = \frac{9}{1.58 / \sqrt{10}} = 18.99[/math]
Bước 4: So sánh và kết luận
So sánh giá trị [math]t_c[/math] và giá trị t tới hạn từ bảng phân phối t với bậc tự do: [math]d_f=9[/math] (vì có 10 bệnh nhân).
Nếu bạn sử dụng mức ý nghĩa [math]\alpha = 0.05[/math], giá trị t tới hạn là khoảng 2.262.
Vì giá trị [math]t_c =18.99[/math] lớn hơn giá trị t tới hạn 2.262, bạn bác bỏ giả thuyết không và kết luận rằng thuốc có ảnh hưởng đáng kể đến huyết áp của bệnh nhân.
4. Kết luận
t-test bắt cặp là một công cụ rất hữu ích để kiểm tra sự khác biệt giữa hai nhóm có liên quan, đặc biệt khi bạn muốn so sánh trước và sau một can thiệp hoặc thay đổi.
Phương pháp này giúp bạn đưa ra các kết luận có căn cứ dựa trên dữ liệu và xác định xem sự khác biệt có thực sự có ý nghĩa thống kê hay không.
Bằng cách áp dụng t-test bắt cặp, bạn có thể kiểm tra giả thuyết của mình một cách chính xác, từ đó hỗ trợ việc đưa ra các quyết định trong nhiều lĩnh vực, từ y tế, giáo dục cho đến nghiên cứu khoa học và công nghiệp.
5. Lưu ý quan trọng khi làm kiểm định paired t-test
Để làm được kiểm định này thì dữ liệu của bạn cần tuân thủ theo các điều kiện sau:
- Đối tượng thử nghiệm cần độc lập với nhau. Nghĩa là kết quả của đối tượng này không ảnh hưởng đến kết quả của đối tượng khác.
- Dữ liệu tuân theo phân phối chuẩn (hoặc gần chuẩn)
- Mỗi cặp đo lường phải được thực hiện trên cùng một đối tượng. Ví dụ: cân nặng của một người trước và sau khi dùng thuốc giảm cân
Điều kiện về dữ liệu thuộc phân phối chuẩn là rất quan trọng đối với dữ liệu có cỡ mẫu nhỏ (nhỏ hơn 30)
Ví dụ về dữ liệu phân bố chuẩn khi vẽ Q-Q plot (biểu đồ so sánh phân phối chuẩn), ta sẽ được:
Code python thể hiện biểu đồ trên:
import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt
# Dữ liệu ví dụ
np.random.seed(1)
data = np.random.normal(loc=0, scale=1, size=30)
n = len(data)
# Sắp xếp dữ liệu
data_sorted = np.sort(data)
# Quantiles lý thuyết từ phân phối chuẩn
theoretical_q = stats.norm.ppf((np.arange(1, n+1) - 0.5) / n)
# Bootstrap để tính dải CI
B = 2000 # số lần bootstrap
simulated = np.random.normal(size=(B, n))
simulated.sort(axis=1)
alpha = 0.05
lower_band = np.percentile(simulated, 100*alpha/2, axis=0)
upper_band = np.percentile(simulated, 100*(1-alpha/2), axis=0)
# Vẽ Q-Q plot
plt.scatter(theoretical_q, data_sorted, color="black", s=20)
plt.plot(theoretical_q, theoretical_q, 'r-') # đường chuẩn
plt.plot(theoretical_q, lower_band, 'r--') # band dưới
plt.plot(theoretical_q, upper_band, 'r--') # band trên
plt.title("Normal Quantile Plot with Bootstrap CI")
plt.xlabel("Theoretical Quantiles")
plt.ylabel("Sample Quantiles")
plt.show()