🎯 為什麼要主動列出限制?
研究的價值不在於「沒有缺點」,而在於「知道缺點在哪」
本專案為課程期末作品,保留其原貌並以現在的眼光檢視。以下整理資料、統計方法兩大面向的主要限制與未來改進方向。完整版(含工程與可重現性面向)請見專案 GitHub 的 LIMITATIONS.md。
📦 資料層面的限制
限制一:觀測值非獨立(重複測量)— 最關鍵
說明:1,031 筆記錄僅來自 71 位使用者(平均每人約 14.5 筆),同一人多天的資料高度相關。
- 影響:PCA / 聚類 / ANOVA / 迴歸皆假設樣本獨立,此假設被違反,會高估顯著性與模型表現。
- 改進方向:改用混合效應模型(mixed-effects)或在交叉驗證採
GroupKFold(_userId),確保同一人不同時落在訓練與測試集。
限制二:樣本代表性未知
說明:缺少使用者年齡、性別、健康狀況等人口學資訊,取樣方式不明。
- 影響:無法控制干擾變項,結論難以推廣至一般族群。
- 改進方向:蒐集人口學共變項以納入模型,或明確界定研究的適用範圍。
限制三:時區假設與日期歸屬殘留誤差
說明:據 startTimeOffsetInSeconds 全為 GMT+8 推論使用者位於東亞;時區與睡眠類型修正後,原始與計算日期匹配率約 61.5%,最終配對率 86.9%。
- 影響:跨時區旅行者的睡眠日期歸屬可能有誤;約 13% 睡眠記錄未能配對活動資料,恐造成選擇性偏誤。
- 改進方向:逐使用者推估時區、優化跨日歸屬演算法。
📐 統計方法的限制
| 議題 | 問題描述 | 未來改進 |
|---|---|---|
| 衍生變數的循環性 | 以 deep_sleep_ratio 等睡眠衍生指標預測 sleep_hours,而該指標的分母即含睡眠時長,存在部分循環性。 |
避免用睡眠衍生指標預測睡眠時長;改採「前一日活動 → 當日睡眠」的時序設計。 |
| 對分群做 ANOVA | 群集由特徵空間切割而來,再檢驗群集間差異幾乎必然顯著,不足以作為「真實差異」的推論證據。 | 區分描述性與推論性目標;以外部標準或事前定義的分組進行檢驗。 |
| 前處理洩漏進交叉驗證 | 標準化與 PCA 在全資料上先 fit 才做交叉驗證,測試資訊外洩,使表現被高估。 | 將 Scaler → PCA → Model 封裝成 Pipeline,於每個 fold 內各自 fit。 |
| 挑選偏誤 | 以 6 模型 × 7 特徵組合挑「交叉驗證最高者」回報,無獨立保留測試集,系統性高估。 | 保留一份從未參與調參的測試集,回報最終表現。 |
| 因子分析適切性不足 | KMO = 0.41(低於 0.5 門檻),且出現共同性 > 1 的 Heywood case,解可能不當。 | 重新挑選變數集或改採其他降維方法,並完整報告適切性指標。 |
🔎 誠實看待模型表現
睡眠時長預測模型的交叉驗證 R² 為 -8.5%。專案選擇如實呈現此結果,而非以過度調參美化數字——這代表「以行為指標預測睡眠時長」本身的困難,是有意義的負面發現。
🚀 未來改進方向
✅ 若重做這個專案,我會這樣改
- 尊重重複測量結構:混合效應模型或
GroupKFold(_userId)。 - 杜絕前處理洩漏:用 Pipeline 在 fold 內 fit,並保留獨立測試集。
- 重新設計預測問題:時序因果(前一日活動 → 當日睡眠),避免循環變數。
- 強化資料品質:蒐集人口學共變項、統一異常值準則、處理哨兵值與近零變異欄位。
- 誠實的因子分析:在 KMO 偏低與 Heywood case 下重新評估方法。
- 工程重構:分析邏輯抽到模組、以設定檔管理路徑、加入環境鎖定與基本測試。
📄 想看完整版?
本頁為訪客導向的精選版。包含工程與可重現性面向的完整 17 點限制與 6 項改進,請見 GitHub 專案文件: