🗺️ AI 學習與考證地圖
大數據處理 · 統計基礎

抽樣方法:怎麼從母體抓一份有代表性的樣本

煮一鍋湯要知道鹹不鹹,不用整鍋喝完——攪一攪、舀一匙就夠。抽樣就是那一匙:關鍵不在舀多少,而在「有沒有先攪勻」。這一頁講怎麼舀才不會只舀到浮在上面的油。

母體 vs 樣本簡單隨機/系統/分層/叢集便利/配額/滾雪球抽樣誤差樣本數 ×4 誤差 ÷2stratify

💡一句話定義

抽樣(Sampling)=從母體(population,你真正關心的全部對象)裡挑出一部分樣本(sample)來觀察,再用樣本的結果推論母體。好的抽樣要「有代表性」:樣本長得像母體的縮小版;差的抽樣會「有偏」:樣本系統性地偏向某一邊,收再多也救不回來。

為什麼不全查?因為太貴(全台 2,300 萬人逐一問)、太慢(結果出來已過時)、或根本做不到(檢測每顆燈泡的壽命要把它們全用壞)。所以統計學花了一百年研究「怎麼抽」,機器學習的訓練/測試切分、不平衡資料處理也都是抽樣問題的變形。

🧭母體 vs 樣本、抽樣誤差 vs 非抽樣誤差

🌍母體 Population
你想下結論的全部對象。例:全台 18 歲以上選民、今年生產的全部晶片、平台所有用戶。
🥄樣本 Sample
實際觀察到的那一部分。樣本算出來的數(樣本平均、樣本比例)叫統計量,用來估母體的參數。
📇抽樣框 Sampling frame
實際用來抽的名單(電話簿、會員清單)。名單和母體對不上,就是偏差的第一個來源。

兩種誤差,本質完全不同

面向抽樣誤差 Sampling error非抽樣誤差 Non-sampling error
來源只抽了一部分,運氣造成樣本和母體有點不同方法本身有問題:名單不全、問法誘導、受訪者說謊、沒回應、資料輸錯
方向隨機,有時高有時低,平均起來會抵銷系統性(偏差 bias),永遠偏同一邊
增加樣本數✅ 會變小(n 四倍、誤差減半)❌ 不會變小,樣本再大一樣偏
能否量化可以,用標準誤、信賴區間算出來很難,通常只能靠設計避免
經典例子民調 ±3%1936 年《文學文摘》用電話簿與汽車登記名單預測美國總統大選,收了 240 萬份問卷仍大錯——名單只涵蓋有錢人
考試最愛考的一句:「增加樣本數可以降低抽樣誤差,但不能消除取樣偏差。」偏差要靠抽樣設計(隨機化、涵蓋完整名單)解決。細節看 取樣偏差互動教學。

🎲四種機率抽樣:每個人都有已知的被抽中機率

機率抽樣(probability sampling)的共同點:母體裡每個單位被抽中的機率是已知且非零的,所以可以算抽樣誤差、做統計推論。四種方法差在「怎麼把隨機性用進去」:

方法怎麼抽適用情境優點缺點/注意
簡單隨機
Simple random
所有單位編號,用亂數抽 n 個,每個組合機率相同母體不大、有完整名單、內部差異不特別分群最單純、無偏、理論最乾淨需要完整名單;小群體可能剛好沒抽到
系統
Systematic
算間隔 k=N/n,隨機起點後每隔 k 個抽一個生產線、排隊人流、連續資料流,沒完整名單也能做執行簡單、樣本分布均勻名單有週期性時會出事(每 7 筆一個週末,k=7 就永遠抽到同一天)
分層
Stratified
先依已知特徵分成互斥的層(性別、地區、年級),每層各自隨機抽,常按比例配置層內相似、層間差異大;要確保小群體一定有代表比簡單隨機更精準(變異更小)、每層都有估計值要事先知道分層變數;層數太多變複雜
叢集
Cluster
先把母體切成許多叢(學校、村里、箱子),隨機抽幾個叢,叢內全查母體分散、名單只到叢的層級、要省交通成本省錢省時、不需要個體名單叢內同質性高時精準度比簡單隨機差;叢間差異大就更差
分層 vs 叢集最容易混:分層是「每層都抽一些」(目的是精準),叢集是「抽幾個群、群內全拿」(目的是省錢)。記法:分層希望層內像、層間不像;叢集希望每個叢都像母體的縮小版(叢內不像、叢間像)。

🙋非機率抽樣:方便,但推論站不住

非機率抽樣(non-probability sampling)沒有辦法算出每個單位被抽中的機率,所以不能計算抽樣誤差,結論只能說「在這群人身上看到」,不能推到母體。探索性研究、前測、找稀有族群時仍很常用。

