EDA 的目的:找模式,也找反例
學習目標:用 EDA 產生與檢查問題,而非證明預先設定的故事。
你的主管在看到一份調查摘要後說:「看起來 B 組的完成率明顯比較差,我們直接向委員會報告這個結論吧。」在你點頭之前,這正是探索式資料分析(EDA)該出場的時候:EDA 不是用來證明主管已經相信的故事,而是用來產生問題、尋找支持這個模式的證據,同時主動尋找會推翻它的反例。
先找證據支持結論
只挑出符合「B 組比較差」這個說法的幾筆數字,做成一張圖,然後停止分析。
先用 EDA 產生與檢查問題
- 產生問題
- 這個差異在整體資料中有多大?是所有子群一致,還是被少數觀測拉動?
- 尋找反例
- 有沒有任何分層或子群,結果和整體模式相反?
- 檢查資料品質
- 這個模式會不會其實是缺失值、未完成回覆或抽樣層分布不均造成的?
import pandas as pd
# clean:一份調查與結果資料集,一列代表一筆觀測
df = pd.read_csv("DS104_Survey_Outcomes_Clean.csv")
df.shape
df.head()
df["group"].value_counts()
# 主管的說法:B 組的 outcome 比較低。先看整體,而不是只看一張圖
df.groupby("group")["outcome"].mean()| 證明式問法 | EDA 式問法 |
|---|---|
| 「證明 B 組比較差。」 | 「B 組與 A 組的 outcome 平均值差多少?這個差異在每個 age_band、每個 sampling_stratum 都一致嗎?」 |
| 「找出支持這個結論的圖表。」 | 「有沒有任何子群的結果和整體模式相反?如果有,為什麼?」 |
整體來看,B 組的 outcome 平均值確實比 A 組低了 6 分,乍看支持主管的說法。但分 age_band 檢查後發現,差異幾乎全部集中在最年輕的那一個分層;在其他三個年齡分層中,A 組與 B 組的平均值幾乎相同。只看整體數字會把「這是哪一群人的差異」這個關鍵問題藏起來,而這正是 EDA 要主動挖出來的反例。
- 先寫下想回答的問題,再開始畫圖或算統計量,避免邊做邊換問題
- 對任何「A 比 B 好/差」的說法,至少換一個切分方式(分層、年齡、完成狀態)重新檢查一次
- 主動找出和整體模式相反的子群,並記下它們佔整體資料的比例
- 把「資料顯示什麼」與「資料品質是否足以支持這個說法」分開來寫
注意
資訊
主管已經認定「B 組表現比較差」,並請你做圖表來支持這個說法。以下哪一種做法最符合 EDA 的目的?