Chuyển đến nội dung chính

Giới thiệu về T-test trong Python

Tìm hiểu cách thực hiện t-test trong Python với hướng dẫn này. Hiểu các loại t-test khác nhau - kiểm định một mẫu, kiểm định hai mẫu, kiểm định cặp đôi và kiểm định Welch, và khi nào nên sử dụng chúng.
Đã cập nhật 5 thg 10, 2026  · 13 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

Trong thế giới lấy dữ liệu làm trọng tâm ngày nay, doanh nghiệp không thể chỉ dựa vào trực giác để đưa ra các quyết định quan trọng. Thay vào đó, họ cần sử dụng các kỹ thuật thống kê như kiểm định giả thuyết để củng cố hành động bằng dữ liệu chắc chắn. Một phép kiểm định phổ biến cho mục đích này là t-test, cho phép bạn so sánh trung bình của hai nhóm và xác định liệu chúng có khác nhau một cách có ý nghĩa thống kê hay không.

Vậy làm thế nào để áp dụng t-test trong thực tế, và diễn giải kết quả ra sao? Trong hướng dẫn này, chúng tôi sẽ khám phá những câu hỏi này và nhiều hơn nữa. Cụ thể, chúng tôi sẽ hướng dẫn bạn qua một kịch bản ví dụ khi bạn muốn đánh giá mức độ thành công của một tính năng mới mà doanh nghiệp vừa ra mắt. Chúng tôi sẽ chỉ cho bạn cách sử dụng t-test trong Python và các thư viện mạnh mẽ của nó để phân tích kết quả.

Kết thúc hướng dẫn, bạn sẽ nắm vững t-test và có thể tự tin áp dụng vào dữ liệu của mình.

Trong hướng dẫn này, chúng ta sẽ tìm hiểu các loại t-test khác nhau – kiểm định một mẫu, kiểm định hai mẫu, kiểm định cặp đôi (paired t-test) và kiểm định Welch – cùng với ứng dụng của chúng và khi nào nên sử dụng.  

Giải thích thuật ngữ

Trước khi đi sâu vào chi tiết của t-test, hãy nhanh chóng tìm hiểu một số thuật ngữ liên quan giúp bạn củng cố nền tảng khái niệm về phép kiểm định thống kê này.

Kiểm định giả thuyết

Kiểm định giả thuyết là quá trình bắt đầu với một giả định hay giả thuyết không (null) và tìm kiếm bằng chứng để bác bỏ nó. Giả thuyết không đại diện cho hiện trạng, trong khi giả thuyết đối (alternative) đại diện cho điều ngược lại với giả thuyết không. 

Ví dụ, chúng ta có thể dùng kiểm định giả thuyết để xác định liệu một tính năng mới do doanh nghiệp tung ra có nhận được phản hồi tích cực từ khách hàng và được phản ánh trong chỉ số thành công hay không. Xem khóa học kiểm định giả thuyết của chúng tôi để tìm hiểu thêm.

Giá trị p (P-Value) 

Giá trị p là xác suất thu được kết quả cực đoan như đã quan sát, giả sử giả thuyết không là đúng. Giá trị p nhỏ cho thấy xác suất thu được kết quả như vậy là rất thấp nếu giả thuyết không đúng.

Mức ý nghĩa

Mức ý nghĩa, ký hiệu alpha, là xác suất bác bỏ giả thuyết không trong khi giả thuyết này thực sự đúng. Nó còn được gọi là lỗi loại I.

Ý nghĩa thống kê

Ý nghĩa thống kê đề cập đến mức độ tin cậy rằng kết quả quan sát không phải do ngẫu nhiên. Cần lưu ý rằng ý nghĩa thống kê không nhất thiết đồng nghĩa với ý nghĩa thực tiễn, vì kết quả quan sát có thể vẫn không đáng kể về mặt ứng dụng. Lỗi lấy mẫu cũng có thể góp phần tạo ra ý nghĩa thống kê nếu mẫu không đại diện chính xác cho tổng thể lớn hơn. 

Các giả định của t-test

Hiểu rõ các giả định của một phép kiểm định thống kê là rất quan trọng để đảm bảo kết quả chính xác và đáng tin cậy. T-test cũng không ngoại lệ. Bất kỳ vi phạm nào đối với các giả định của nó đều có thể dẫn đến kết luận sai lệch, gây phản tác dụng. Hãy cùng xem chi tiết bốn giả định của t-test:

Tính độc lập

