⚠️ 研究限制與未來改進

對本專案資料、統計方法與工程實作的誠實檢視

🎯 為什麼要主動列出限制?

研究的價值不在於「沒有缺點」,而在於「知道缺點在哪」

本專案為課程期末作品,保留其原貌並以現在的眼光檢視。以下整理資料、統計方法兩大面向的主要限制與未來改進方向。完整版(含工程與可重現性面向)請見專案 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%。專案選擇如實呈現此結果,而非以過度調參美化數字——這代表「以行為指標預測睡眠時長」本身的困難,是有意義的負面發現。

🚀 未來改進方向

✅ 若重做這個專案,我會這樣改

  1. 尊重重複測量結構:混合效應模型或 GroupKFold(_userId)
  2. 杜絕前處理洩漏:用 Pipeline 在 fold 內 fit,並保留獨立測試集。
  3. 重新設計預測問題:時序因果(前一日活動 → 當日睡眠),避免循環變數。
  4. 強化資料品質:蒐集人口學共變項、統一異常值準則、處理哨兵值與近零變異欄位。
  5. 誠實的因子分析:在 KMO 偏低與 Heywood case 下重新評估方法。
  6. 工程重構:分析邏輯抽到模組、以設定檔管理路徑、加入環境鎖定與基本測試。

📄 想看完整版?

本頁為訪客導向的精選版。包含工程與可重現性面向的完整 17 點限制與 6 項改進,請見 GitHub 專案文件:

👉 LIMITATIONS.md(完整版) | 🔒 DATA.md(資料來源與隱私)