ANOVA sonrası post-hoc analiz

Python ile Deney Tasarımı

James Chapman

Curriculum Manager, DataCamp

Post-hoc testleri ne zaman kullanılır

 

  • Anlamlı ANOVA sonuçlarından sonra
  • İkili grup farklarını incelemek için

Mavi bir tiyatro perdesi, karikatür tarzı bir el tarafından çekilerek A, B, C ve D olarak etiketlenmiş dört renkli daireden oluşan ve ikili karşılaştırmaları temsil eden çizgilerle bağlanan bir ağı ortaya çıkarır. Bazı bağlantılar anlamlı farkları göstermek için yıldızlarla işaretlenmiş, diğerleri ise anlamlı değil olarak etiketlenmiştir. Bu görsel, ANOVA genel bir etki saptadıktan sonra post-hoc testlerin hangi grupların farklı olduğunu nasıl ortaya koyduğunu simgeler.

Python ile Deney Tasarımı

Temel post-hoc yöntemler

 

  • Tukey HSD (Honest Significant Difference)
    • Çoklu karşılaştırmalara dayanıklı
    • En iyisi: tüm gruplar arasında karşılaştırmalar
  • Bonferroni Düzeltmesi
    • Tip I hatayı kontrol etmek için p-değerlerini ayarlar
    • En iyisi: belirli karşılaştırmalar

John Tukey

Carlo Emilio Bonferroni

1 https://www.amphilsoc.org/item-detail/photograph-john-wilder-tukey 2 https://en.wikipedia.org/wiki/Carlo_Emilio_Bonferroni
Python ile Deney Tasarımı

Veri kümesi: pazarlama reklam kampanyaları

ad_campaigns
              Ad_Campaign  Click_Through_Rate
1300    Seasonal Discount        2.1659547732
1661          New Arrival        2.9409657365
2762       Loyalty Reward        3.2476777154
571     Seasonal Discount        3.3382186561
775     Seasonal Discount        1.7148876401
Python ile Deney Tasarımı

Pivot tablolarla veri düzenleme

pivot_table = ad_campaigns.pivot_table(values='Click_Through_Rate',
                                       index='Ad_Campaign',
                                       aggfunc="mean")
print(pivot_table)
                   Click_Through_Rate
Ad_Campaign                          
Loyalty Reward               2.792716
New Arrival                  3.013843
Seasonal Discount            2.518917
Python ile Deney Tasarımı

ANOVA yürütme

from scipy.stats import f_oneway
campaign_types = ['Seasonal Discount', 'New Arrival', 'Loyalty Reward']

groups = [ad_campaigns[ad_campaigns['Ad_Campaign'] == campaign]['Click_Through_Rate'] for campaign in campaign_types]
f_stat, p_val = f_oneway(*groups) print(p_val)
4.484124496940693e-134
Python ile Deney Tasarımı

Tukey HSD testi

from statsmodels.stats.multicomp import pairwise_tukeyhsd

tukey_results = pairwise_tukeyhsd(ad_campaigns['Click_Through_Rate'],
ad_campaigns['Ad_Campaign'],
alpha=0.05)
print(tukey_results)
         Multiple Comparison of Means - Tukey HSD, FWER=0.05          
===========================================================================
        group1             group2  meandiff  p-adj   lower    upper  reject
<hr />---------------------------------------------------------------------
Loyalty Reward        New Arrival    0.2211   0.0    0.176   0.2663    True
Loyalty Reward  Seasonal Discount   -0.2738   0.0  -0.3189  -0.2287    True
   New Arrival  Seasonal Discount   -0.4949   0.0  -0.5401  -0.4498    True
<hr />---------------------------------------------------------------------
Python ile Deney Tasarımı

Bonferroni düzeltmesi: kurulum

from scipy.stats import ttest_ind
from statsmodels.sandbox.stats.multicomp import multipletests

p_values = []
comparisons = [('Seasonal Discount', 'New Arrival'), ('Seasonal Discount', 'Loyalty Reward'), ('New Arrival', 'Loyalty Reward')]
for comp in comparisons: group1 = ad_campaigns[ad_campaigns['Ad_Campaign'] == comp[0]]['Click_Through_Rate'] group2 = ad_campaigns[ad_campaigns['Ad_Campaign'] == comp[1]]['Click_Through_Rate']
t_stat, p_val = ttest_ind(group1, group2)
p_values.append(p_val)
Python ile Deney Tasarımı

Bonferroni düzeltmesi uygulama

p_adjusted = multipletests(p_values, alpha=0.05, method='bonferroni')

print(f"Adjusted P-values: {p_adjusted[1]}")
Adjusted P-values: [5.33634403e-133 2.17627991e-043 5.62590083e-029]
Python ile Deney Tasarımı

Hadi pratik yapalım!

Python ile Deney Tasarımı

Preparing Video For Download...