用 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章-資料與描述統計:先把資料看清楚
-
第2章-機率:隨機世界的數學語言
-
第3章-離散機率分配
-
第4章-連續機率分配
-
第5章-抽樣分布與大數法則
-
第6章-點估計與區間估計
-
第7章-假設檢定
-
第8章-非參數方法
-
第9章-迴歸與線性模型
-
第10章-資料視覺化:R 風格的 SVG
每一章的寫法#
每一節都遵循同樣的節奏:
- 問題:從一個具體的場景或一個困惑開始(為什麼樣本標準差會偏向小樣本?p 值 0.05 到底代表什麼?)
- 理論:用最少但足夠的數學推出結論,每個符號都說明是誰
- 動手:用
rstatistics寫十行以內的程式驗證剛才的推理 - 對照 R:同一件事在 R 裡怎麼寫,輸出差在哪裡
- 小結與練習:幾道可以動手算的題目(附提示)
執行環境#
- Python 3.13 以上,
rstatistics0.4.0 以上(PyPI 上即可取得) - 選用:rupy(把 Python 統計程式編譯成 Rust / WebAssembly)
- 選用:R 4.x(用來做對照;書中會給出可貼上跑的 R 腳本)
授權#
本書的程式碼與文字採用與本專案其他書一致的授權條款,詳見 LICENSE。