Thứ nhất, tính độc lập quy định rằng các quan sát không bị ảnh hưởng bởi bất kỳ yếu tố ngầm nào trong dữ liệu và không có tương quan theo thời gian. Để đảm bảo tính độc lập, có thể áp dụng nhiều kỹ thuật để xử lý dữ liệu phụ thuộc, như được giải thích bởi Đại học Texas tại Austin.

Phân phối đồng nhất (Identically Distributed) 

Thứ hai, sự hiện diện của ngoại lệ (outlier) hay các bản ghi dữ liệu bất thường có thể làm giảm giá trị t-statistic và làm tăng phương sai trong dữ liệu, ảnh hưởng đến xác suất bác bỏ giả thuyết không. Do đó, cần xác định và hiểu rõ nguyên nhân dẫn đến hành vi bất thường để quyết định liệu đó là dữ liệu hợp lệ hay lỗi. Tham vấn chuyên gia lĩnh vực có thể giúp hiểu đúng bản chất hành vi của dữ liệu.

Phân phối chuẩn (Normally Distributed) 

Thứ ba, t-test chỉ hợp lệ với dữ liệu có phân phối chuẩn. Dữ liệu lệch có thể dẫn đến việc bác bỏ sai giả thuyết không. Tuy nhiên, khó kiểm tra phân phối chuẩn khi số điểm dữ liệu hạn chế. Trong những trường hợp như vậy, có thể dùng các kiểm định phi tham số không giả định phân phối dữ liệu hoặc thực hiện biến đổi dữ liệu như một biện pháp hiệu chỉnh để đạt gần chuẩn. cases, it is suggested to either use a nonparametric test (which does not make a distributional assumption of data) or perform data transformation as a corrective measure toward normality.

Phương sai bằng nhau 

Cuối cùng, hai quần thể được so sánh nên có phương sai bằng nhau để t-test có giá trị. Có thể kiểm tra điều này bằng trực quan qua Q-Q plot.

Giờ đây khi đã hiểu rõ các giả định của t-test, hãy khám phá các loại t-test khác nhau thông qua ví dụ Python. Kết thúc hướng dẫn, bạn sẽ có đủ kiến thức để thực hiện t-test và tự tin diễn giải kết quả.

Kiểm định t một mẫu 

Kiểm định t một mẫu là kiểm định giả thuyết thống kê giúp xác định liệu trung bình tổng thể chưa biết (mu) có khác với một giá trị được tuyên bố hay không. 

t-test equation

Trong đó,

x = trung bình mẫu

𝝁 = trung bình tổng thể

S = độ lệch chuẩn mẫu

n = số lượng quan sát trong mẫu

t = t-statistic

Hãy hiểu điều này qua một ví dụ. Một công ty tuyên bố sản xuất vòng bi có đường kính 10 cm (giả thuyết không), và bạn quyết định kiểm tra xem điều đó có đúng không. Bạn thu thập 21 vòng bi từ nhiều cửa hàng quanh thành phố và đo đường kính của chúng. Bạn cần xác định xem tuyên bố của công ty là sai (giả thuyết đối) dựa trên các phép đo.

Bài kiểm định được thiết kế như sau:

Giả thuyết không:             H0 : x  = 𝝁

Giả thuyết đối:  Ha : x  ≠ 𝝁 

Sơ đồ luồng T-test

Để tuyên bố điều trên là sai, bạn cần chứng minh một cách thống kê rằng các phép đo từ mẫu vòng bi khác với 10 cm mà công ty đưa ra. Vì kích thước mẫu là 21 (ít hơn 30), chúng ta dùng t-test. Ở đây trung bình mẫu là 11 cm và độ lệch chuẩn là 1 cm.

Ví dụ kiểm định t một mẫu trong Python

Hãy học cách thực hiện t-test một mẫu trong Python bằng hàm scipy.stats.ttest_1samp(). 

import numpy as np  
from scipy import stats  

# Population Mean 
mu = 10

# Sample Size
N1 = 21

# Degrees of freedom  
dof = N1 - 1

# Generate a random sample with mean = 11 and standard deviation = 1
x = np.random.randn(N1) + 11

# Using the Stats library, compute t-statistic and p-value
t_stat, p_val = stats.ttest_1samp(a=x, popmean = mu)
print("t-statistic = " + str(t_stat))  
print("p-value = " + str(p_val)) 
t-statistic = 4.689539773390642
p-value = 0.0001407967502139183

Diễn giải kết quả kiểm định

