การวิเคราะห์ post-hoc หลัง ANOVA

การออกแบบการทดลองด้วย Python

James Chapman

Curriculum Manager, DataCamp

เมื่อใดควรใช้การทดสอบ post-hoc

 

  • หลังจากผล ANOVA มีนัยสำคัญ
  • เพื่อสำรวจความแตกต่างระหว่างกลุ่มแบบคู่

ม่านโรงละครสีน้ำเงินถูกดึงเปิดโดยมือในสไตล์การ์ตูน เผยให้เห็นเครือข่ายวงกลมสี่สีที่มีป้ายกำกับ A, B, C และ D เชื่อมต่อกันด้วยเส้นที่แสดงการเปรียบเทียบแบบคู่ บางการเชื่อมต่อมีเครื่องหมายดอกจันแสดงความแตกต่างที่มีนัยสำคัญ ส่วนอื่นระบุว่าไม่มีนัยสำคัญ ภาพนี้แสดงให้เห็นว่าการทดสอบ post-hoc ช่วยระบุกลุ่มที่แตกต่างกันหลัง ANOVA ตรวจพบผลโดยรวม

การออกแบบการทดลองด้วย Python

วิธี post-hoc ที่สำคัญ

 

  • Tukey's HSD (Honest Significant Difference)
    • เหมาะสำหรับการเปรียบเทียบหลายคู่
    • ดีที่สุดสำหรับ การเปรียบเทียบทุกกลุ่ม
  • Bonferroni Correction
    • ปรับค่า p-value เพื่อควบคุม Type I error
    • ดีที่สุดสำหรับ การเปรียบเทียบเฉพาะเจาะจง

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

ชุดข้อมูล: แคมเปญโฆษณาการตลาด

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

จัดระเบียบข้อมูลด้วย pivot table

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

การทำ ANOVA

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

การทดสอบ Tukey's HSD

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

การตั้งค่า Bonferroni correction

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

การทำ Bonferroni correction

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

มาฝึกกันเถอะ!

การออกแบบการทดลองด้วย Python

Preparing Video For Download...