聊天視窗

數據洞察:從基礎到實踐的資料科學全書 - 第 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 章將以 **資料前處理** 為核心,講解缺失值處理、標準化、編碼技巧,以及如何為機器學習模型構建乾淨的資料基礎。