Giá trị t-statistic bằng 4,69 dường như rất xa so với trung bình 0 trong phân phối t. Để định lượng mức cực đoan đó, chúng ta tham chiếu giá trị p (được giới thiệu ở phần thuật ngữ). Giá trị p nhỏ hơn mức ý nghĩa mặc định 0,05, cho thấy xác suất xảy ra kết quả cực đoan như vậy gần bằng 0 và do đó có thể bác bỏ giả thuyết không.

Lưu ý rằng mức ý nghĩa được thiết lập ngay từ đầu thí nghiệm.

Một cách tiếp cận khác

Hãy thực hiện t-test một mẫu mà không dùng hàm ttest_1samp(). Trong trường hợp này, t-statistic được xác định bởi hiệu giữa trung bình mẫu và trung bình tổng thể chia cho sai số chuẩn, như đã thảo luận ở phần trước. 

  • Đầu tiên, tính trung bình mẫu (x_bar)
  • Tiếp theo, tính độ lệch chuẩn mẫu với bậc tự do bằng một (đại diện cho độ lệch chuẩn của mẫu).
  • Tính sai số chuẩn bằng cách chia độ lệch chuẩn cho căn bậc hai của kích thước mẫu.
  • Dùng công thức t-statistic cho một mẫu như đã giải thích.
  • Tính giá trị p để xác lập ý nghĩa của t-statistic.
# Sample Mean
x_bar = x.mean()

# Standard Deviation  
std = np.std(x, ddof=1)

# Standard Error
ste = std/np.sqrt(N1)

# Calculating the T-Statistics  
t_stat = (x_bar - mu) / ste

# p-value of the t-statistic
p_val = 2*(1 - stats.t.cdf(abs(t_stat), df = dof))
print("t-statistic = " + str(t_stat))  
print("p-value = " + str(p_val)) 
t-statistic = 4.689539773390642
p-value = 0.0001407967502139183

Cách thực hiện kiểm định t hai mẫu trong Python

Hãy mở rộng ví dụ bằng cách giả định công ty lập thêm một nhà máy khác để sản xuất các vòng bi giống hệt nhau. Chúng ta cần tìm xem vòng bi từ hai nhà máy có kích thước khác nhau hay không. Trong kịch bản này, chúng ta dùng t-test hai mẫu. Ở đây t-statistic được định nghĩa như dưới đây. 

Two sample t-test equation

Trong đó,

X1= trung bình mẫu thứ nhất

X2 = trung bình mẫu thứ hai

S1 = độ lệch chuẩn mẫu thứ nhất

S2 = độ lệch chuẩn mẫu thứ hai

N1 = kích thước mẫu thứ nhất

N2 = kích thước mẫu thứ hai

Ví dụ kiểm định t hai mẫu trong Python

Giả sử nhà máy thứ nhất cung cấp 21 mẫu vòng bi với đường kính trung bình là 10,5 cm. Trong khi đó, nhà máy thứ hai cung cấp 25 mẫu với đường kính trung bình 9,5 cm. Cả hai đều có độ lệch chuẩn 1 cm. 

# Sample Sizes
N1, N2 = 21, 25

# Degrees of freedom  
dof = min(N1,N2) - 1

# Gaussian distributed data with mean = 10.5 and var = 1  
x = np.random.randn(N1) + 10.5

# Gaussian distributed data with mean = 9.5 and var = 1  
y = np.random.randn(N2) + 9.5

## Using the internal function from SciPy Package  
t_stat, p_val = stats.ttest_ind(x, y)  
print("t-statistic = " + str(t_stat))  
print("p-value = " + str(p_val))
t-statistic = 3.18913308431476
p-value = 0.0026296199823557754

Diễn giải kết quả kiểm định

Dựa vào giá trị p bằng 0,0026 nhỏ hơn mức ý nghĩa 0,05, chúng ta bác bỏ giả thuyết không, cho rằng vòng bi từ hai nhà máy là không giống hệt nhau.

Cách thực hiện kiểm định t cặp đôi (Paired t-test) trong Python

Sau khi chia sẻ các kết quả này với công ty, họ quyết định cải tiến công nghệ sản xuất bằng cách đưa vào một máy đúc mới. Họ bắt đầu thử nghiệm thí điểm tại một nhà máy và tiến hành kiểm tra để xác định liệu máy đúc mới có dẫn đến thay đổi đường kính vòng bi hay không bằng cách so sánh hai mẫu gồm 25 vòng bi – một mẫu trước khi đưa máy mới vào và một mẫu sau đó. 

Đường kính trung bình lần lượt là 10,5 cm và 9,9 cm. 

Ví dụ kiểm định t cặp đôi trong Python

Hãy thực hiện paired t-test để kiểm tra liệu sự thay đổi có ý nghĩa thống kê hay không.

