# สถิติสำหรับ Data Science 2026: ความน่าจะเป็น การทดสอบสมมติฐาน และคำถามสัมภาษณ์ > เชี่ยวชาญสถิติสำหรับสัมภาษณ์ data science: การแจกแจงความน่าจะเป็น การทดสอบสมมติฐาน p-value และคำถามที่พบบ่อยปี 2026 - Published: 2026-08-21 - Updated: 2026-08-21 - Author: Anthony Fillion-Maillet - Reading time: 5 min --- สถิติเป็นรากฐานทางคณิตศาสตร์ของทุกบทบาท data science ผู้สัมภาษณ์ที่บริษัทอย่าง Google, Meta และ Netflix ทดสอบการใช้เหตุผลทางสถิติเพราะสิ่งนี้แยกแยะผู้สมัครที่สร้างโมเดลได้จากผู้ที่เข้าใจว่าทำไมโมเดลเหล่านั้นถึงทำงาน > **สิ่งที่ผู้สัมภาษณ์ต้องการ** > > คำถามสถิติประเมินความสามารถสามด้าน: การแปลงปัญหาทางธุรกิจเป็นกรอบสถิติ การเลือกการทดสอบที่เหมาะสมกับข้อมูล และการตีความผลลัพธ์โดยไม่สรุปเกินขอบเขต ## การแจกแจงความน่าจะเป็นที่ Data Scientist ต้องเชี่ยวชาญ การแจกแจงความน่าจะเป็นอธิบายว่าจุดข้อมูลกระจายตัวอย่างไรในค่าที่เป็นไปได้ ผู้สัมภาษณ์คาดหวังความชำนาญในการแจกแจงเหล่านี้เพราะเป็นพื้นฐานของการสุ่มตัวอย่าง การทดสอบ A/B และสมมติฐานของโมเดล **การแจกแจงปกติ** (Gaussian) ปรากฏอยู่ทุกที่: ความคลาดเคลื่อนในการวัด ส่วนสูง คะแนนสอบ เส้นโค้งรูประฆังของมันมีศูนย์กลางที่ค่าเฉลี่ย โดย 68% ของข้อมูลอยู่ภายในหนึ่งส่วนเบี่ยงเบนมาตรฐาน 95% อยู่ภายในสองส่วนเบี่ยงเบนมาตรฐาน เมื่อขนาดตัวอย่างเกิน 30 ทฤษฎีบทขีดจำกัดกลางรับประกันว่าค่าเฉลี่ยตัวอย่างจะเป็นไปตามการแจกแจงปกติโดยไม่คำนึงถึงรูปร่างของประชากรเดิม **การแจกแจงทวินาม** จำลองการทดลองสำเร็จ/ล้มเหลว Click-through rate, เหตุการณ์การแปลง และการตรวจสอบคุณภาพผ่าน/ไม่ผ่านตามรูปแบบทวินาม สำหรับการทดลอง n ครั้งที่มีความน่าจะเป็นของความสำเร็จ p ค่าคาดหวังคือ np และความแปรปรวนคือ np(1-p) **การแจกแจงปัวซอง** นับเหตุการณ์ที่เกิดขึ้นน้อยในช่วงเวลาคงที่: การเข้าชมเว็บไซต์ต่อนาที ข้อบกพร่องต่อชุด การโทรต่อชั่วโมง พารามิเตอร์เดียว λ แสดงถึงทั้งค่าเฉลี่ยและความแปรปรวน เมื่อเหตุการณ์เกิดขึ้นอย่างอิสระด้วยอัตราเฉลี่ยคงที่ ปัวซองเหมาะสม ```python # distributions_demo.py import numpy as np from scipy import stats # Normal: customer spend follows N(μ=50, σ=15) normal_samples = stats.norm.rvs(loc=50, scale=15, size=1000) prob_above_80 = 1 - stats.norm.cdf(80, loc=50, scale=15) # P(X > 80) # Binomial: 100 users, 5% conversion rate binom_samples = stats.binom.rvs(n=100, p=0.05, size=1000) prob_at_least_10 = 1 - stats.binom.cdf(9, n=100, p=0.05) # P(X >= 10) # Poisson: 3 support tickets per hour on average poisson_samples = stats.poisson.rvs(mu=3, size=1000) prob_zero_tickets = stats.poisson.pmf(0, mu=3) # P(X = 0) ``` การแจกแจงสามแบบนี้จัดการกับสถานการณ์ในทางปฏิบัติส่วนใหญ่ ผู้สัมภาษณ์มักถามว่าการแจกแจงใดเหมาะกับบริบททางธุรกิจเฉพาะ ดังนั้นฝึกการจับคู่ปัญหาจริงกับโมเดลที่เหมาะสม ## การทดสอบสมมติฐาน: กรอบการทำงานเบื้องหลัง A/B Test การทดสอบสมมติฐานให้โครงสร้างที่เป็นทางการสำหรับการตัดสินใจจากข้อมูล กรอบการทำงานเริ่มต้นด้วยสมมติฐานว่าง (H₀) ที่แสดงถึงไม่มีผลหรือไม่มีความแตกต่าง และสมมติฐานทางเลือก (H₁) ที่แสดงถึงสิ่งที่การทดลองต้องการตรวจจับ สมมติฐานว่างของ A/B test ทั่วไประบุว่า: "ฟีเจอร์ใหม่ไม่มีผลต่อ conversion rate" ทางเลือกอ้างว่ามีผล การทดสอบคำนวณว่าข้อมูลที่สังเกตได้จะมีโอกาสเกิดขึ้นมากน้อยเพียงใดหากสมมติฐานว่างเป็นจริง **P-value** วัดปริมาณความน่าจะเป็นนี้ P-value 0.03 หมายความว่ามีโอกาส 3% ที่จะเห็นผลลัพธ์สุดขั้วเช่นนี้หากสมมติฐานว่างเป็นจริง เมื่อ p-value ต่ำกว่าระดับนัยสำคัญ (โดยทั่วไป α = 0.05) สมมติฐานว่างจะถูกปฏิเสธ ```python # ab_test_analysis.py import numpy as np from scipy import stats # A/B test data: control vs treatment conversion rates control_conversions = 120 control_visitors = 2000 treatment_conversions = 145 treatment_visitors = 2000 # Proportions p_control = control_conversions / control_visitors # 0.060 p_treatment = treatment_conversions / treatment_visitors # 0.0725 # Pooled proportion under null hypothesis p_pooled = (control_conversions + treatment_conversions) / (control_visitors + treatment_visitors) # Standard error se = np.sqrt(p_pooled * (1 - p_pooled) * (1/control_visitors + 1/treatment_visitors)) # Z-statistic z_stat = (p_treatment - p_control) / se # Two-tailed p-value p_value = 2 * (1 - stats.norm.cdf(abs(z_stat))) print(f"Z-statistic: {z_stat:.3f}") # Z-statistic: 1.681 print(f"P-value: {p_value:.4f}") # P-value: 0.0928 ``` ด้วย p-value 0.0928 การทดสอบนี้ไม่ปฏิเสธสมมติฐานว่างที่ α = 0.05 ความแตกต่างที่สังเกตได้อาจเป็นความแปรปรวนแบบสุ่ม ต้องการข้อมูลเพิ่มเติมหรือขนาดผลที่ใหญ่กว่าเพื่อให้ถึงนัยสำคัญทางสถิติ ## ความผิดพลาดประเภท I และ II: การแลกเปลี่ยนที่ผู้สัมภาษณ์ทดสอบ การทดสอบทางสถิติสร้างสมดุลระหว่างความผิดพลาดสองประเภท **ความผิดพลาดประเภท I** (false positive) เกิดขึ้นเมื่อปฏิเสธสมมติฐานว่างที่เป็นจริง **ความผิดพลาดประเภท II** (false negative) เกิดขึ้นเมื่อไม่ปฏิเสธสมมติฐานว่างที่เป็นเท็จ ระดับนัยสำคัญ α ควบคุมความน่าจะเป็นของความผิดพลาดประเภท I โดยตรง การตั้ง α = 0.05 หมายถึงยอมรับโอกาส 5% ของ false positive การลด α เป็น 0.01 ลด false positive แต่เพิ่ม false negative **กำลังทางสถิติ** (1 - β) วัดความน่าจะเป็นของการปฏิเสธสมมติฐานว่างที่เป็นเท็จอย่างถูกต้อง กำลังขึ้นอยู่กับขนาดผล ขนาดตัวอย่าง และระดับนัยสำคัญ มาตรฐานอุตสาหกรรมตั้งเป้า 80% กำลัง หมายความว่ามีโอกาส 20% ที่จะพลาดผลจริง > **กับดักสัมภาษณ์** > > ผู้สมัครมักสับสนระหว่าง "ไม่มีความแตกต่างที่มีนัยสำคัญ" กับ "ไม่มีความแตกต่างเลย" การไม่ปฏิเสธสมมติฐานว่างไม่ได้พิสูจน์ว่าสมมติฐานว่างเป็นจริง การทดสอบอาจขาดกำลังในการตรวจจับผลขนาดเล็กแต่เป็นจริง การคำนวณขนาดตัวอย่างสร้างสมดุลกับข้อกังวลเหล่านี้ สำหรับ A/B test ที่ตั้งเป้าเพิ่ม 2% ใน conversion (จาก 5% เป็น 7%) ด้วย 80% กำลังและ α = 0.05: ```python # sample_size_calculation.py from statsmodels.stats.power import zt_ind_solve_power # Baseline conversion: 5%, expected lift: 2 percentage points baseline = 0.05 expected = 0.07 effect_size = (expected - baseline) / np.sqrt(baseline * (1 - baseline)) # Cohen's h # Required sample size per group n_per_group = zt_ind_solve_power( effect_size=effect_size, alpha=0.05, power=0.80, alternative='two-sided' ) print(f"Sample size per group: {int(np.ceil(n_per_group))}") # ~1,570 per group ``` การทดสอบที่กำลังต่ำสิ้นเปลืองทรัพยากรโดยการทำการทดลองที่ไม่สามารถตรวจจับผลที่เป็นจริงได้ ## ช่วงความเชื่อมั่น: การวัดปริมาณความไม่แน่นอน ช่วงความเชื่อมั่น 95% หมายความว่า: หากกระบวนการสุ่มตัวอย่างเดียวกันถูกทำซ้ำหลายครั้ง 95% ของช่วงที่สร้างขึ้นจะมีพารามิเตอร์จริง ช่วงความเชื่อมั่นสื่อสารความไม่แน่นอนได้ดีกว่าการประมาณจุดเพียงอย่างเดียว สำหรับค่าเฉลี่ยที่มีความแปรปรวนประชากรที่ทราบ ช่วงใช้การแจกแจง z สำหรับตัวอย่างขนาดเล็กหรือความแปรปรวนที่ไม่ทราบ ใช้การแจกแจง t การแจกแจง t มีหางหนักกว่าปกติ ทำให้ช่วงกว้างขึ้นเพื่ออธิบายความไม่แน่นอนเพิ่มเติม ```python # confidence_intervals.py import numpy as np from scipy import stats # Sample data: response times in milliseconds response_times = np.array([245, 312, 278, 299, 256, 334, 287, 301, 265, 289]) n = len(response_times) mean = np.mean(response_times) # 286.6 std_err = stats.sem(response_times) # Standard error of the mean # 95% confidence interval using t-distribution (df = n-1) t_critical = stats.t.ppf(0.975, df=n-1) margin_of_error = t_critical * std_err ci_lower = mean - margin_of_error ci_upper = mean + margin_of_error print(f"Mean: {mean:.1f}ms") # Mean: 286.6ms print(f"95% CI: [{ci_lower:.1f}, {ci_upper:.1f}]ms") # 95% CI: [265.4, 307.8]ms ``` ช่วงที่แคบกว่าบ่งชี้การประมาณที่แม่นยำกว่า ขนาดตัวอย่างขับเคลื่อนความแม่นยำ: การเพิ่ม n สี่เท่าลดขอบเขตความคลาดเคลื่อนลงครึ่งหนึ่ง ## Bayesian vs Frequentist: คำถามสัมภาษณ์เกี่ยวกับปรัชญาสถิติ ผู้สัมภาษณ์บางครั้งทดสอบความเข้าใจในกระบวนทัศน์ทางสถิติที่แข่งขันกัน **สถิติ frequentist** ถือว่าความน่าจะเป็นเป็นความถี่ระยะยาว: พารามิเตอร์คงที่ และข้อมูลแปรผันตลอดการทดลองซ้ำ P-value และช่วงความเชื่อมั่นมาจากประเพณีนี้ **สถิติ Bayesian** ถือว่าความน่าจะเป็นเป็นระดับความเชื่อ: ความรู้เบื้องต้นรวมกับข้อมูลเพื่อสร้างความเชื่อภายหลัง กรอบการทำงานนี้อนุญาตให้รวมความเชี่ยวชาญในสาขาและสร้างข้อความความน่าจะเป็นเกี่ยวกับพารามิเตอร์โดยตรง A/B testing ใช้วิธี Bayesian มากขึ้นเพราะตอบคำถามที่ผู้มีส่วนได้ส่วนเสียถามจริง: "ความน่าจะเป็นที่ treatment B เหนือกว่า treatment A คือเท่าไร?" ไม่ใช่ "ข้อมูลนี้น่าประหลาดใจแค่ไหนถ้าไม่มีความแตกต่าง?" ```python # bayesian_ab_test.py import numpy as np from scipy import stats # Prior: Beta(1, 1) = uniform prior for conversion rate # Posterior: Beta(alpha + successes, beta + failures) control_successes, control_failures = 120, 1880 treatment_successes, treatment_failures = 145, 1855 # Posterior distributions posterior_control = stats.beta(1 + control_successes, 1 + control_failures) posterior_treatment = stats.beta(1 + treatment_successes, 1 + treatment_failures) # Monte Carlo estimation: P(treatment > control) samples_control = posterior_control.rvs(100000) samples_treatment = posterior_treatment.rvs(100000) prob_treatment_better = np.mean(samples_treatment > samples_control) print(f"P(treatment > control): {prob_treatment_better:.2%}") # ~95% ``` ผลลัพธ์ Bayesian สื่อสารโดยตรง: "มีความน่าจะเป็น 95% ที่ conversion rate ของ treatment เกิน control rate" ผลลัพธ์ frequentist ต้องการการตีความที่ระมัดระวังกว่า ## คำถามสัมภาษณ์ทั่วไปเกี่ยวกับการอนุมานทางสถิติ คำถามเหล่านี้ปรากฏบ่อยในการสัมภาษณ์ data science ที่บริษัทเทคโนโลยี แต่ละคำถามทดสอบแนวคิดทางสถิติเฉพาะ **"อธิบายทฤษฎีบทขีดจำกัดกลางและทำไมมันสำคัญ"** CLT ระบุว่าค่าเฉลี่ยตัวอย่างจากประชากรใดๆ (ที่มีความแปรปรวนจำกัด) เข้าใกล้การแจกแจงปกติเมื่อขนาดตัวอย่างเพิ่มขึ้น สิ่งนี้สำคัญเพราะสมมติฐานความเป็นปกติในการทดสอบสมมติฐานใช้ได้สำหรับตัวอย่างขนาดใหญ่โดยไม่คำนึงถึงการแจกแจงพื้นฐาน ขนาดตัวอย่าง 30+ มักเพียงพอ **"P-hacking คืออะไรและจะป้องกันได้อย่างไร?"** P-hacking ทำให้อัตรา false positive เพิ่มขึ้นโดยการทดสอบสมมติฐานหลายอันจนกว่าจะพบนัยสำคัญ หรือโดยการหยุดเก็บข้อมูลเมื่อผลลัพธ์มีนัยสำคัญ กลยุทธ์ป้องกัน: ลงทะเบียนแผนการวิเคราะห์ล่วงหน้า ใช้การแก้ไขการเปรียบเทียบหลายครั้ง (Bonferroni, FDR) และกำหนดขนาดตัวอย่างก่อนเก็บข้อมูล **"เมื่อไรจะใช้ t-test เทียบกับ Mann-Whitney U test?"** T-test สมมติว่าข้อมูลมีการแจกแจงปกติ (หรือตัวอย่างขนาดใหญ่ผ่าน CLT) และเปรียบเทียบค่าเฉลี่ย [Mann-Whitney U](https://en.wikipedia.org/wiki/Mann%E2%80%93Whitney_U_test) เป็นทางเลือกแบบไม่ใช้พารามิเตอร์ที่เปรียบเทียบการแจกแจงโดยไม่มีสมมติฐานความเป็นปกติ ใช้ Mann-Whitney สำหรับตัวอย่างขนาดเล็กที่มีข้อมูลไม่ปกติอย่างชัดเจนหรือเมื่อเปรียบเทียบการวัดแบบลำดับ **"จะจัดการกับการเปรียบเทียบหลายครั้งใน A/B testing อย่างไร?"** การทดสอบหลายตัวแปรทำให้ความผิดพลาดประเภท I เพิ่มขึ้น ด้วย 20 การเปรียบเทียบที่ α = 0.05 ความน่าจะเป็นของ false positive อย่างน้อยหนึ่งครั้งเกิน 60% การแก้ไข Bonferroni หาร α ด้วยจำนวนการทดสอบ ขั้นตอน Benjamini-Hochberg ควบคุมอัตราการค้นพบผิดในขณะที่รักษากำลังมากกว่า Bonferroni ## Simpson's Paradox: หัวข้อโปรดของผู้สัมภาษณ์ [Simpson's paradox](https://en.wikipedia.org/wiki/Simpson%27s_paradox) เกิดขึ้นเมื่อแนวโน้มในข้อมูลรวมกลับทิศทางที่ระดับกลุ่มย่อย ผู้สัมภาษณ์ชอบหัวข้อนี้เพราะทดสอบการใช้เหตุผลเชิงสาเหตุ ไม่ใช่แค่กลไกทางสถิติ ตัวอย่างคลาสสิก: โรงพยาบาล A มีอัตราการเสียชีวิตโดยรวมสูงกว่าโรงพยาบาล B แต่โรงพยาบาล A มีอัตราการเสียชีวิตต่ำกว่าสำหรับทั้งกรณีเบาและรุนแรง ความขัดแย้งเกิดขึ้นเพราะโรงพยาบาล A รักษากรณีรุนแรงมากกว่า ซึ่งมีอัตราการเสียชีวิตสูงกว่าโดยไม่คำนึงถึงคุณภาพโรงพยาบาล ```python # simpsons_paradox.py import pandas as pd # Hospital mortality data data = { 'Hospital': ['A', 'A', 'B', 'B'], 'Severity': ['Mild', 'Severe', 'Mild', 'Severe'], 'Patients': [200, 800, 800, 200], 'Deaths': [10, 160, 48, 50] } df = pd.DataFrame(data) df['Mortality'] = df['Deaths'] / df['Patients'] # Subgroup mortality print(df[['Hospital', 'Severity', 'Mortality']]) # Hospital A: Mild 5%, Severe 20% # Hospital B: Mild 6%, Severe 25% # Aggregate mortality agg = df.groupby('Hospital').agg({'Deaths': 'sum', 'Patients': 'sum'}) agg['Mortality'] = agg['Deaths'] / agg['Patients'] print(agg['Mortality']) # Hospital A: 17%, Hospital B: 9.8% ``` การแก้ไขต้องระบุตัวแปรกวน (ความรุนแรง) และวิเคราะห์กลุ่มย่อยแยกกัน การวิเคราะห์รวมทำให้เข้าใจผิดเมื่อสัดส่วนกลุ่มย่อยแตกต่างกัน ## แนวคิดทางสถิติสำหรับ Feature Engineering ความรู้ทางสถิติปรับปรุง feature engineering โดยตรง การเข้าใจการแจกแจงนำทางการแปลง การเข้าใจความสัมพันธ์นำทางการสร้างฟีเจอร์ **Skewness** วัดความไม่สมมาตรของการแจกแจง ข้อมูลที่เบ้ขวา (รายได้, ราคา) ได้ประโยชน์จากการแปลง log ที่ทำให้การแจกแจงเป็นปกติและปรับปรุงประสิทธิภาพของโมเดล ข้อมูลที่เบ้ซ้ายใช้การแปลงกำลังสองหรือเลขชี้กำลัง **ความสัมพันธ์** วัดปริมาณความสัมพันธ์เชิงเส้น ความสัมพันธ์ Pearson สมมติความเป็นปกติและความเป็นเส้นตรง ความสัมพันธ์ Spearman จัดการความสัมพันธ์ไม่เชิงเส้นแบบโมโนโทนิก ฟีเจอร์ที่มีความสัมพันธ์สูงทำให้เกิดปัญหา multicollinearity ในโมเดลเชิงเส้น ดังนั้นมักจะตัดออกหนึ่งตัว **Outlier** ส่งผลต่อค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐานอย่างไม่สมส่วน สถิติที่แข็งแกร่ง (มัธยฐาน, IQR) ทนต่ออิทธิพลของ outlier การตัดสินใจ: ลบ จำกัด หรือแปลง outlier ขึ้นอยู่กับว่าพวกมันแสดงถึงข้อผิดพลาดหรือค่าสุดขั้วที่แท้จริง สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้แนวคิดเหล่านี้กับโมเดล machine learning ดู [คู่มือสัมภาษณ์ feature engineering](/blog/data-science/feature-engineering-machine-learning-techniques-interview-2026) และสำรวจ [โมดูลฝึกฝนสถิติเชิงอนุมาน](/technologies/data-science/interview-questions/statistics-inferential) ## สิ่งที่ทำให้ผู้สมัครโดดเด่นในคำถามสถิติ ความสามารถทางสถิติในการสัมภาษณ์ data science ต้องการมากกว่าคำจำกัดความจากตำรา ผู้สมัครที่แข็งแกร่งแสดงความสามารถเหล่านี้: - **เชื่อมโยงสถิติกับผลลัพธ์ทางธุรกิจ**: วางกรอบผลลัพธ์ A/B test ในแง่ของผลกระทบต่อรายได้หรือการมีส่วนร่วมของผู้ใช้ ไม่ใช่แค่ p-value - **รู้สมมติฐาน**: ทุกการทดสอบมีเงื่อนไข (ความเป็นอิสระ ความเป็นปกติ ความแปรปรวนเท่ากัน) และผู้สมัครควรระบุเมื่อเงื่อนไขเหล่านั้นอาจล้มเหลว - **วัดปริมาณความไม่แน่นอน**: การประมาณจุดโดยไม่มีช่วงความเชื่อมั่นหรือช่วงที่น่าเชื่อถือทำให้ผู้มีส่วนได้ส่วนเสียคาดเดาเรื่องความน่าเชื่อถือ - **รับรู้ข้อจำกัดของความเป็นเหตุเป็นผล**: ข้อมูลเชิงสังเกตแสดงความสัมพันธ์ และผู้สมัครควรอธิบายว่าการออกแบบการทดลองใดจะสร้างความเป็นเหตุเป็นผล - **เลือกการทดสอบที่ถูกต้อง**: จับคู่ประเภทข้อมูล (ต่อเนื่อง vs หมวดหมู่) ขนาดตัวอย่าง และคำถามวิจัยกับวิธีการทางสถิติที่เหมาะสม - **สื่อสารผลลัพธ์อย่างชัดเจน**: แปลข้อค้นพบทางสถิติเป็นคำแนะนำที่ดำเนินการได้ซึ่งผู้มีส่วนได้ส่วนเสียที่ไม่ใช่ด้านเทคนิคสามารถเข้าใจและดำเนินการได้ --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/th/blog/data-science/statistics-data-science-probability-hypothesis-testing-interview-2026