ค่าการเพิ่มขึ้น นัยสำคัญ และเกณฑ์ควบคุมใน SQL
คำนวณค่าการเพิ่มขึ้นของอัตราเปลี่ยนผ่าน และตรวจสอบข้อมูลเพื่อค้นหาการทดลองที่ผิดปกติ
ค่าการเพิ่มขึ้น นัยสำคัญ และเกณฑ์ควบคุมใน SQL เป็นบทเรียน Coding Interview Prep ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Coding Interview Prep และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Coding Interview Prep มีบทเรียนทั้งหมด 4 บทเรียน
จากเมตริกสู่การตัดสินใจ
การเปลี่ยนผ่านของแต่ละกลุ่มเป็นเพียงจุดเริ่มต้น คำถามในการสัมภาษณ์คือ กลุ่มทดลองชนะจริงหรือไม่ ซึ่งหมายถึงการคำนวณ การเพิ่มขึ้น ประเมินว่าความแตกต่างนั้นเป็นผลจริงหรือเป็นเพียงสัญญาณรบกวน และตรวจสอบเมตริก ตัวชี้วัดเฝ้าระวัง ที่ช่วยตรวจจับการทดลองที่ผิดพลาด
คุณจะไม่ต้องเรียกใช้ชุดเครื่องมือสถิติเต็มรูปแบบใน SQL แต่สามารถคำนวณค่าที่จำเป็นและสัญญาณนัยสำคัญโดยประมาณที่ผู้สัมภาษณ์ต้องการเห็นได้
CTE สรุปข้อมูลต่อกลุ่มการทดลอง
การคำนวณทั้งหมดหลังจากนี้สร้างต่อจากข้อมูลสรุปที่เป็นระเบียบชุดเดียว: สำหรับแต่ละกลุ่ม ให้มีจำนวนผู้ใช้ n จำนวนผู้ใช้ที่เปลี่ยนผ่าน c และอัตราการเปลี่ยนผ่าน p คำนวณครั้งเดียวใน CTE แล้วนำกลับมาใช้ซ้ำ
WITH summary AS (
SELECT
variant,
COUNT(DISTINCT user_id) AS n,
COUNT(DISTINCT converted_user) AS c
FROM experiment_flat
GROUP BY variant
)
SELECT
variant, n, c,
1.0 * c / n AS p
FROM summary;การเพิ่มขึ้นแบบสัมบูรณ์เทียบกับแบบสัมพัทธ์
การเพิ่มขึ้นมีสองคำจำกัดความ และโดยปกติผู้สัมภาษณ์ต้องการแบบสัมพัทธ์:
- การเพิ่มขึ้นแบบสัมบูรณ์ = p_treatment - p_control (จุดเปอร์เซ็นต์)
- การเพิ่มขึ้นแบบสัมพัทธ์ = (p_treatment - p_control) / p_control (เปอร์เซ็นต์การปรับปรุง)
การกล่าวว่า "เพิ่มขึ้น 2 จุด" กับ "การเพิ่มขึ้นสัมพัทธ์ 20%" อาจอธิบายผลลัพธ์เดียวกันได้ โปรดระบุให้ชัดเจน
การคำนวณการเพิ่มขึ้นด้วยการจัดกลุ่มคอลัมน์ในแถวเดียว
หากต้องการเปรียบเทียบสองกลุ่มในแถวเดียว ให้ดึงกลุ่มควบคุมและกลุ่มทดลองมาไว้ข้างกันโดยใช้การรวมข้อมูลแบบมีเงื่อนไข แล้วจึงคำนวณทางคณิตศาสตร์
วิธีนี้หลีกเลี่ยงการเชื่อมตารางกับตัวเองที่เปราะบาง และทำให้สูตรการเพิ่มขึ้นอ่านเข้าใจง่าย
WITH s AS (
SELECT variant,
COUNT(DISTINCT user_id) AS n,
COUNT(DISTINCT converted_user) AS c
FROM experiment_flat GROUP BY variant
),
rates AS (
SELECT
MAX(CASE WHEN variant='control' THEN 1.0*c/n END) AS p_ctrl,
MAX(CASE WHEN variant='treatment' THEN 1.0*c/n END) AS p_trt
FROM s
)
SELECT
p_ctrl, p_trt,
p_trt - p_ctrl AS abs_lift,
ROUND(100.0 * (p_trt - p_ctrl) / p_ctrl, 2) AS rel_lift_pct
FROM rates;เหตุใดความแตกต่างจึงอาจเป็นสัญญาณรบกวน
อัตราของกลุ่มทดลองที่สูงกว่าอาจเกิดจากความบังเอิญในการสุ่มตัวอย่าง การทดสอบนัยสำคัญถามว่า หากทั้งสองกลุ่มเหมือนกันจริง ความแตกต่างที่มากขนาดนี้จะเกิดขึ้นได้บ่อยเพียงใด
องค์ประกอบสำคัญคือ ค่าคลาดเคลื่อนมาตรฐานของแต่ละอัตรา ซึ่งจะลดลงเมื่อขนาดตัวอย่างเพิ่มขึ้น ตัวอย่างขนาดใหญ่ทำให้การเพิ่มขึ้นเล็กน้อยน่าเชื่อถือ ส่วนตัวอย่างขนาดเล็กทำให้แม้การเพิ่มขึ้นมากก็น่าสงสัย
ค่าคลาดเคลื่อนมาตรฐานของสัดส่วน
สำหรับอัตราการเปลี่ยนผ่าน p จากผู้ใช้ n คน ค่าคลาดเคลื่อนมาตรฐานคือ sqrt(p * (1 - p) / n) ซึ่งสามารถคำนวณแยกตามกลุ่มได้โดยตรงใน SQL
ค่านี้วัดความผันผวนของแต่ละอัตราก่อนที่คุณจะนำมาเปรียบเทียบกัน
WITH s AS (
SELECT variant,
COUNT(DISTINCT user_id) AS n,
COUNT(DISTINCT converted_user) AS c
FROM experiment_flat GROUP BY variant
)
SELECT
variant, n,
1.0 * c / n AS p,
SQRT( (1.0*c/n) * (1 - 1.0*c/n) / n ) AS std_err
FROM s;คะแนน z สำหรับสองสัดส่วน
สัญญาณนัยสำคัญโดยประมาณคือคะแนน z ของสองสัดส่วน ซึ่งเท่ากับความแตกต่างระหว่างอัตราหารด้วยค่าคลาดเคลื่อนมาตรฐานของความแตกต่างนั้น ค่าสัมบูรณ์ที่มากกว่าประมาณ 1.96 สอดคล้องกับเกณฑ์ 95% ที่ใช้กันทั่วไป
ระบุให้ชัดเจนว่านี่เป็นเพียงค่าประมาณ ไม่ใช่สิ่งทดแทนการทดสอบที่เหมาะสม แต่สามารถตอบคำถามว่า "ผลนี้น่าจะเป็นจริงหรือไม่" ได้ใน SQL
WITH r AS (
SELECT
MAX(CASE WHEN variant='control' THEN 1.0*c/n END) AS p1,
MAX(CASE WHEN variant='control' THEN n END) AS n1,
MAX(CASE WHEN variant='treatment' THEN 1.0*c/n END) AS p2,
MAX(CASE WHEN variant='treatment' THEN n END) AS n2
FROM (
SELECT variant, COUNT(DISTINCT user_id) n,
COUNT(DISTINCT converted_user) c
FROM experiment_flat GROUP BY variant
) s
)
SELECT
p2 - p1 AS abs_lift,
(p2 - p1) / SQRT( p1*(1-p1)/n1 + p2*(1-p2)/n2 ) AS z_score
FROM r;การตีความคะแนน z
แปลงตัวเลขให้เป็นข้อสรุป เพื่อให้ผู้สัมภาษณ์เห็นความเข้าใจเชิงธุรกิจ ไม่ใช่เพียงคณิตศาสตร์:
|z| >= 1.96: ความแตกต่างมีนัยสำคัญที่ระดับความเชื่อมั่นประมาณ 95%|z| < 1.96: หลักฐานยังไม่เพียงพอ การเพิ่มขึ้นอาจเป็นเพียงสัญญาณรบกวน
ใช้ CASE เพื่อแสดงป้ายกำกับที่อ่านเข้าใจง่าย และจับคู่การมีนัยสำคัญกับขนาดการเพิ่มขึ้นในทางปฏิบัติเสมอ
SELECT
z_score,
CASE WHEN ABS(z_score) >= 1.96
THEN 'significant at 95%'
ELSE 'not significant' END AS verdict
FROM (
SELECT 2.3 AS z_score
) t;ความไม่ตรงกันของสัดส่วนตัวอย่าง (SRM)
ตัวชี้วัดเฝ้าระวังแรกที่ผู้สัมภาษณ์จะตรวจสอบคือ ผู้ใช้ถูกแบ่งตามที่ออกแบบไว้จริงหรือไม่ การทดลองแบบ 50/50 ที่ได้ผลเป็น 53/47 ทั้งที่มีผู้ใช้หลายล้านคนเป็นสัญญาณอันตราย แสดงว่าการสุ่มแบ่งกลุ่มหรือการบันทึกข้อมูลมีข้อผิดพลาด
เปรียบเทียบจำนวนที่สังเกตได้กับการแบ่งกลุ่มที่คาดหวัง ความเบี่ยงเบนมากจะทำให้การทดลองทั้งหมดใช้ไม่ได้ ก่อนที่คุณจะพิจารณาเมตริกเสียอีก
WITH cnt AS (
SELECT variant, COUNT(DISTINCT user_id) AS n
FROM experiment_flat GROUP BY variant
),
tot AS (SELECT SUM(n) AS total FROM cnt)
SELECT
c.variant, c.n,
ROUND(100.0 * c.n / t.total, 2) AS observed_pct,
50.0 AS expected_pct
FROM cnt c CROSS JOIN tot t;เมตริกตัวชี้วัดเฝ้าระวัง
ตัวชี้วัดเฝ้าระวังคือเมตริกที่ต้อง ไม่แย่ลง แม้เมตริกหลักจะดีขึ้นก็ตาม ตัวชี้วัดเฝ้าระวังที่ใช้กันทั่วไป ได้แก่ เวลาแฝงของหน้า อัตราการคืนเงิน อัตราการยกเลิกการสมัคร และอัตราข้อผิดพลาด
รายงานตัวชี้วัดเหล่านี้แยกตามกลุ่มควบคู่กับเมตริกที่แสดงผลดี กลุ่มทดลองที่เพิ่มการเปลี่ยนผ่านได้แต่ทำให้การคืนเงินเพิ่มขึ้นสองเท่าไม่ถือว่าประสบความสำเร็จ การคำนวณตัวชี้วัดเฝ้าระวังโดยไม่ต้องมีผู้ถามจะแสดงให้เห็นถึงวิจารณญาณด้านผลิตภัณฑ์
SELECT
variant,
AVG(load_ms) AS avg_latency_ms,
ROUND(100.0 * SUM(refunded) / COUNT(*), 2) AS refund_rate_pct,
ROUND(100.0 * SUM(errored) / COUNT(*), 2) AS error_rate_pct
FROM experiment_flat
GROUP BY variant;รายงานผลฉบับสมบูรณ์
รายงานผลการทดลองฉบับสมบูรณ์ที่ผู้สัมภาษณ์ชื่นชอบจะรวมสี่สิ่งไว้ในผลลัพธ์เดียว ได้แก่ อัตราต่อกลุ่มการทดลอง การเพิ่มขึ้นสัมพัทธ์ ข้อสรุปด้านนัยสำคัญ และการตรวจสอบ SRM สร้าง CTE ต่อกันเป็นชั้น ๆ แล้วนำเสนอเป็นตารางเดียวที่พร้อมใช้ตัดสินใจ
ปิดท้ายด้วยการระบุว่า: มีนัยสำคัญ ขนาดการเพิ่มขึ้นยอมรับได้ ตัวชี้วัดเฝ้าระวังยังดี การแบ่งกลุ่มสมดุล ดังนั้นจึงควรปล่อยใช้งานหรือระงับไว้
WITH s AS (
SELECT variant, COUNT(DISTINCT user_id) n,
COUNT(DISTINCT converted_user) c
FROM experiment_flat GROUP BY variant
),
r AS (
SELECT
MAX(CASE WHEN variant='control' THEN 1.0*c/n END) p1,
MAX(CASE WHEN variant='control' THEN n END) n1,
MAX(CASE WHEN variant='treatment' THEN 1.0*c/n END) p2,
MAX(CASE WHEN variant='treatment' THEN n END) n2
FROM s
)
SELECT
ROUND(100.0*(p2-p1)/p1, 2) AS rel_lift_pct,
CASE WHEN ABS((p2-p1)/SQRT(p1*(1-p1)/n1 + p2*(1-p2)/n2)) >= 1.96
THEN 'significant' ELSE 'not significant' END AS verdict,
CASE WHEN ABS(1.0*n2/(n1+n2) - 0.5) > 0.02
THEN 'SRM warning' ELSE 'split ok' END AS srm_check
FROM r;ตรวจสอบอย่างรวดเร็ว
กลุ่มทดลองมีการเพิ่มขึ้นของการเปลี่ยนผ่านสัมพัทธ์ 25% แต่แต่ละกลุ่มมีผู้ใช้เพียง 40 คน ข้อสรุปที่ถูกต้องคืออะไร
สรุป: การเพิ่มขึ้น นัยสำคัญ และตัวชี้วัดเฝ้าระวัง
ตอนนี้คุณสามารถเปลี่ยนเมตริกดิบของแต่ละกลุ่มให้เป็นการตัดสินใจได้แล้ว:
- แยกความแตกต่างระหว่างการเพิ่มขึ้นแบบ สัมบูรณ์ (จุดเปอร์เซ็นต์) กับการเพิ่มขึ้นแบบ สัมพัทธ์ (เปอร์เซ็นต์)
- คำนวณ ค่าคลาดเคลื่อนมาตรฐานของแต่ละอัตรา และคะแนน z ของสองสัดส่วนเป็นสัญญาณนัยสำคัญโดยประมาณ (|z| >= 1.96 ~ 95%)
- ดำเนินการตรวจสอบ SRM เพื่อยืนยันว่าการแบ่งกลุ่มตรงตามการออกแบบ
- รายงาน เมตริกตัวชี้วัดเฝ้าระวัง เพื่อไม่ให้ผลดีบดบังการถดถอย
- นำเสนอรายงานผลเดียวที่พร้อมใช้ตัดสินใจ และจับคู่การมีนัยสำคัญกับขนาดการเพิ่มขึ้นในทางปฏิบัติเสมอ
เนื้อหานี้จบการวิเคราะห์ฟันเนลและการทดสอบ A/B ใน SQL
เรียนรู้ Coding Interview Prep ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 90
- บทเรียน
- 360
คำถามที่พบบ่อย
บทเรียน “ค่าการเพิ่มขึ้น นัยสำคัญ และเกณฑ์ควบคุมใน SQL” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ค่าการเพิ่มขึ้น นัยสำคัญ และเกณฑ์ควบคุมใน SQL” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Coding Interview Prep ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Coding Interview Prep มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ค่าการเพิ่มขึ้น นัยสำคัญ และเกณฑ์ควบคุมใน SQL”
คำนวณค่าการเพิ่มขึ้นของอัตราเปลี่ยนผ่าน และตรวจสอบข้อมูลเพื่อค้นหาการทดลองที่ผิดปกติ คุณปฏิบัติ Coding Interview Prep ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Coding Interview Prep หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Coding Interview Prep บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “ค่าการเพิ่มขึ้น นัยสำคัญ และเกณฑ์ควบคุมใน SQL” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Coding Interview Prep นี้ได้ไหม
ได้ บทเรียน Coding Interview Prep ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- สร้างกระบวนการ Funnel หลายขั้นตอน
- เหตุการณ์ตามลำดับและช่วงเวลา
- การกำหนดกลุ่มการทดสอบ A/B และตัวชี้วัด
- ค่าการเพิ่มขึ้น นัยสำคัญ และเกณฑ์ควบคุมใน SQL