Kiểm định thống kê phi tham số

A/B Testing bằng Python

Moe Lotfy, PhD

Principal Data Science Manager

Giả định của kiểm định tham số

  1. Lấy mẫu ngẫu nhiên
    • Dữ liệu được lấy mẫu ngẫu nhiên từ quần thể.
    • Kiểm tra quy trình thu thập/lấy mẫu.
  2. Độc lập
    • Mỗi quan sát/điểm dữ liệu là độc lập.
    • Bỏ qua phụ thuộc làm tăng tỷ lệ lỗi.
  3. Phân phối chuẩn
    • Dữ liệu phân phối chuẩn.
    • Cỡ mẫu đủ lớn.
      • Kiểm định t hai mẫu: n >= 30 mỗi nhóm.
      • Kiểm định tỷ lệ hai mẫu: >=10 thành công và >=10 thất bại mỗi nhóm.
A/B Testing bằng Python

Kiểm định Mann-Whitney U

  • Kiểm định phi tham số cho ý nghĩa thống kê
  • Xác định hai mẫu độc lập có cùng phân phối gốc hay không
  • Kiểm định tổng hạng
  • Dữ liệu không ghép cặp
A/B Testing bằng Python

Kiểm định Mann-Whitney U trong python

# Tính mean và count thời gian trên trang theo biến thể
print(checkout.groupby('checkout_page')['time_on_page'].agg({'mean', 'count'}))
                    mean  count
checkout_page                  
A              44.668527   3000
B              42.723772   3000
C              42.223772   3000
# Đặt seed ngẫu nhiên để lặp lại 
np.random.seed(40)
# Lấy mẫu ngẫu nhiên kích thước 25 từ mỗi biến thể
ToP_samp_A = checkout[checkout['checkout_page'] == 'A'].sample(25)['time_on_page']
ToP_samp_B = checkout[checkout['checkout_page'] == 'B'].sample(25)['time_on_page']
A/B Testing bằng Python

Kiểm định Mann-Whitney U trong python

# Chạy kiểm định Mann-Whitney U
mwu_test = pingouin.mwu(x=ToP_samp_A,
                        y=ToP_samp_B,
                        alternative='two-sided')
# In kết quả kiểm định
print(mwu_test)
     U-val alternative     p-val     RBC    CLES
MWU  441.0   two-sided  0.013007 -0.4112  0.7056
A/B Testing bằng Python

Kiểm định Chi-square về tính độc lập

  • Không phụ thuộc giả định của kiểm định tham số
  • Kiểm tra xem hai hay nhiều biến phân loại có độc lập không
    • Giả thuyết không: Các biến độc lập.
    • Giả thuyết đối: Các biến không độc lập.
A/B Testing bằng Python

Kiểm định Chi-square trong python

A/B test tỷ lệ đăng ký trang chủ

Giả thuyết không: Không có khác biệt đáng kể về tỷ lệ đăng ký giữa thiết kế trang đích C và D

Giả thuyết đối: Không có khác biệt đáng kể về tỷ lệ đăng ký giữa chúng

# Tính số người dùng ở nhóm C và D
n_C = homepage[homepage['landing_page'] == 'C']['user_id'].nunique()
n_D = homepage[homepage['landing_page'] == 'D']['user_id'].nunique()
# Tính số đăng ký duy nhất ở mỗi nhóm
signup_C = homepage[homepage['landing_page'] == 'C'].groupby('user_id')['signup'].max().sum()
no_signup_C = n_C - signup_C
signup_D = homepage[homepage['landing_page'] == 'D'].groupby('user_id')['signup'].max().sum()
no_signup_D = n_D - signup_D
A/B Testing bằng Python

Kiểm định Chi-square trong python

# Tạo bảng đăng ký
table = [[signup_C, no_signup_C], [signup_D, no_signup_D]]
print('Group C signup rate:',round(signup_C/n_C,3))
print('Group D signup rate:',round(signup_D/n_D,3))

# Tính p-value
print('p-value=',stats.chi2_contingency(table,correction=False)[1])
Group C signup rate: 0.064
Group D signup rate: 0.048
p-value= 0.009165
A/B Testing bằng Python

Ayo berlatih!

A/B Testing bằng Python

Preparing Video For Download...