# Sample Sizes
N = 25

# Degrees of freedom  
dof = N - 1

# Gaussian distributed data with mean = 10.5 and var = 1  
x = np.random.randn(N) + 10.5

# Gaussian distributed data with mean = 9.9 and var = 1  
y = np.random.randn(N) + 9.9

t_stat, p_val = stats.ttest_rel(x,y)
print("t-statistic = " + str(t_stat))  
print("p-value = " + str(p_val))
t-statistic = 3.446152658909739
p-value = 0.0021043953630465787

Diễn giải kết quả kiểm định

Giá trị p thấp cho thấy giả thuyết không bị bác bỏ, tức là không có thay đổi về đường kính vòng bi sau khi đưa máy đúc mới vào. 

Lưu ý đối với paired t-test

Các giả định của paired t-test áp dụng trên phần chênh lệch của từng cặp, không áp dụng trên các quan sát gốc. Do đó, cần đảm bảo rằng các chênh lệch giữa các cặp có phân phối đối xứng và không có ngoại lệ. 

Cách thực hiện kiểm định t của Welch trong Python

Sau khi thí điểm thành công máy đúc mới tại một nhà máy, công ty muốn thử một thí điểm khác tại nhà máy thứ hai với một máy mài mới. Máy này được biết đến là tạo ra vòng bi có độ chính xác cao nhưng bị ảnh hưởng bởi thay đổi nhiệt độ và dao động nguồn điện. Công ty cần xác định liệu vòng bi từ hai nhà máy có khác nhau hay không bằng cách so sánh  21 mẫu từ nhà máy thứ nhất và 25 mẫu từ nhà máy thứ hai. 

Ví dụ kiểm định t của Welch trong Python

Đường kính trung bình của vòng bi từ nhà máy thứ nhất là 9,9 cm với độ lệch chuẩn 1 cm, trong khi đường kính trung bình từ nhà máy thứ hai là 10 cm với độ lệch chuẩn 3 cm.  Vì độ lệch chuẩn của hai mẫu khác nhau, chúng ta sẽ dùng kiểm định t của Welch.

# Sample Sizes
N1, N2 = 21, 25

# Degrees of freedom  
dof = min(N1,N2) - 1

# Gaussian distributed data with mean = 9.9 and var = 1  
x = np.random.randn(N1) + 9.9

# Gaussian distributed data with mean = 10 and var = 3
y = 3*np.random.randn(N2) + 10

## Using SciPy Package  
t_stat, p_val = stats.ttest_ind(x, y, equal_var = False) 
print("t-statistic = " + str(t_stat))  
print("p-value = " + str(p_val))
t-statistic = 1.3828843424092643
p-value = 0.17753505304053804

Diễn giải kết quả kiểm định

Giá trị p quan sát được lớn hơn mức ý nghĩa 0,05, cho thấy chúng ta không bác bỏ giả thuyết không, hàm ý rằng vòng bi từ hai nhà máy là giống hệt nhau. Chúng ta không thể chắc chắn về kết quả do độ lệch chuẩn cao của mẫu từ nhà máy thứ hai; do đó cần thu thập thêm mẫu để thực hiện z-test. 

Lưu ý đối với kiểm định t của Welch 

Không giống các t-test khác, kiểm định t của Welch áp dụng cho trường hợp phương sai tổng thể không bằng nhau

Kết luận

Dữ liệu chỉ có thể hé lộ hiện tượng nền tảng thực sự ảnh hưởng đến quyết định kinh doanh nếu được khai thác đúng cách. Điều đó đòi hỏi hiểu biết vững chắc về các phép kiểm định thống kê khác nhau để biết áp dụng loại nào và khi nào. Hướng dẫn này tập trung vào t-test và giải thích các giả định của chúng, như các quan sát độc lập và phân phối đồng nhất, cũng như phân phối chuẩn. 

Bên cạnh phần giới thiệu nhanh về kiểm định giả thuyết, hướng dẫn này cũng cung cấp cái nhìn toàn diện về các loại t-test khác nhau với ví dụ minh họa. Chúng tôi khuyến khích bạn thực hành thực hiện t-test bằng Python và đánh giá loại nào phù hợp để xác định ý nghĩa thống kê của thí nghiệm của bạn.    

Tài liệu tham khảo và nguồn khuyến nghị:

Chủ đề
Python
Phân tích dữ liệu
Liên quan

blog

Claude Opus 4.6: Tính năng, Điểm chuẩn, Bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu ở mã hóa tác tử và lập luận phức tạp. Thêm vào đó, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem ThêmXem Thêm