航海日誌:統計檢定工具箱,把 Excel 變成學生的假設檢定甲板

把一張 Excel 拖上甲板,立刻跑出 t 檢定、ANOVA 與卡方,還附一句白話結論。純前端、零後端、資料不外流——而且連機率分配都是船上自己算的。

分享
航海日誌:統計檢定工具箱,把 Excel 變成學生的假設檢定甲板

學會了用 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 值,還會給出一句白話的假設檢定結論教學解釋——因為我們要教的不是「算出數字」,而是「看懂數字」。

二、 視覺化部署:讓工具箱線上航行

延續一貫「視覺化優先」的節奏,這次的部署完全不必碰指令列,新手也能三步上線:

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

其他 ANOVA 及 卡方檢定案例,讀者可自行測試。

  1. 進階航行: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 專案 交流,讓我們一起在這片資料的汪洋中,找到屬於教學的羅盤。

statistics-toolkit 線上工具的操作畫面
把 Excel 拖上去,立刻得到統計量、p 值與白話結論。