paint-brush
Ölümsüz Somon Masalları: Çoklu Hipotez Testinde Bonferroni Düzeltmesini Keşfetmekile@igorkhomyanin
2,134 okumalar
2,134 okumalar

Ölümsüz Somon Masalları: Çoklu Hipotez Testinde Bonferroni Düzeltmesini Keşfetmek

ile Igor Khomyanin10m2023/05/24
Read on Terminal Reader
Read this story w/o Javascript

Çok uzun; Okumak

Bu makale, birden fazla hipotezin uygun ayarlamalar yapılmadan test edilmesi sorununu açıklamaktadır. Yanlış pozitif sonuçları kontrol etmek için bir çözüm olarak Bonferroni düzeltmesini sunar. Simülasyon düzeltmenin etkinliğini gösterir. Çoklu hipotez testlerinde düzeltmeleri anlamak ve uygulamak, doğru veri analizi ve karar verme için çok önemlidir.
featured image - Ölümsüz Somon Masalları: Çoklu Hipotez Testinde Bonferroni Düzeltmesini Keşfetmek
Igor Khomyanin HackerNoon profile picture
0-item


İstatistiksel çıkarım, örnek verilere dayanarak popülasyonlar hakkında sonuç çıkarmak ve tahminler yapmak için güçlü bir araçtır. Bilgiye dayalı kararlar almamızı ve farklı seçeneklerin etkinliğini anlamamızı sağlar . İstatistiksel çıkarımın popüler uygulamalarından biri, üstün performansı belirlemek için iki versiyonu veya tedaviyi karşılaştırdığımız A/B testidir . Ancak deneye daha fazla versiyon veya tedavi kattığımızda ne olur ?


Bir deneyde ek versiyonların tanıtılması, daha iyi kararlar alınması için bir fırsat gibi görünebilir. Ne yazık ki , doğru şekilde ele alınmazsa, test edilebilir hipotezlerin sayısının artması yanıltıcı sonuçlara ve yanlış kararlara yol açabilir . Bu zorluk çoklu karşılaştırma problemi olarak bilinir.


Bu makalede çoklu hipotez testi kavramını, potansiyel tuzaklarını açıklayacağım ve Python simülasyonu tarafından desteklenen olası bir çözümü sunacağım.


Çoklu hipotez testi nedir?

Çoklu hipotez testini anlamak için, iki değişkeni içeren basit bir A/B testinin temel kavramlarını inceleyerek başlayalım.


Bir A/B testinde, iki rakip hipotez formüle ederek başlıyoruz: değişkenler arasında fark olmadığını temsil eden sıfır hipotezi ve bir farkın varlığını öne süren alternatif hipotez .


Daha sonra alpha olarak gösterilen bir anlamlılık düzeyi belirleriz. Bu eşik, sıfır hipotezini reddetmek için gereken kanıt miktarını belirler. Yaygın olarak kullanılan anlamlılık seviyeleri 0,05 (%5) ve 0,01 (%1)'dir; bu , sıfır hipotezinin doğru olması durumunda verilerin gözlemlenme olasılığını gösterir.


Deneyi yürütüp verileri topladıktan sonra p değerlerini hesaplıyoruz. P-değeri, sıfır hipotezinin doğru olması durumunda, gözlemlenen veriler kadar aşırı veya bundan daha aşırı bir sonuç elde etme olasılığını temsil eder . Eğer p değeri alpha anlamlılık düzeyinden küçükse, sıfır hipotezini alternatif hipotez lehine reddederiz.


Düşük bir p değerinin sıfır hipotezine karşı güçlü bir kanıt ortaya koyduğunu ve gözlemlenen verilerin tek başına şans eseri ortaya çıkma ihtimalinin düşük olduğunu belirtmek önemlidir. Ancak bu kesinlik anlamına gelmez. Sıfır hipotezi doğru olsa bile örnekler arasında bir fark gözlemleme olasılığı sıfırdan farklı kalır.


