航海日誌:統計檢定工具箱,把 Excel 變成學生的假設檢定甲板
把一張 Excel 拖上甲板,立刻跑出 t 檢定、ANOVA 與卡方,還附一句白話結論。純前端、零後端、資料不外流——而且連機率分配都是船上自己算的。
學會了用 Vibe Coding 打造機率視覺化模組、也讓 AI 當起 Z-test 助教之後,我發現教學航道上還有一片常常擱淺的淺灘——假設檢定。學生手上明明有一張 Excel 成績表,卻不知道該怎麼判斷「兩個班的差異是真的,還是只是運氣」。於是這次我打造了開源專案 statistics-toolkit:一個只要把 Excel 拖上去,就能立刻跑出 t 檢定、ANOVA 與卡方檢定的純前端工具箱。專案有佈署好的網站可以直接使用:https://captain-balung.github.io/statistics-toolkit/。如果讀者不想自己客製化修改軟體的話,也歡迎線上直接使用。
另外,更棒的是,這艘船完全不需要後端。沒有 API Key、沒有 Apps Script、沒有伺服器,所有運算都在學生自己的瀏覽器裡完成,資料一行都不會外流。對於要在教室裡發給一整班學生的工具來說,這就是最穩的吃水線。

一、 甲板上的四門火炮:工具箱的核心邏輯
這個專案的靈魂,是把「枯燥的統計公式」轉化為「上傳即得結論」的體驗。我為它配置了四門最常用的火炮:

- 單一樣本 t 檢定: 拿樣本平均跟一個假設的母體平均數 μ₀ 比較,支援雙尾、右尾、左尾三種對立假設。
- 獨立樣本 t 檢定(Welch): 比較兩組獨立資料的平均數,且不假設變異數相等。貼心支援「長格式」(一欄分數+一欄組別)與「寬格式」(兩組各一欄),不必再手動重排資料。
- 單因子 ANOVA: 一次比較三組以上的平均數,並附上各組的 n、平均、標準差摘要表。
- 卡方獨立性檢定: 檢驗兩個類別變項是否獨立,同時印出觀察次數表與期望次數表,讓學生看見「差距」到底差在哪裡。
每一項檢定除了輸出統計量與 p 值,還會給出一句白話的假設檢定結論與教學解釋——因為我們要教的不是「算出數字」,而是「看懂數字」。
二、 視覺化部署:讓工具箱線上航行
延續一貫「視覺化優先」的節奏,這次的部署完全不必碰指令列,新手也能三步上線:

- GitHub 介面操作(Visual Deployment):
- 把
index.html與兩個範例.xlsx直接拖曳進 GitHub 儲存庫,點擊 Commit changes 即可完成更新。 - 進入 Settings > Pages,將 Branch 設為
main、目錄設為/ (root),按下 Save。 - 幾分鐘後,你的工具箱就會在線上待命:統計檢定工具箱(線上航行入口)。
- 以下是單一樣本 T 檢定的使用案例:

- 以下是獨立樣本 T 檢定的使用案例:

其他 ANOVA 及 卡方檢定案例,讀者可自行測試。
- 進階航行:CLI 串接指引(Command Line): 如果你已準備好挑戰自動化,可以在 Cursor 的 Terminal 直接輸入:
# 更新你的統計工具箱
git add .
git commit -m "Add chi-square test and sample datasets"
git push origin main
這會比每次手動拖檔快上許多,也是我們未來「自動化佈署」篇章要深入的航道。
三、 開發筆記:如何向 AI 下達「統計火炮」的指令
為了讓 statistics-toolkit 一次到位,我在開發時給 AI 的核心指令大致長這樣:
Prompt(給 AI 的指令): 「請開發一個純前端的單頁網站,使用者上傳 Excel 後,系統自動偵測欄位並以下拉選單呈現。需支援四種檢定:單一樣本 t 檢定、獨立樣本 Welch t 檢定(含長/寬格式)、單因子 ANOVA、卡方獨立性檢定。每項檢定都要輸出統計量、p 值、是否拒絕虛無假說的結論,以及一段給學生看的教學解釋。重點是不要依賴任何後端或統計套件,t、F、χ² 的分配機率請自己用數值方法計算。」
最後一句是這次的關鍵航向:所有機率分配都自己算,這樣才能保證工具箱完全離線、零相依、永遠不會因為某個外部服務關閉而沉船。
四、 靈魂深處的架構:引擎室實錄(The Engine Room)
1. 架構核心

- 前端(Frontend): 單一
index.html,內含全部 HTML、CSS 與 JavaScript,沒有建置流程、沒有套件安裝。雙擊就能用。 - Excel 解析(SheetJS): 透過 CDN 載入 SheetJS,負責把
.xlsx/.xls讀成 JSON,再自動抓出欄位名稱餵給下拉選單。 - 統計引擎(純 JavaScript): 這是整艘船最硬核的鍋爐房——沒有用任何外部統計函式庫。
2. 為什麼要自己造引擎?
瀏覽器原生並沒有 t 分配、F 分配、卡方分配的累積機率函數,而我又堅持不引入笨重的函式庫。於是我請 AI 直接把這些數值方法寫進來:
- 用 Lanczos 近似 計算
logGamma,撐起所有分配的底層。 - 用 正則化不完全 Beta 函數(continued fraction) 算出 t 分配與 F 分配的累積機率。
- 用 正則化不完全 Gamma 函數 算出卡方分配的累積機率。
換句話說,這個工具箱裡每一個 p 值,都是船上自己的鍋爐燒出來的,不假外求。
3. 安全與隱私設定
- 所有資料只在使用者的瀏覽器記憶體中處理,不上傳、不儲存、不外送。
- 因為沒有後端,也就沒有 API Key 外洩的風險——這是它和需要串接雲端的
z-test-master最大的不同。
結語:航向「資料會說話」的教學海洋
當學生只要把一張 Excel 拖上甲板,就能立刻看到 t 值、p 值與一句白話結論,假設檢定就從「黑板上的恐怖公式」變成了「我手上資料的真實對話」。我們不再花整堂課推導標準誤,而是把時間留給更重要的事:帶學生討論這個結論到底代表什麼。
教學是一場永無止境的航行,這次的 statistics-toolkit 補上了我統計艦隊裡「假設檢定」這塊甲板。歡迎來到 GitHub 專案 交流,讓我們一起在這片資料的汪洋中,找到屬於教學的羅盤。
