สถิติสำหรับ Data Science 2026: ความน่าจะเป็น การทดสอบสมมติฐาน และคำถามสัมภาษณ์

เชี่ยวชาญสถิติสำหรับสัมภาษณ์ data science: การแจกแจงความน่าจะเป็น การทดสอบสมมติฐาน p-value และคำถามที่พบบ่อยปี 2026

สถิติสำหรับ Data Science 2026: ความน่าจะเป็น การทดสอบสมมติฐาน และคำถามสัมภาษณ์

สถิติเป็นรากฐานทางคณิตศาสตร์ของทุกบทบาท 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 สี่เท่าลดขอบเขตความคลาดเคลื่อนลงครึ่งหนึ่ง

พร้อมที่จะพิชิตการสัมภาษณ์ Data Science & ML แล้วหรือยังครับ?

ฝึกฝนด้วยตัวจำลองแบบโต้ตอบ, flashcards และแบบทดสอบเทคนิคครับ

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 เป็นทางเลือกแบบไม่ใช้พารามิเตอร์ที่เปรียบเทียบการแจกแจงโดยไม่มีสมมติฐานความเป็นปกติ ใช้ Mann-Whitney สำหรับตัวอย่างขนาดเล็กที่มีข้อมูลไม่ปกติอย่างชัดเจนหรือเมื่อเปรียบเทียบการวัดแบบลำดับ

"จะจัดการกับการเปรียบเทียบหลายครั้งใน A/B testing อย่างไร?"

การทดสอบหลายตัวแปรทำให้ความผิดพลาดประเภท I เพิ่มขึ้น ด้วย 20 การเปรียบเทียบที่ α = 0.05 ความน่าจะเป็นของ false positive อย่างน้อยหนึ่งครั้งเกิน 60% การแก้ไข Bonferroni หาร α ด้วยจำนวนการทดสอบ ขั้นตอน Benjamini-Hochberg ควบคุมอัตราการค้นพบผิดในขณะที่รักษากำลังมากกว่า Bonferroni

Simpson's Paradox: หัวข้อโปรดของผู้สัมภาษณ์

Simpson's 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 และสำรวจ โมดูลฝึกฝนสถิติเชิงอนุมาน

เริ่มฝึกซ้อมเลย!

ทดสอบความรู้ของคุณด้วยตัวจำลองสัมภาษณ์และแบบทดสอบเทคนิคครับ

สิ่งที่ทำให้ผู้สมัครโดดเด่นในคำถามสถิติ

ความสามารถทางสถิติในการสัมภาษณ์ data science ต้องการมากกว่าคำจำกัดความจากตำรา ผู้สมัครที่แข็งแกร่งแสดงความสามารถเหล่านี้:

  • เชื่อมโยงสถิติกับผลลัพธ์ทางธุรกิจ: วางกรอบผลลัพธ์ A/B test ในแง่ของผลกระทบต่อรายได้หรือการมีส่วนร่วมของผู้ใช้ ไม่ใช่แค่ p-value
  • รู้สมมติฐาน: ทุกการทดสอบมีเงื่อนไข (ความเป็นอิสระ ความเป็นปกติ ความแปรปรวนเท่ากัน) และผู้สมัครควรระบุเมื่อเงื่อนไขเหล่านั้นอาจล้มเหลว
  • วัดปริมาณความไม่แน่นอน: การประมาณจุดโดยไม่มีช่วงความเชื่อมั่นหรือช่วงที่น่าเชื่อถือทำให้ผู้มีส่วนได้ส่วนเสียคาดเดาเรื่องความน่าเชื่อถือ
  • รับรู้ข้อจำกัดของความเป็นเหตุเป็นผล: ข้อมูลเชิงสังเกตแสดงความสัมพันธ์ และผู้สมัครควรอธิบายว่าการออกแบบการทดลองใดจะสร้างความเป็นเหตุเป็นผล
  • เลือกการทดสอบที่ถูกต้อง: จับคู่ประเภทข้อมูล (ต่อเนื่อง vs หมวดหมู่) ขนาดตัวอย่าง และคำถามวิจัยกับวิธีการทางสถิติที่เหมาะสม
  • สื่อสารผลลัพธ์อย่างชัดเจน: แปลข้อค้นพบทางสถิติเป็นคำแนะนำที่ดำเนินการได้ซึ่งผู้มีส่วนได้ส่วนเสียที่ไม่ใช่ด้านเทคนิคสามารถเข้าใจและดำเนินการได้
ชาเลนจ์ประจำวัน

คุณหาบั๊กใน Data Science & ML เจอไหม

โค้ดจริงหนึ่งชิ้น บั๊กที่ซ่อนอยู่หนึ่งจุด วันละหนึ่งครั้ง ลองได้โดยไม่ต้องมีบัญชี

Anthony Fillion-Maillet

เขียนโดย

Anthony Fillion-Maillet

ผู้ก่อตั้ง SharpSkill

เป็นนักพัฒนาฟูลสแตกมากว่า 10 ปี ดูแล SharpSkill และรับผิดชอบทุกสิ่งที่เผยแพร่ที่นี่

อัปเดตเมื่อ 21 สิงหาคม 2569

แชร์

บทความที่เกี่ยวข้อง