Birden fazla alternatif hipotezin olduğu bir durumla karşılaştığımızda buna çoklu hipotez testi diyoruz. Bu gibi durumlarda, birden fazla testi aynı anda yürütmenin potansiyel etkisini dikkatle değerlendirmemiz gerektiğinden karmaşıklık artar.


Çoklu hipotez testinin tuzakları

Çoklu hipotez testinin tuzağı, alpha anlamlılık düzeyini ayarlamadan birden fazla hipotezi test ettiğimizde ortaya çıkar. Bu gibi durumlarda, yanlışlıkla "Tip I" hata oranını artırırız , bu da boş bir hipotezi reddetme eğiliminde olduğumuz (farkı bulun) anlamına gelirken, bu sıfır hipotezi aslında doğrudur (hiç fark yok).


Eş zamanlı olarak ne kadar çok hipotez test edersek, en az bir hipotez için alpha daha düşük bir p değeri bulma ve hatalı bir şekilde anlamlı bir fark sonucuna varma şansımız o kadar yüksek olur.


Bu sorunu açıklamak için, birden fazla yeni web sayfası tasarımından hangisinin istenen alpha = 0.05 ile daha fazla müşteri çektiğini belirlemek için N hipotezini test etmek istediğimiz bir senaryoyu düşünün. Yeni tasarımlardan hiçbirinin varsayılan tasarımdan daha iyi olmadığını bildiğimizi varsayalım; bu da sıfır hipotezinin tüm N durum için geçerli olduğu anlamına gelir.


Bununla birlikte, her durumda, "Tip I" hata veya yanlış pozitif yapma olasılığı %5'tir (sıfır hipotezinin doğru olduğu varsayılarak). Başka bir deyişle, yanlış pozitifin doğru şekilde tespit edilmeme olasılığı %95'tir. Teorik olarak, N test arasında en az bir yanlış pozitif olma olasılığı 1 - (1 - alpha)^N = 1 - 0.95^N eşittir. Örneğin, N = 10 olduğunda bu olasılık yaklaşık %40'tır ve başlangıçtaki %5'ten önemli ölçüde yüksektir.



Test edilebilir hipotezlerin sayısını daha da artırdığınızda ne olur?



Test edilen hipotezlerin sayısı arttıkça sorun daha da belirgin hale gelir. Yalnızca birkaç değişkenin ve alt örneğin dahil olduğu senaryolarda bile karşılaştırmaların sayısı hızla birikebilir. Örneğin, üç D1, D2 ve D3 tasarımının tüm kullanıcılar için, daha sonra C1 ülkesindeki kullanıcılar için ayrı ayrı ve yine C1 dışındaki ülkelerdeki kullanıcılar için karşılaştırılması, toplam dokuz karşılaştırmayla sonuçlanır. Tip I hata oranlarının müteakip enflasyonunu fark etmeden, farkında olmadan birden fazla karşılaştırma yapmak kolaydır.


Çoklu hipotez testleri kullanılarak bir somonun dirilişi

Her turuncu kare, beyin aktivitesine sahip bir vokseldir! Ölü bir somonun içinde!



Birden fazla hipotezi test ederken "Tip I" hataları kontrol etmemenin sonuçlarını vurgulayan ilgi çekici bir örneği inceleyelim.


2009 yılında bir grup araştırmacı ölü bir Atlantik somonu üzerinde fMRI taraması yaptı ve şaşırtıcı bir şekilde sanki canlıymış gibi beyin aktivitesi keşfetti! Bu beklenmedik sonucun nasıl ortaya çıktığını anlamak için fMRI taramalarının doğasını keşfetmemiz gerekiyor.


