跳轉到

用 Python 學機率統計:把 R 的統計武器帶進你的程式#

本書是一本 用 Python 親手運算與畫圖來學機率統計 的書。

機率統計是所有「用資料做決策」的技術的地基 —— 醫療試驗、產線品管、推薦系統、抽獎活動、A/B 測試,背後都是同一套機率語言。但傳統課程常把統計隔絕成一堆要背的公式,學生算完一學期題目,仍然不會回答最基本的問題:這個數字有可能是巧合嗎?

本書的答案:統計就是機率,而機率就是可重現的隨機實驗。全書用 Python 的 rstatistics 套件(把 R 的機率統計函式原封不動帶到 Python,並且可以編譯成 Rust 與 WebAssembly)動手算、動手畫 —— 讓 \(P(X \leq 2)\) 不再是符號,而是你 親眼看見 的那條曲線下面的一塊面積。

路線:資料與描述統計 → 機率 → 離散與連續分配 → 抽樣分布與大數法則 → 估計與檢定 → 非參數方法 → 線性模型 → 資料視覺化。讀完本書,你將同時掌握機率統計的 直覺與推導,以及 用 Python 寫出可重現、可發布的統計分析 的能力。

本書特色#

  • 一套工具貫穿全書:所有計算都用 rstatistics(R 的 dnorm、t.test、wilcox.test、lm、hist 等),輸出的表格與 R 幾乎一字不差,學會就能直接搬去 R 比對
  • 可重現的隨機性:set_seed 與 R 的亂數產生器 位元等價,同一段程式在 CPython、編譯後的 Rust、瀏覽器裡的 WebAssembly 都會得到同一份結果
  • 先畫圖再推論:第 1 章就建立自己的 SVG 繪圖裝置(版面與 R 的 svg() 一致:邊界、刻度、座標軸),之後每一章的圖都自己畫
  • 對照真實的 R:每一章都有「與 R 對照」的段落,用 R 腳本跑出同樣的數字,驗證公式而不是相信公式
  • 理論與實作互相驅動:分布的形狀、抽樣分布的來源、檢定的拒絕域,都先用程式畫出來,再用數學推導解釋為什麼長這樣
  • 零背景入門:只需高中數學與一點 Python,第 1 章把統計學需要的工具補齊

環境與安裝#

pip install rstatistics          # 0.4.0
import rstatistics as r

r.set_seed(42)          # 與 R 的 set.seed(42) 一致
r.dnorm(0.0)            # 0.39894228040143265

rstatistics 只用 Python 標準函式庫撰寫,因此同一份程式碼還可以用 rupy 編譯成 Rust 或 WebAssembly,拿到原生速度的統計程式(第 5 章會說明怎麼做,以及為什麼亂數必須位元等價)。

目錄#

每一章的寫法#

每一節都遵循同樣的節奏:

  1. 問題:從一個具體的場景或一個困惑開始(為什麼樣本標準差會偏向小樣本?p 值 0.05 到底代表什麼?)
  2. 理論:用最少但足夠的數學推出結論,每個符號都說明是誰
  3. 動手:用 rstatistics 寫十行以內的程式驗證剛才的推理
  4. 對照 R:同一件事在 R 裡怎麼寫,輸出差在哪裡
  5. 小結與練習:幾道可以動手算的題目(附提示)

執行環境#

  • Python 3.13 以上,rstatistics 0.4.0 以上(PyPI 上即可取得)
  • 選用:rupy(把 Python 統計程式編譯成 Rust / WebAssembly)
  • 選用:R 4.x(用來做對照;書中會給出可貼上跑的 R 腳本)

授權#

本書的程式碼與文字採用與本專案其他書一致的授權條款,詳見 LICENSE。