![Search icon](https://hackernoon.imgix.net/search-new.png?w=19&h=19)
Khi tìm hiểu sâu về dữ liệu, tìm cách khám phá những viên ngọc sâu sắc ẩn giấu, chúng ta thường thấy mình phải đưa ra một loạt giả thuyết. Hãy tưởng tượng bạn đang tham dự một bữa tiệc nơi mọi vị khách đều đeo mặt nạ và bạn đang cố gắng tìm ra kẻ đứng sau mỗi người. Càng đoán nhiều người thì khả năng mắc sai lầm càng cao. Đây là khó khăn của bài toán so sánh nhiều lần trong thống kê - với mỗi giả thuyết bạn kiểm tra, một giả thuyết khác lại xuất hiện, làm tăng khả năng bạn mắc sai lầm ít nhất một lần. Hãy chia nhỏ khái niệm này bằng một số phong cách Python và một chút hài hước để khiến mọi thứ trở nên nhẹ nhàng.
Hãy hình dung thế này: bạn đang tiến hành các thí nghiệm hoặc khảo sát và bạn có cả một danh sách các câu hỏi (giả thuyết) mà bạn đang cố gắng trả lời. Điều đáng chú ý là bạn càng đặt nhiều câu hỏi thì bạn càng có nhiều khả năng nhận được một số câu trả lời sai (xin chào, lỗi Loại I !). Đó là một lỗi của bên thống kê được gọi là vấn đề so sánh nhiều lần.
Giả thuyết Không (H0): Giả thuyết Không là giả định cơ bản của bạn rằng không có gì đặc biệt xảy ra. Nó giống như việc nhìn một vị khách trong bữa tiệc của bạn và nói, "Bạn chỉ là một người bình thường, không phải một người nổi tiếng đeo mặt nạ." Khi chúng tôi thử nghiệm nhiều giả thuyết, về cơ bản chúng tôi đang kiểm tra một nhóm khách để xem có ai trong số họ là người nổi tiếng hay không.
Lỗi Loại I: Lỗi Loại I là khi bạn nhầm tưởng rằng mình đã nhìn thấy một người nổi tiếng nhưng đó chỉ là một người mặc trang phục thực sự đẹp. Trong thế giới thống kê, đó là khi bạn bác bỏ giả thuyết không một cách sai lầm, nghĩ rằng bạn đã tìm thấy một tác động hoặc sự khác biệt đáng kể trong khi thực tế không hề có.
Tỷ lệ lỗi thông minh dành cho gia đình (FWER): FWER giống như cực kỳ lo lắng về việc xác định nhầm ngay cả một vị khách thường xuyên là người nổi tiếng trong bữa tiệc của bạn. Đó là xác suất mắc ít nhất một lỗi Loại I trong số tất cả các bài kiểm tra bạn đang chạy. Nếu bạn đang kiểm tra 20 giả thuyết, FWER quan tâm đến việc không mắc phải một lỗi nào trong tất cả 20 bài kiểm tra. Những sửa đổi như điều chỉnh Bonferroni giúp kiểm soát FWER bằng cách làm cho các tiêu chí về mức ý nghĩa trở nên nghiêm ngặt hơn. Chúng làm giảm khả năng bạn mắc bất kỳ lỗi Loại I nào, đảm bảo bạn không làm bản thân xấu hổ khi gọi nhầm "người nổi tiếng".
Tỷ lệ phát hiện sai (FDR): FDR thiên về sự cân bằng. Nó giống như nói, "Được rồi, tôi có thể nhầm lẫn gọi một số khách quen là người nổi tiếng, nhưng tôi muốn đảm bảo rằng tôi bắt được càng nhiều người nổi tiếng thực sự càng tốt." FDR kiểm soát tỷ lệ phát hiện sai dự kiến trong số tất cả phát hiện mà bạn thực hiện. Nó thoải mái hơn một chút so với FWER, cho phép bạn sai về một số khách là người nổi tiếng miễn là bạn luôn đúng. Cách tiếp cận này hữu ích khi bạn chấp nhận một số rủi ro để khám phá thêm thông tin chi tiết tiềm năng, đồng thời thừa nhận rằng một số cảnh báo sai là một phần của quy trình.
Chỉnh sửa Bonferroni là người bạn cực kỳ thận trọng của bạn trong một bữa tiệc, đảm bảo bạn không mắc bất kỳ sai lầm nào khi xác định những người nổi tiếng trong đám đông. Nó đòi hỏi bạn phải chắc chắn hơn về mỗi khám phá khi bạn xem xét nhiều khả năng cùng một lúc.
Làm thế nào nó hoạt động:
Công thức:
Trong đó α là mức độ chắc chắn ban đầu của bạn (thường là 0,05) và n là số lượng giả thuyết bạn đang thử nghiệm.
Sự va chạm:
Phương pháp này làm giảm đáng kể khả năng phát hiện sai (lỗi Loại I) bằng cách đặt tiêu chuẩn cao hơn cho những gì được coi là kết quả quan trọng. Tuy nhiên, sự khắt khe của nó cũng có thể khiến bạn không thể nhận ra những phát hiện đúng đắn, giống như việc bạn không nhận ra một người nổi tiếng vì quá tập trung vào việc không mắc sai lầm.
Về bản chất, việc hiệu chỉnh Bonferroni ưu tiên tránh các kết quả dương tính giả có nguy cơ bỏ lỡ những khám phá thực sự, khiến nó trở thành một lựa chọn thận trọng trong việc kiểm tra giả thuyết.
Hãy bắt tay vào sử dụng một số mã Python để điều hướng qua mê cung nhiều giả thuyết này mà không mất đi sự tỉnh táo.
Trước tiên, hãy đảm bảo bạn có công cụ phù hợp cho công việc:
pip install numpy statsmodels
và tiếp tục
from statsmodels.stats.multitest import multipletests import numpy as np # Imagine these are your p-values from testing various hypotheses p_values = [0.005, 0.0335, 0.098543, 0.00123] # Let's say we did 4 tests # Applying Bonferroni correction bonf_rejected, bonf_corrected, _, _ = multipletests(p_values, alpha=0.05, method='bonferroni') print("Bonferroni Approach") print(f"Rejected: {bonf_rejected}") print(f"Adjusted p-values: {bonf_corrected}\n")
Hãy chia nhỏ những gì chúng ta có được sau khi áp dụng hiệu chỉnh Bonferroni cho giá trị p của bạn:
Các giả thuyết bị bác bỏ : Hiệu chỉnh Bonferroni cho chúng ta biết những giả thuyết nào nên bị bác bỏ dựa trên ngưỡng đã hiệu chỉnh. Ở đây, giả thuyết đầu tiên ( True
) và cuối cùng ( True
) bị bác bỏ, nghĩa là chúng hiển thị kết quả có ý nghĩa thống kê ngay cả sau khi điều chỉnh cho nhiều so sánh.
Giá trị p được điều chỉnh : Giá trị p được điều chỉnh là [0.02, 0.134, 0.394172, 0.00492]
. Việc điều chỉnh làm tăng giá trị p để kiểm soát nguy cơ gia tăng lỗi Loại I (dương tính giả) đi kèm với nhiều thử nghiệm.
Giải thích: Đối với các giá trị p [0.005, 0.00123]
(bản gốc): Sau khi hiệu chỉnh, đây là [0.02, 0.00492]
. Chúng vẫn ở dưới ngưỡng 0,05, cho thấy những phát hiện này có ý nghĩa thống kê
Sự điều chỉnh của Benjamin-Hochberg đóng vai trò như một người gác cổng cân bằng trong một bữa tiệc, quản lý một cách khéo léo nguy cơ nhầm lẫn những vị khách thường xuyên với những người nổi tiếng mà không quá nghiêm khắc. Nó tìm thấy điểm trung gian, cho phép bạn tự tin xác định những khám phá thực sự trong khi chấp nhận mức độ rủi ro có thể quản lý được.
Làm thế nào nó hoạt động:
Tình huống: Bạn đang đánh giá nhiều phát hiện, tương tự như việc phát hiện những người nổi tiếng trong số những người dự tiệc.
Chiến lược của Benjamin-Hochberg: Phương pháp này điều chỉnh các mức ý nghĩa dựa trên thứ hạng của từng giá trị p, cho phép cách tiếp cận linh hoạt hơn so với hiệu chỉnh Bonferroni cứng nhắc. Nó kiểm soát Tỷ lệ phát hiện sai (FDR), là tỷ lệ dự kiến của các phát hiện sai trong số tất cả các phát hiện được thực hiện.
Quá trình:
Xếp hạng giá trị P: Từ nhỏ nhất đến lớn nhất.
Điều chỉnh mức ý nghĩa: Đối với mỗi giả thuyết, nó tính toán một ngưỡng khác nhau, ngưỡng này trở nên dễ chấp nhận hơn đối với các giả thuyết có giá trị p nhỏ hơn. Điều này dựa trên thứ hạng của họ và tổng số bài kiểm tra.
Sự va chạm:
Bằng cách tập trung vào việc kiểm soát FDR, hiệu chỉnh Benjamin-Hochberg cho phép nhiều khám phá được công nhận là quan trọng hơn, chấp nhận rằng một số phát hiện có thể là dương tính giả nhưng đảm bảo rằng tỷ lệ chung của các lỗi này được kiểm soát. Cách tiếp cận này đặc biệt hữu ích khi bạn đang khám phá nhiều giả thuyết và sẵn sàng chấp nhận những khám phá sai lầm ở một mức độ nhất định để không bỏ lỡ những phát hiện quan trọng.
Tóm lại, hiệu chỉnh Benjamin-Hochberg mang lại sự cân bằng thực tế giữa việc khám phá các tác động thực sự và kiểm soát tỷ lệ dương tính giả, khiến nó trở thành một công cụ có giá trị cho các nhà nghiên cứu xử lý nhiều so sánh.
Python để giải cứu:
# Benjamini-Hochberg correction for the brave from statsmodels.stats.multitest import multipletests import numpy as np # Imagine these are your p-values from testing various hypotheses p_values = [0.005, 0.0335, 0.098543, 0.00123] # Let's say we did 4 tests # Applying BH correction bh_rejected, bh_corrected, _, _ = multipletests(p_values, alpha=0.05, method='fdr_bh') print("Benjamini-Hochberg Approach") print(f"Rejected: {bh_rejected}") print(f"Adjusted p-values: {bh_corrected}")
Các giả thuyết bị bác bỏ : [True, True, False, True]
cho biết những giả thuyết nào bị bác bỏ dựa trên giá trị p đã điều chỉnh. Trong trường hợp này, các giả thuyết thứ 1, 2 và 4 đều bị bác bỏ, cho thấy những phát hiện quan trọng trong những trường hợp này.
Giá trị p được điều chỉnh : [0.01, 0.04466667, 0.098543, 0.00492]
tương ứng với mức ý nghĩa được điều chỉnh của từng giả thuyết sau khi hiệu chỉnh. Các giá trị này được so sánh với mức alpha (trong trường hợp này là 0,05) để xác định giả thuyết nào bị bác bỏ.
Giải thích: Đối với các giá trị p [0.005, 0.0335, 0.00123]
(bản gốc): Sau khi hiệu chỉnh, đây là [0.01, 0.04466667, 0.00492]
. Chúng vẫn ở dưới ngưỡng 0,05, cho thấy những phát hiện này có ý nghĩa thống kê
Giả thuyết thứ nhất và thứ tư (Được cả hai công nhận): Đây giống như những người nổi tiếng không thể nhầm lẫn mà mọi người đều nhận ra, bất kể bạn thận trọng hay mạo hiểm đến đâu. Cả hai phương pháp đều đồng ý rằng những phát hiện này rất quan trọng, giống như việc tìm ra những người nổi tiếng trong danh sách không thể bỏ qua.
Giả thuyết thứ hai (Được BH công nhận nhưng không được Bonferroni công nhận): Giả thuyết này thể hiện một người nổi tiếng thích hợp hơn hoặc mới nổi hơn mà phương pháp BH, với sự pha trộn giữa thận trọng và lạc quan, sẵn sàng đặt cược vào. Tuy nhiên, Bonferroni cực đoan thích cẩn thận, bỏ lỡ cơ hội vì sợ kết quả dương tính giả.
Phép ẩn dụ này nêu bật sự cân bằng vốn có giữa độ nhạy và độ đặc hiệu trong hiệu chỉnh thống kê và tầm quan trọng của việc chọn phương pháp tiếp cận phù hợp dựa trên bối cảnh nghiên cứu của bạn hoặc, theo cách so sánh vui nhộn của chúng tôi, loại bữa tiệc mà bạn đang tham dự.
Việc xem xét nhiều giả thuyết cũng giống như việc điều hướng một bãi mìn chứa các lỗi thống kê. Nhưng với các công cụ phù hợp (cảm ơn Python!) và các chiến lược (xin chào Bonferroni và Benjamin-Hochberg), bạn có thể giải quyết vấn đề này trong khi vẫn duy trì tính chính trực về mặt khoa học của mình. Hãy nhớ rằng, tất cả là về việc cân bằng rủi ro và phần thưởng. Bất kể bạn đang tái bảo hiểm hay theo đuổi vàng, việc hiểu và sửa chữa nhiều so sánh sẽ khiến kết luận của bạn đáng tin cậy hơn nhiều. Chúc bạn săn dữ liệu vui vẻ!