fMRI tarayıcıları, her hasta üzerinde çok sayıda testin yapıldığı kapsamlı deneysel platformlar olarak hizmet vermektedir . Tarayıcılar, beyin aktivitesinin bir göstergesi olarak kanın oksijenlenmesindeki değişiklikleri izliyor. Araştırmacılar genellikle belirli ilgi alanlarına odaklanır ve bu da onların tüm vücut hacmini voksel adı verilen küçük küplere bölmelerine yol açar. Her voksel, söz konusu küp içindeki beyin aktivitesinin varlığını test eden bir hipotezi temsil eder . Yüksek çözünürlüklü taramalara duyulan istek nedeniyle, fMRI tarayıcıları tek bir prosedür sırasında binlerce hipotezi değerlendirmek zorunda kalıyor.


Bu durumda, araştırmacılar başlangıçtaki alpha = 0.001 anlamlılık düzeyini kasıtlı olarak uygun şekilde düzeltmediler ve ölen somonda beyin aktivitesine sahip üç voksel belirlediler. Ancak bu sonuç, somonun gerçekten öldüğü yönündeki anlayışımızla çelişiyor. Anlamlılık düzeyinin düzeltilmesi üzerine yeniden diriliş benzeri olgu ortadan kalktı ve bu da Tip I hatalar sorununun ele alınmasının önemini ortaya koydu.


Tek bir deneyde birden fazla hipotez test edildiğinde, bu zorluğun üstesinden gelmek ve Tip I hataları kontrol etmek çok önemli hale gelir. Çoklu hipotez testleriyle ilişkili şişirilmiş yanlış pozitif oranı azaltmak için Bonferroni düzeltmesi gibi çeşitli istatistiksel teknikler kullanılabilir.


Bonferroni düzeltmesi

Bonferroni düzeltmesi, hipotez testi sırasında çoklu karşılaştırma zorluğunu gidermek için özel olarak tasarlanmış istatistiksel bir prosedürdür.

Teori

Bir deney sırasında Tip I hata olasılığının alpha altında kalmasını sağlarken N hipotezi test etmeniz gerektiğini varsayalım.


Prosedürün altında yatan fikir basittir: Her alternatif hipotez için sıfır hipotezini reddetmek için gereken önem düzeyini azaltın . En az bir yanlış pozitif olasılığı formülünü hatırlıyor musunuz? Bu formülde, genel olasılığı azaltmak için azaltılabilen alpha değerimiz var.


Dolayısıyla, birden fazla hipotez arasında en az bir yanlış pozitif olasılığının daha düşük olmasını sağlamak için her p değerini alpha ile değil daha küçük bir değerle karşılaştırabilirsiniz. Peki "daha küçük bir şey" tam olarak nedir?


bonferroni_alpha = alpha / N her bir hipotez için anlamlılık düzeyi olarak kullanılmasının, Tip I hatanın genel olasılığının alpha altında kalmasını sağladığı ortaya çıktı.


Örneğin, 10 hipotezi test ediyorsanız ( N = 10 ) ve istenen anlamlılık düzeyi %5 ( alpha = 0.05 ) ise, her bir p-değerini bonferroni_alpha = alpha / N = 0.05 / 10 = 0.005 ile karşılaştırmalısınız. dolayısıyla, en az bir doğru sıfır hipotezinin yanlışlıkla reddedilme olasılığı istenen 0,05 düzeyini aşmayacaktır.


Bonferroni düzeltmesinden sonra, tüm testlerde sıfır hipotezi geçerliyse olasılık tam olarak alfaya eşittir



Bu dikkat çekici teknik , olayların birleşme olasılığının, olayların bireysel olasılıklarının toplamından küçük veya ona eşit olduğunu belirten Boole eşitsizliği nedeniyle işe yarar. Resmi bir matematiksel kanıt mevcut olsa da görsel açıklamalar sezgisel bir anlayış sağlar:


Benim karalamalarım :)


