การทดสอบสมมติฐานและ z-score

การทดสอบสมมติฐานด้วย Python

James Chapman

Curriculum Manager, DataCamp

A/B testing

  • ปี 2013 Electronic Arts (EA) เปิดตัว SimCity 5
  • ต้องการเพิ่มยอดสั่งซื้อล่วงหน้าของเกม
  • ใช้ A/B testing เพื่อทดสอบรูปแบบโฆษณาต่างๆ
  • แบ่งผู้ใช้เป็นกลุ่ม control และกลุ่ม treatment

อาคาร Electronic Arts

1 เครดิตภาพ: "Electronic Arts" โดย majaX1 CC BY-NC-SA 2.0
การทดสอบสมมติฐานด้วย Python

A/B test ของหน้าเว็บร้านค้า

Control:

หน้าเว็บ SimCity พร้อมแบนเนอร์ข้อความ "pre-order and get $20 off your next purchase"

Treatment:

หน้าเว็บ SimCity ไม่มีแบนเนอร์

การทดสอบสมมติฐานด้วย Python

ผลลัพธ์ของ A/B test

  • กลุ่ม treatment (ไม่มีโฆษณา) มียอดซื้อสูงกว่ากลุ่ม control (มีโฆษณา) ถึง 43.4%
  • ความเชื่อที่ว่า "การแสดงโฆษณาจะเพิ่มยอดขาย" นั้นผิด
  • ผลลัพธ์นี้ มีนัยสำคัญทางสถิติ หรือเกิดจากความบังเอิญ?
  • ต้องใช้ข้อมูลของ EA เพื่อตรวจสอบ
  • ใช้เทคนิคจาก Sampling in Python ร่วมกับคอร์สนี้
การทดสอบสมมติฐานด้วย Python

Stack Overflow Developer Survey 2020

import pandas as pd
print(stack_overflow)
      respondent  age_1st_code  ...   age  hobbyist
0           36.0          30.0  ...  34.0       Yes
1           47.0          10.0  ...  53.0       Yes
2           69.0          12.0  ...  25.0       Yes
3          125.0          30.0  ...  41.0       Yes
4          147.0          15.0  ...  28.0        No
...          ...           ...  ...   ...       ...
2259     62867.0          13.0  ...  33.0       Yes
2260     62882.0          13.0  ...  28.0       Yes

[2261 rows x 8 columns]
การทดสอบสมมติฐานด้วย Python

ตั้งสมมติฐานเกี่ยวกับค่าเฉลี่ย

สมมติฐาน:

ค่าชดเชยเฉลี่ยต่อปีของประชากรนักวิทยาศาสตร์ข้อมูลคือ $110,000

ค่าประมาณจุด (สถิติจากตัวอย่าง):

mean_comp_samp = stack_overflow['converted_comp'].mean()
119574.71738168952
การทดสอบสมมติฐานด้วย Python

การสร้าง bootstrap distribution

import numpy as np

# Step 3. Repeat steps 1 & 2 many times, appending to a list so_boot_distn = [] for i in range(5000): so_boot_distn.append(
# Step 2. Calculate point estimate np.mean(
# Step 1. Resample stack_overflow.sample(frac=1, replace=True)['converted_comp']
)
)
1 Bootstrap distribution สอนในบทที่ 4 ของ Sampling in Python
การทดสอบสมมติฐานด้วย Python

การแสดงผล bootstrap distribution

import matplotlib.pyplot as plt
plt.hist(so_boot_distn, bins=50)
plt.show()

ฮิสโทแกรมของ bootstrap distribution รูปทรงคล้ายระฆัง มีช่วงค่าประมาณ 110,000 ถึง 140,000

การทดสอบสมมติฐานด้วย Python

ความคลาดเคลื่อนมาตรฐาน

std_error = np.std(so_boot_distn, ddof=1)
5607.997577378606
การทดสอบสมมติฐานด้วย Python

z-score

$\text{standardized value} = \dfrac{\text{value} - \text{mean}}{\text{standard deviation}}$

$z = \dfrac{\text{sample stat} - \text{hypoth. param. value}}{\text{standard error}}$

การทดสอบสมมติฐานด้วย Python

$z = \dfrac{\text{sample stat} - \text{hypoth. param. value}}{\text{standard error}}$

stack_overflow['converted_comp'].mean()
119574.71738168952
mean_comp_hyp = 110000
std_error
5607.997577378606
z_score = (mean_comp_samp - mean_comp_hyp) / std_error
1.7073326529796957
การทดสอบสมมติฐานด้วย Python

การทดสอบสมมติฐาน

  • 1.707 ถือว่าสูงหรือต่ำ?
  • นี่คือเป้าหมายของคอร์สนี้!
การทดสอบสมมติฐานด้วย Python

การทดสอบสมมติฐาน

  • 1.707 ถือว่าสูงหรือต่ำ?
  • นี่คือเป้าหมายของคอร์สนี้!

 

กรณีใช้งานการทดสอบสมมติฐาน:

 

พิจารณาว่าสถิติจากตัวอย่างอยู่ใกล้หรือห่างจากค่าที่คาดไว้ (หรือ "ค่าสมมติฐาน")

การทดสอบสมมติฐานด้วย Python

การแจกแจงปกติมาตรฐาน (z)

การแจกแจงปกติมาตรฐาน: การแจกแจงปกติที่มี mean = 0 และ standard deviation = 1

กราฟ density ของ PDF สำหรับการแจกแจงปกติมาตรฐาน

การทดสอบสมมติฐานด้วย Python

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

การทดสอบสมมติฐานด้วย Python

Preparing Video For Download...