聊天視窗

數據決策:從洞察到策略的全程分析 - 第 4 章

第4章 統計建模與假設檢定

發布於 2026-03-05 01:52

# 第4章 統計建模與假設檢定 在前一章的資料探索結束後,我們擁有了若干假設: - 節假日對日均銷售額有顯著影響。 - 高熱銷商品的折扣率與銷售量呈正相關。 - 店面位置在城市中心區域的商品平均銷售額高於郊區。 這些觀察雖富洞見,但若要轉為可操作的商業策略,必須經過 **統計驗證**。此章將帶你從假設檢定到模型建構,再到評估指標,完整流程皆以程式範例說明,並強調可解釋性與可落地性。 --- ## 4.1 假設檢定:從觀測到證據 ### 4.1.1 雙樣本 t 檢定 假設我們想比較「中心區店面」與「郊區店面」的平均日銷售額差異。步驟如下: 1. **定義假設** - **零假設 H0**:兩區平均銷售額相等。 - **備擇假設 H1**:中心區平均銷售額高於郊區。 2. **選擇顯著水準**:常用 0.05。 3. **計算 t 值與 p 值**。 python import pandas as pd from scipy import stats # 假設已經將區域欄位拆分為兩個子 DataFrame center_sales = sales_df[sales_df['location'] == 'center']['sales_amount'] suburb_sales = sales_df[sales_df['location'] == 'suburb']['sales_amount'] # 進行單尾 t 檢定 stat, p = stats.ttest_ind(center_sales, suburb_sales, equal_var=False) print(f"t = {stat:.3f}, p = {p:.5f}") > 若 p < 0.05,拒絕 H0,結論為「中心區平均銷售額顯著高於郊區」。 ### 4.1.2 單變量線性回歸 為了量化 **折扣率** 與 **銷售量** 的關係,我們使用簡單線性回歸: python from sklearn.linear_model import LinearRegression import numpy as np X = sales_df[['discount_rate']].values # 兩維數列 Y = sales_df['sales_amount'].values model = LinearRegression().fit(X, Y) print(f"截距: {model.intercept_:.2f}") print(f"斜率: {model.coef_[0]:.2f}") 斜率為正代表折扣越大,銷售額越高。透過 **p 值** 或 **R²** 判斷模型是否統計顯著。 ## 4.2 多變量建模:提升預測力 ### 4.2.1 多元線性回歸 結合多個特徵(折扣率、季節、客戶等)建立回歸模型,並檢驗各自的顯著性。 python X = sales_df[['discount_rate', 'is_holiday', 'customer_age']] Y = sales_df['sales_amount'] model = LinearRegression().fit(X, Y) print("係數:", model.coef_) print("截距:", model.intercept_) ### 4.2.2 分類模型:預測客戶流失 若想預測哪些客戶可能在未來三個月內停止購買,可使用 **邏輯回歸** 或 **隨機森林**。 python from sklearn.model_selection import train_test_split from sklearn.metrics import classification_report, roc_auc_score X = sales_df[['last_purchase_days', 'total_spent', 'discount_used']] y = sales_df['will_churn'] # 1: 將流失, 0: 留存 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) rf = RandomForestClassifier(n_estimators=200, max_depth=10, random_state=42) rf.fit(X_train, y_train) pred = rf.predict(X_test) print(classification_report(y_test, pred)) print("ROC AUC:", roc_auc_score(y_test, rf.predict_proba(X_test)[:,1])) ## 4.3 模型評估:不只是準確率 - **回歸**: - *MAE*、*RMSE*、*R²* - 交叉驗證 (k-fold) - 重新抽樣、樣本加權 - **分類**: - *精確率*、*召回率*、*F1*、*ROC*、*PR* 曲線 - *AUC*、*G-Mean* - 召回率對業務成本的敏感度 > 這些指標要與商業目標對齊。例如若流失預測的誤判成本高於漏判成本,應調整 **閾值** 或採用 **Cost-Sensitive Learning**。 ## 4.4 針對商業決策的可解釋性 模型部署前必須確保 **解釋性**,否則即使準確率高,決策者也難以信任。常用技術: - **特徵重要度**:隨機森林、XGBoost - **LIME / SHAP**:對單個預測進行局部解釋 - **Partial Dependence Plots (PDP)**:觀察單變數對預測的影響 python import shap explainer = shap.TreeExplainer(rf) shap_values = explainer.shap_values(X_test) shap.summary_plot(shap_values[1], X_test) ## 4.5 實務示例:提升日均銷售額 5% 1. **假設**:在節假日前一週加大折扣可提升銷售。 2. **模型**:使用多元線性回歸預測折扣敏感度。 3. **策略**:將折扣率上調 5% 並在前兩週內實施。 4. **評估**:部署後觀察 7 天內銷售額變化,計算提升幅度。 > 若提升幅度低於 5%,即為模型失效;此時需重新調整特徵或改進模型。 ## 4.6 章節小結 - **假設檢定**:將直覺轉為統計證據。 - **多變量建模**:結合多個特徵提升預測力。 - **評估指標**:不只看準確率,更要看成本、風險。 - **解釋性**:確保決策者能理解模型邏輯。 - **迭代驗證**:模型在實戰中需不斷調整。 > 接下來,章節 5 將深入 **模型部署** 與 **A/B 測試**,幫助你將統計模型落地至實際商業流程。