Dolayısıyla, her bir hipotez bonferroni_alpha = alpha / N anlamlılık düzeyinde test edilirken, bonferroni_alpha yanlış pozitif olma ihtimali vardır. Bu tür N test için "yanlış pozitif" olayların birleşme olasılığı, bireysel olasılıkların toplamından daha az veya ona eşittir. Bu, tüm N testinde boş hipotezin geçerli olduğu en kötü senaryoda, N * bonferroni_alpha = N * (alpha / N) = alpha eşittir.


Pratik

Daha önce tartışılan kavramları daha da desteklemek için Python'da bir simülasyon yapalım. Sonuçları gözlemleyeceğiz ve Bonferroni düzeltmesinin etkinliğini değerlendireceğiz.


Tek bir testte 10 alternatif hipotezimizin olduğu bir senaryo düşünün. 10 durumun tamamında sıfır hipotezinin doğru olduğunu varsayalım. Analiziniz için alpha = 0.05 anlamlılık düzeyinin uygun olduğunu kabul ediyorsunuz. Bununla birlikte, şişirilmiş Tip I hataya yönelik herhangi bir düzeltme yapılmadan, en az bir hatalı pozitif sonucun yaşanmasının teorik olasılığının yaklaşık %40 olmasını bekliyoruz. Bonferroni düzeltmesi uygulandıktan sonra bu olasılığın %5'i aşmamasını bekliyoruz.


Belirli bir deney için ya en az bir Yanlış Pozitif alırız ya da alamayız. Bu olasılıklar ancak çoklu deney ölçeğinde görülebilir. Daha sonra her bir deneyin simülasyonunu 100 kez çalıştıralım ve en az bir Yanlış Pozitif (p değeri anlamlılık seviyesinin altında) içeren deneylerin sayısını hesaplayalım!


Bu simülasyonu çalıştırmak ve grafikler oluşturmak için tüm kodu içeren .ipynb dosyasını GitHub'daki havuzumda bulabilirsiniz - IgorKhomyanin/blog/bonferroni-and-salmon


 import numpy as np import matplotlib.pyplot as plt # To replicate the results np.random.seed(20000606) # Some hyperparameters too play with N_COMPARISONS = 10 N_EXPERIMENTS = 100 # Sample p-values # As we assume that null hypothesis is true, # the p-value would be distributed uniformly sample = np.random.uniform(0, 1, size=(N_COMPARISONS, N_EXPERIMENTS)) # Probability of type I error we are ready to accept # Probabiltiy of rejecting null hypothesis when it is actually true alpha = 0.05 # Theoretical False Positive Rate # # 1. # Probability that we cocnlude a significant difference for a given comparison # is equal to alpha by definition in our setting of true null hypothesis # Then [(1 - alpha)] is the probability of not rejecting the null hypothesis # # 2. # As experiments are considered independent, the probability of not rejecting # the null hypothesis in [(1 - alpha)]^N # # 3. # Probability that at least one is a false positive is equal to # 1 - (probability from 2.) prob_at_least_one_false_positive = 1 - ((1 - alpha) ** N_COMPARISONS) # Observed False Positive Rate # We conclude that experiment is a false positive when p-value is less than alpha false_positives_cnt = np.sum(np.sum(sample <= alpha, axis=0) > 0) false_positives_share = false_positives_cnt / N_EXPERIMENTS # Bonferroni correction bonferroni_alpha = alpha / N_COMPARISONS bonferroni_false_positive_comparisons_cnt = np.sum(np.sum(sample <= bonferroni_alpha, axis=0) > 0) bonferroni_false_positive_comparisons_share = bonferroni_false_positive_comparisons_cnt / N_EXPERIMENTS print(f'Theoretical False Positive Rate Without Correction: {prob_at_least_one_false_positive:0.4f}') print(f'Observed False Positive Rate Without Correction: {false_positives_share:0.4f} ({false_positives_cnt:0.0f} out of {N_EXPERIMENTS})') print(f'Observed False Positive Rate With Bonferroni Correction: {bonferroni_false_positive_comparisons_share:0.4f} ({bonferroni_false_positive_comparisons_cnt:0.0f} out of {N_EXPERIMENTS})') # Output: # Theoretical False Positive Rate Without Correction: 0.4013 # Observed False Positive Rate Without Correction: 0.4200 (42 out of 100) # Observed False Positive Rate With Bonferroni Correction: 0.0300 (3 out of 100)


