返回目錄
A
數據洞察:從基礎到實踐的資料科學全書 - 第 2 章
第 2 章 統計學基礎:概率與推論
發布於 2026-02-28 01:30
# 第 2 章 統計學基礎:概率與推論
> **學習目標**
> - 理解概率的核心概念與語法,為後續機器學習模型奠定理論基礎。
> - 掌握描述性統計與推論統計的基本工具,能即時檢視資料分佈並作出可信的結論。
> - 能夠使用 Python 生態系統(NumPy、pandas、SciPy、seaborn)完成實務案例。
## 2.1 概率的語言
概率不是「預測」或「預言」——它是對**事件發生不確定性的度量**。常見的語法有:
- **P(A)**:事件 A 之發生機率。
- **P(A∩B)**:事件 A 與 B 同時發生的機率。
- **P(A|B)**:已知 B 發生時,A 仍發生的條件機率。
> **案例**:一支銷售團隊每天接觸 200 個潛在客戶,歷史數據顯示 10% 會進行進一步諮詢。那麼,今天任何一個客戶進一步諮詢的機率為 0.1。若已知此客戶已留下姓名,機率會變化(條件機率)。
## 2.2 隨機變數與分佈
- **離散隨機變數**:取有限或可列舉的整數值(例如擲骰子,值 1–6)。
- **連續隨機變數**:取任意實數區間值(例如身高、血壓)。
### 主要分佈
| 分佈 | 適用場景 | 參數 | 典型公式 |
|------|----------|------|----------|
| 二項分佈 | 成功/失敗試驗 | n, p |
| 泊松分佈 | 獨立事件的計數 | λ |
| 正態分佈 | 連續大多數自然現象 | μ, σ |
| 指數分佈 | 時間間隔 | λ |
> **提醒**:統計學中常見的「正態近似」與「中心極限定理」是推論的重要工具。
## 2.3 描述性統計:把資料「看見」
| 指標 | 公式 | 代表意義 |
|------|------|----------|
| 均值 (μ) | Σxᵢ / n | 資料中心位置 |
| 中位數 | 排序後第 (n+1)/2 個 | 中央分位 |
| 眾數 | 最高頻率值 | 典型值 |
| 方差 (σ²) | Σ(xᵢ-μ)² / (n-1) | 散布程度 |
| 標準差 | √σ² | 單位一致的散布 |
| 四分位差 | Q3-Q1 | 中央 50% 範圍 |
### Python 實作
python
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
# 讀取範例資料(購物車購買金額)
np.random.seed(42)
prices = np.random.exponential(scale=50, size=500)
df = pd.DataFrame({'price': prices})
print(df.describe())
# 直方圖 + KDE
sns.histplot(df['price'], kde=True, color='steelblue')
plt.title('購物金額分佈')
plt.xlabel('金額 ($)')
plt.ylabel('頻數')
plt.show()
> **觀察**:直方圖顯示右偏分佈,正態分佈不適合此資料;此時可以考慮取對數轉換或使用非參數方法。
## 2.4 推論統計:從樣本推到母體
### 1. 參數估計
- **點估計**:利用樣本統計量(如均值、比例)作為母體參數的估計。
- **區間估計**:提供一個可信區間(confidence interval, CI)表示參數可能落在此範圍內。
#### 置信區間計算範例
python
# 95% 置信區間(t 分佈)
import scipy.stats as st
sample_mean = df['price'].mean()
sample_std = df['price'].std(ddof=1)
n = len(df)
t_critical = st.t.ppf(0.975, df=n-1)
margin = t_critical * sample_std / np.sqrt(n)
print(f'95% CI: [{sample_mean-margin:.2f}, {sample_mean+margin:.2f}]')
### 2. 假設檢定
- **零假設 (H₀)**:通常表示「無效應」或「差異不存在」。
- **對立假設 (H₁)**:表示「存在效應」或「差異存在」。
- **p 值**:在 H₀ 為真的前提下,觀測到至少像實際樣本這麼極端的概率。
- **顯著性水平 (α)**:常取 0.05。
#### 範例:t 檢定
python
# 兩組價格比較:A/B 測試
A = np.random.exponential(scale=45, size=200)
B = np.random.exponential(scale=50, size=200)
t_stat, p_val = st.ttest_ind(A, B, equal_var=False)
print(f't={t_stat:.3f}, p={p_val:.4f}')
if p_val < 0.05:
print('拒絕 H₀,兩組有顯著差異')
else:
print('無法拒絕 H₀,兩組差異不顯著')
> **風險提示**:過度依賴 p 值會忽略效應大小與樣本量;建議同時報告置信區間與 Cohen's d。
## 2.5 常見分佈與實務判斷
| 分佈 | 何時使用 | 判斷方法 |
|------|----------|----------|
| 正態 | 連續大多數自然現象 | Q-Q 圖、Shapiro–Wilk 檢定 |
| 泊松 | 獨立事件計數 | 檢查 λ 是否相近 |
| 二項 | 成功/失敗 | 觀察 n·p, n·(1-p) 是否 > 5 |
| 指數 | 時間間隔 | 檢查左偏尾部 |
> **實務建議**:若分佈不符合假設,可使用非參數檢定(如 Mann–Whitney U)或資料轉換。
## 2.6 參數估計與模型擬合
- **最大似然估計 (MLE)**:尋找能使觀測資料似然最大化的參數。
- **貝葉斯估計**:結合先驗資訊與觀測資料得到後驗分佈。
> **案例**:估計正態分佈的 μ 與 σ。Python 中可用 `scipy.stats.norm.fit`。
## 2.7 互動式分析工具
| 工具 | 特色 | 何時使用 |
|------|------|----------|
| Jupyter Notebook | 可即時執行、可視化 | 交互式實驗、教學 |
| RStudio | 豐富統計函式庫 | 進階統計模型 |
| Tableau / Power BI | 可視化報告 | 商業報告、決策支援 |
> **提示**:資料科學團隊常將 Jupyter 轉為 Python package,確保可重複執行。
## 2.8 小結
1. **概率** 是衡量不確定性的基石;掌握條件機率與分佈概念是進一步學習的前提。
2. **描述性統計** 讓你快速「看見」資料的中心與散布,並可視化呈現。
3. **推論統計** 透過樣本估計母體參數、檢驗假設,並提供置信區間與 p 值。
4. **分佈判斷** 與**參數估計** 是建立模型的關鍵;不適合的假設會導致模型失效。
5. **實務工具** 需配合工作流程,從實驗到報告皆需可重複、可解釋。
> **下一步**:第 3 章將以 **資料前處理** 為核心,講解缺失值處理、標準化、編碼技巧,以及如何為機器學習模型構建乾淨的資料基礎。