🏪便利抽樣 Convenience
抓手邊最容易拿到的:校門口問學生、網站跳出問卷。最快,也最容易偏(只問到願意停下來、有上網的人)。
🎯配額抽樣 Quota
先定各類別要多少人(男 50、女 50),再非隨機地找人湊滿。像分層抽樣的「非隨機版」:比例對了,但每層內誰被找到仍看訪員方便。
⛄滾雪球 Snowball
找到幾個受訪者,請他們介紹下一個。適合沒有名單的隱性族群(罕病患者、特定社群),但樣本高度集中在同一社交圈。
判斷題怎麼答:「研究者在捷運站隨機攔人」是便利抽樣不是隨機抽樣——「隨機」在統計裡指每個人都有已知機率被抽到,而不是「隨便」。只要沒有名單、沒有亂數,就不是機率抽樣。

🎮互動:抽樣模擬器

下面是一個 200 個點的母體,分成兩群(🔵 A 群、🟠 B 群)。B 群在不同區塊裡的密度不一樣(左上少、右下多),就像現實中不同地區的差異。選抽樣方法、調樣本數,按「抽一次」看樣本比例和母體比例差多少;按「重抽 100 次」看估計值的分布——分布窄=精準,分布中心偏離真值=有偏。

🌍 母體(200 點,10 個區塊)與本次樣本(黑框)

A 群B 群被抽到
–母體 B 比例(真值)
–本次樣本 B 比例
–本次誤差

📊 重抽 100 次:樣本 B 比例的分布

–100 次平均
–偏差(平均 − 真值)
–標準差(抽樣誤差)
玩法建議:① 用簡單隨機,n 從 10 拉到 100,看分布怎麼變窄(抽樣誤差變小)。② 切到便利抽樣,n 拉到 100——分布很窄但中心偏掉了,這就是「樣本大也救不了偏差」。③ 分層 vs 叢集,同樣 n=40,比較誰的分布窄。④ 系統抽樣在這裡表現不錯,因為點的排列沒有週期性。

📏樣本數與信賴區間:n 四倍、誤差減半

抽樣誤差的大小由標準誤(standard error)決定。估比例時,標準誤 ≈ √(p(1−p)/n),95% 信賴區間的半寬(誤差界限,margin of error)≈ 1.96 × 標準誤。注意分母是 √n:

標準誤 2.5%
95% 誤差界限 ±4.9%
信賴區間(真值 50% 時)45.1% ~ 54.9%

📐直覺
誤差 ∝ 1/√n。想把誤差砍一半,樣本要四倍;砍到十分之一,要一百倍。這就是民調通常停在 1,000 人左右的原因:再多也只省一點點。
🌍跟母體大小幾乎無關
只要母體遠大於樣本,1,000 人估全台和 1,000 人估全美精準度一樣。「母體大所以要抽更多」是常見誤解。
🎯信賴區間的意思
「95% 信賴區間」是說:同樣方法重抽 100 次,大約 95 次的區間會蓋住真值。這正是上面模擬器「重抽 100 次」在做的事。進一步看 統計推論、假設檢定。

🤖延伸到機器學習:切分、stratify、過/欠抽樣

機器學習裡到處都是抽樣,只是換了名字:

  1. 訓練/測試切分(train/test split)就是一次簡單隨機抽樣:把資料隨機分成訓練(學)與測試(考)。測試集是「樣本」,用來估模型在母體(未來資料)上的表現。
  2. stratify=分層抽樣:分類問題若正類只有 5%,隨機切分可能讓測試集正類比例變 2% 或 8%,評估就不準。train_test_split(X, y, stratify=y) 讓訓練、測試的類別比例與原資料相同。交叉驗證的 StratifiedKFold 同理。
  3. 不平衡資料的過抽樣/欠抽樣:欠抽樣(undersampling)把多數類隨機丟掉一部分;過抽樣(oversampling)把少數類重複或合成(SMOTE 在少數類鄰居之間插值造新點)。只能對訓練集做,測試集要保持真實比例。整體策略看 極度不平衡資料集。
  4. 時間序列不能隨機切:隨機抽會讓模型「看到未來」,要按時間順序切、用 walk-forward 驗證。
  5. 標註資料的抽樣:預算只夠標 1,000 筆時,用分層確保每個類別、每個來源都有;主動學習(active learning)則是「挑模型最不確定的來標」,是一種目的性抽樣。