İşte sonuçların görselleştirilmesi:


Bu grafiğin kodunu GitHub depomda bulabilirsiniz



Üstteki resim, her kareyi bireysel bir karşılaştırmanın (hipotez testi) p değeri olarak temsil eder. Kare ne kadar koyu olursa p değeri o kadar yüksek olur. Sıfır hipotezinin her durumda geçerli olduğunu bildiğimizden, herhangi bir anlamlı sonuç yanlış pozitif olacaktır.


P değeri anlamlılık seviyesinden düşük olduğunda (neredeyse beyaz karelerle gösterilir), sıfır hipotezini reddederiz ve yanlış pozitif sonuç elde ederiz. Ortadaki grafik düzeltmesiz deneyleri temsil ederken alttaki grafik Bonferroni düzeltmeli deneyleri temsil etmektedir. En az bir yanlış pozitif içeren deneyler kırmızı renkle renklendirilmiştir.


Açıkçası, düzeltme etkili bir şekilde işe yaradı. Düzeltme olmadan, 100 deneyden 42'sinde en az bir hatalı pozitiflik gözlemliyoruz; bu da teorik ~%40 olasılıkla yakından uyumludur. Bununla birlikte , Bonferroni düzeltmesi ile 100 deneyden yalnızca 3 tanesinde en az bir yanlış pozitiflik var ve istenen %5 eşiğinin oldukça altında kalıyor.


Bu simülasyon aracılığıyla, Bonferroni düzeltmesinin yanlış pozitiflerin oluşumunu azaltmadaki etkisini görsel olarak gözlemleyebiliriz ve bunun çoklu hipotez testindeki kullanışlılığını daha da doğrulayabiliriz.


Çözüm

Bu yazımda çoklu hipotez testi kavramını açıkladım ve potansiyel tehlikesine dikkat çektim. A/B testi sırasında birden fazla karşılaştırma yapmak gibi birden fazla hipotezi test ederken nadir görülen bir "Yanlış Pozitif" olayının gözlemlenme olasılığı artar. Bu artan olasılık, uygun şekilde ele alınmadığı takdirde tesadüfen meydana gelmiş olabilecek önemli etkiler hakkında hatalı sonuçlara varılmasına yol açabilir.


Bu soruna olası bir çözüm, her bir hipotez için anlamlılık düzeylerini ayarlayan Bonferroni düzeltmesidir . Boole eşitsizliğinden yararlanan bu düzeltme, genel anlamlılık düzeyinin istenen eşikte kontrol edilmesine yardımcı olarak yanlış pozitif riskini azaltır.


Ancak her çözümün bir bedeli olduğunu bilmek önemlidir. Bonferroni düzeltmesi kullanıldığında gerekli önem düzeyi azalır ve bu da deneyin gücünü etkileyebilir. Bu, aynı farklılıkları tespit etmek için daha büyük bir örneklem büyüklüğünün veya daha güçlü etkilerin gerekli olabileceği anlamına gelir. Araştırmacılar, Bonferroni düzeltmesini veya diğer düzeltme yöntemlerini uygulamaya karar verirken bu ödünleşimi dikkatle düşünmelidir.


Bu makalede ele alınan içerikle ilgili herhangi bir sorunuz veya yorumunuz varsa, lütfen bunları paylaşmaktan çekinmeyin. İstatistiksel tekniklerin daha fazla tartışılması ve araştırılması, pratikte daha iyi anlaşılması ve uygulanması için esastır.


Referanslar