Phân tích hậu kiểm sau ANOVA

Thiết kế thí nghiệm với Python

James Chapman

Curriculum Manager, DataCamp

Khi nào dùng kiểm định hậu kiểm

 

  • Sau khi ANOVA cho kết quả có ý nghĩa
  • Khám phá khác biệt cặp giữa các nhóm

Một tấm rèm sân khấu màu xanh được vén lên bởi bàn tay vẽ kiểu hoạt hình, để lộ mạng lưới bốn vòng tròn màu A, B, C, D được nối bằng các đường biểu thị so sánh theo cặp. Một số kết nối có dấu hoa thị cho thấy khác biệt có ý nghĩa, số khác ghi là không có ý nghĩa. Minh họa cách các kiểm định hậu kiểm chỉ ra nhóm nào khác nhau sau khi ANOVA phát hiện hiệu ứng tổng thể.

Thiết kế thí nghiệm với Python

Các phương pháp hậu kiểm chính

 

  • Tukey's HSD (Honest Significant Difference)
    • Vững cho so sánh đa bội
    • Tốt nhất cho so sánh trên mọi nhóm
  • Hiệu chỉnh Bonferroni
    • Điều chỉnh p-value để kiểm soát lỗi loại I
    • Tốt nhất cho so sánh cụ thể

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
Thiết kế thí nghiệm với Python

Bộ dữ liệu: chiến dịch quảng cáo marketing

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
Thiết kế thí nghiệm với Python

Tổ chức dữ liệu với 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
Thiết kế thí nghiệm với Python

Thực hiện 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
Thiết kế thí nghiệm với Python

Kiểm định HSD của Tukey

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 />---------------------------------------------------------------------
Thiết kế thí nghiệm với Python

Thiết lập hiệu chỉnh Bonferroni

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)
Thiết kế thí nghiệm với Python

Thực hiện hiệu chỉnh Bonferroni

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]
Thiết kế thí nghiệm với Python

Cùng luyện tập nào!

Thiết kế thí nghiệm với Python

Preparing Video For Download...