from sklearn.model_selection import train_test_split
X_tr, X_te, y_tr, y_te = train_test_split(
    X, y, test_size=0.2, stratify=y, random_state=42   # 分層:各類比例一致
)
# 過/欠抽樣只對訓練集做(imblearn):
# from imblearn.over_sampling import SMOTE
# X_tr, y_tr = SMOTE().fit_resample(X_tr, y_tr)

⚠️常見誤區

📈「樣本夠大就代表性夠」
錯。大樣本只縮小抽樣誤差,偏差(名單不全、自願回應)一點都不會少。240 萬份的《文學文摘》就是例子。
🪦存活者偏差
只分析「活下來」的對象:只看現有客戶談滿意度、只看上市公司談成功要素。消失的那群才是關鍵。
🙋自願回應偏差
開放式網路投票、App 評分——意見強烈的人才會回,溫和多數沉默。
🔁系統抽樣碰到週期
每 7 筆抽一筆、資料剛好以週為週期 → 永遠抽到星期一。間隔要避開資料的自然週期。
🧩分層與叢集搞反
「隨機抽 5 所學校、全校學生都調查」是叢集;「每所學校各抽 30 人」是分層。
🧪先過抽樣再切分
SMOTE 合成的點若跑進測試集,等於用「複製的答案」考試,分數虛高。切分永遠在前。

✅自我檢測

Q1. 某校要調查學生滿意度,先把學生依年級分成四組,每組各隨機抽 50 人。這是哪種抽樣?

Q2. 民調只用市話名單,年輕人多半沒有市話。把樣本從 1,000 增加到 10,000 能解決這個問題嗎?

Q3. 樣本 400 人時誤差界限約 ±5%,想降到 ±2.5%,大約需要多少人?

Q4. train_test_split(X, y, stratify=y) 中的 stratify=y 作用是?

Q5. 全國有 3,000 間便利商店,研究者隨機抽 30 間,把這 30 間的所有店員都訪談。這是?

🎯重點整理

📝 iPAS 考點提醒

抽樣方法是 iPAS 中級科目二「大數據處理分析與應用」統計基礎的固定考點,初級科目也會以情境辨析出現。常見題型:① 給一段情境問「這是哪種抽樣」——關鍵字對照:「編號後亂數抽」簡單隨機、「每隔 k 個」系統、「先分組再各組抽」分層、「抽幾個群、群內全查」叢集、「路邊攔人」便利、「湊滿各類人數」配額、「請受訪者介紹」滾雪球;② 問「增加樣本數能否消除偏差」——不能,只能縮小抽樣誤差;③ 數值判讀:誤差界限 ∝ 1/√n,樣本四倍誤差減半;④ 機器學習延伸:stratify=y 是分層抽樣、SMOTE 是過抽樣、過/欠抽樣只能做在訓練集。易混點:分層 vs 叢集(分層每層都抽求精準,叢集抽群全查求省錢)、「隨機攔人」不是隨機抽樣。情境題長相:「某電商 95% 訂單正常、5% 退貨,要建退貨預測模型並確保測試集退貨比例不失真,切分時應該?」答:使用分層切分(stratify)。

想練情境題與詳解 → AI 學習與考證地圖

❓ 常見問題

分層抽樣和叢集抽樣差在哪?

分層是把母體分成互斥的層,每一層都各自隨機抽一些(目的是精準、確保小群體有代表);叢集是把母體切成許多群,隨機抽幾個群、群內全部調查(目的是省成本)。分層希望層內相似、層間不同;叢集希望每個群都像母體縮影。

樣本數越大越好嗎?

樣本數增加只會縮小抽樣誤差(隨機波動),而且是 1/√n 的速度:四倍樣本才減半誤差。它完全不會減少偏差(名單不全、自願回應、問法誘導),所以代表性靠隨機化設計而非數量。

系統抽樣什麼時候會出問題?

當名單有週期性而且週期剛好等於或整除抽樣間隔時,例如每 7 筆一週、間隔也是 7,就永遠抽到同一個星期幾。間隔要避開資料的自然週期,或先把名單打亂。

在路邊隨機攔人算隨機抽樣嗎?

不算,那是便利抽樣。統計上的「隨機」指母體每個單位都有已知且非零的被抽中機率,需要名單與亂數;路邊攔人只會碰到剛好經過、願意停下的人。

train_test_split 的 stratify 是什麼?

就是分層抽樣:以 y(類別)為層,讓訓練集與測試集的類別比例和原資料一致。對不平衡資料特別重要,否則測試集的少數類可能太少而讓評估失真。

過抽樣和欠抽樣要在切分前還是切分後做?

切分後,而且只對訓練集做。若在切分前做,SMOTE 合成或複製的少數類樣本會流進測試集,等於用複製的答案考試,分數會虛高。

🧭 相關主題

← 返回 AI 學習與考證地圖