四個步驟徹底學習標準誤:它跟標準差到底有什麼不同?

by 好豪
Published: Last Updated on

在這個「大數據」時代,每個人都會說數據越多越好,但你真的知道為什麼嗎?你知道數據要多少才夠嗎?「標準誤」就是一種回答這些問題的好方式。

只要你的工作中有用到一點統計學,不論是 信賴區間、或是線性回歸,你一定會遇到標準誤這個統計量,它的名稱跟標準差很像,但意義有很大的不同,要是搞不清楚,肯定會被同事質疑你的統計學專業!

如果你還不熟悉標準誤、標準差、還有樣本數之間的關係,在這篇文章將幫助你徹底學習,本文將用四個步驟、從四種不同角度帶你認識標準誤,除了白話解釋與圖解,也附上 Python 程式碼以 Colab 開啟)讓你可以親手玩玩看、培養標準誤的統計直覺。

標準誤代表你的數據有多「可靠」

筆者好豪曾在介紹 信賴區間 的文章中,各自用一句話介紹標準誤與標準差,在此快速複習一下:

  • 標準差(Standard Deviation)指的是資料的發散程度,可以用「各資料點與樣本平均數的距離」來理解
  • 標準誤(Standard Error)代表的是「樣本平均數距離母體平均數多遠」的誤差程度資訊

我們做統計調查時,例如在台北市隨機選出 100 個人,打算從這群樣本的平均身高、估計出這個地區的實際平均身高,想必大家都會同意,你抽樣調查後得到的樣本平均數不可能跟母體平均數(該地區平均身高的「真相」)一模一樣,這個樣本平均數跟母體平均數之間的差距,就是你調查的「誤差」。

再接著想像一下,如果同時有五千個統計調查小組都跟我們做一樣的事,每個小組都在台北市隨機選 100 個人計算平均身高,每個小組抽樣選出的 100 個人都不一樣,算出來的樣本平均數當然也不一樣。由於每一個小組都有不同的調查「誤差」,五千個小組總共有五千個誤差數據,描述起來太麻煩,「標準誤」就是統計學家將這些誤差濃縮成單一個數字的「樣本平均數距離母體平均數多遠」資訊,這樣講起來,有標準誤可以用是不是超方便呢!

筆者好豪覺得更簡單白話的說法,是把標準誤想成數據的可靠程度。如果五千個小組調查出來的平均身高,每一組都差超多,有好幾組調查結果是 140 公分、也有好幾組調查結果是 180 公分,你是否也會開始懷疑大家的調查方法還不夠好、不夠精確、不夠可靠呢?如果每一組調查結果都差很多,也就表示每組的調查誤差差別很大,濃縮後的「標準誤」資訊當然也會變大,這就是為什麼可以用標準誤判讀數據有多可靠,標準誤大、數據就不夠可靠,標準誤小、數據就更可靠。

就算資料發散程度高使得標準差很大
在樣本數很大的時候,標準誤也可能很小
請務必搞懂標準差與標準誤的不同!
(圖示來源:Birgitte Nellemann

標準誤是樣本平均的標準差

上個小節筆者盡力以白話說明為主,現在我們看看統計學官方定義怎麼說:

標準誤是樣本平均數抽樣分布的標準差
假設可以從母體中隨機選取無限的大小相同的樣本,那每個樣本都可以有一個樣本均值
依此法可以得到一個由無限多樣本均值組成的母體,該母體的標準差即為標準誤差

《維基百科》

用上個小節的例子來說明這個定義:五千個調查小組各自算出的五千組平均身高,它們的標準差就是標準誤了。又由於標準差代表的是資料有多「發散」的資訊,我們也可以換句話說,標準誤要回答的問題是:「五千個調查小組抽樣的結果,彼此是否相差很多?」,標準誤很大就表示每組人抽樣結果都差超多,這時很難讓人相信大家的調查方式足夠可靠。

有趣的是,上述標準誤的官方定義,是可以用簡單幾行 Python 程式碼來模擬驗證的!流程概述如下:

  1. 假設一個情境當作母體,例如已知台北市女性平均身高為 160 公分、標準差 7 公分,並且身高是常態分佈
  2. 用常態分佈抽樣出 100 人,計算這 100 人的平均身高
  3. 第 2 步驟重複做 5,000 次,取得總共 5,000 個樣本平均數
  4. 算出這 5,000 個樣本平均數的標準差,得到標準誤

這種假設母體已知、來模擬出標準誤的做法稱為 蒙地卡羅法,請讀者到 好豪的 Python NotebookColab) 參考詳細模擬流程程式碼,讀者可以 Notebook 中看到蒙地卡羅法算出的標準誤跟統計課本公式算出的理論標準誤數字確實很接近

看到這裡的讀者會不會想問,標準誤為什麼不依照定義、計算「樣本平均數抽樣分布的標準差」就好,我們還要公式幹嘛?

問題在於我們不可能做多次樣本抽樣!我們通常只會抽樣一次,所以無法知道標準誤定義「樣本平均數抽樣分布的標準差」所說的「分布」。真實世界不可能同時有五千個調查小組在做一模一樣的事情,你手上不可能有五千個樣本平均數,你只會有唯一一組樣本、只算得出唯一一個樣本平均數。使用標準誤公式的話就沒問題了,只需要一組樣本就能算出來誤差程度。但在繼續講公式之前,下個小節要先介紹的「拔靴法」標準誤算法,即使不使用公式、同樣也可以只用一組樣本算出標準誤。

標準誤是無限多個樣本平均數的標準差(發散程度)
但是實際上我們能得到的樣本平均數(”Realized” Sample)只會有一組
(圖示來源:Y. So, 2016

「拔靴法」標準誤

統計學中的 拔靴法(Bootstrap Method)是有放回的均勻抽樣

  • 有放回:某筆資料即使被抽到過,下次還是有可能再重複被抽到
  • 均勻抽樣:每筆資料被抽到的機率相同

拔靴法是可以讓你就算只有一組樣本,也可以模擬出無數組樣本,進而描繪樣本平均數分布、算出標準誤的神奇方法。當你手上只有一組 100 個人身高的樣本,你可以對這 100 人資料使用拔靴法抽樣 5,000 次,彷彿有 5,000 個調查小組同時在進行抽樣,也就可以繼續使用「樣本平均數抽樣分布的標準差」這項定義來算出標準誤了!

假設你手上已經取得抽樣 100 人的身高數據,拔靴法的標準誤計算流程如下:

  1. 從已取得的 100 人樣本中,有放回地均勻抽出恰好 100 個人(有放回表示這 100 個人可能有其中幾個人是重複的)
  2. 第 1 步重複進行 5,000 次,取得總共 5,000 個樣本平均數
  3. 算出這 5,000 個樣本平均數的標準差,得到標準誤

對同一份樣本重複抽樣聽起來有點詭異嗎?眼見為憑、動手算算看就會相信了!請讀者到 好豪的 Python NotebookColab) 查看計算結果,拔靴法算出的標準誤跟統計課本公式算出的標準誤結果幾乎一樣,是不是很神奇呢!


相信這時候聰明的讀者一定又有疑惑了,既然公式算出的標準誤跟拔靴法會很接近,相比之下拔靴法作法麻煩多了,我們何不只用公式來算就好?為什麼要學拔靴法?

在此要強調,本文目前為止討論到的統計量都是「平均數」,例如平均身高,而統計課本常見的標準誤公式 \frac{\sigma}{\sqrt{N}} 只適用於平均數。例如,如果你的統計量不是平均數,而是中位數的話,上述公式不能用!但是拔靴法的標準誤計算則是在任何統計量都適用

  • 當你的統計量是平均數,你當然可以用公式算標準誤就好;
  • 如果統計量是中位數等其他統計量,則該要使用拔靴法計算標準誤

標準誤公式的兩大元素:樣本標準差與樣本數

標準誤的 公式 其實沒什麼好討論的,請大家背起來就對了 (˚∀˚)

    \[Standard\ Error\ of\ the\ Mean = \frac{Sample\ Standard\ Deviation}{\sqrt{Sample\ Size}}\]


    \[\sigma_{M} = \frac{\sigma}{\sqrt{N}}\]

(就如拔靴法小節提到的,此公式只適用於平均數,所以這個公式也會稱為 Standard Error of the Mean,或者 Python 的 Scipy 套件直接稱它為 SEM

這個小節主要想從公式出發,用圖解幫助大家建立對標準誤的數字直覺、理解公式裡的樣本標準差與標準數會怎麼影響標準誤。

標準誤與樣本標準差成正比

樣本內的資料越發散,樣本平均數的誤差越高

樣本標準差越大,代表你抽到的樣本之中,每個人的統計量相差很多、數值相當發散,就如前面的舉例,你可能在資料看到有很多人身高 140 公分、又有很多人身高 180 公分。

當我們估計的目標是母體平均數,越發散的樣本資料、有很多筆資料離平均數很遠,你抽樣得出的樣本平均數就會更不穩定。例如,你目前抽樣 9 個人、算出平均身高是 168 公分,要是你抽樣出第 10 個人是 200 公分,樣本平均數會變成 171 公分,只多抽一個人、前後平均數卻差了 3 公分之多,這樣你願意相信母體平均數更接近 168 公分還是 171 公分?還是都不相信?

再換個角度說,樣本標準差越大,樣本平均數的分佈會越扁平,依照此定義算出的標準誤也就會越大。樣本內的資料越發散,(通常)也表示母體資料本質上就是分散,如果存在五千個調查小組同時做抽樣,每組調查算出的樣本平均數也會較分散、彼此數值會差很多,這就是分佈扁平的意思。

反之,樣本標準差越小,表示每筆資料數值相差不會太大,樣本平均數的分佈會越集中,標準誤會越小。

圖表來源:好豪的 Python NotebookColab

標準誤與樣本數開根號成反比

資料越多,抽樣結果的誤差越小

我們來試想一個極端情境,假設我們已知一間學校有 1,000 名學生,我們想知道這 1,000 名學校的平均身高。你可以超級勤奮地直接抽樣全部 1,000 名學生,既然是全部學生,不管你怎麼「抽樣」,都會算出一模一樣的平均身高對吧?因為你的樣本數已經跟我們選定的母體人數一樣是 1,000 人了,樣本平均數當然怎麼算都只有一個值。

又如果你不抽樣全部學生,而是打算抽樣其中 995 人,只有 5 個人沒被抽到,你可以想像,要是你反覆做多次抽樣,算出來的多組平均身高彼此肯定相差無幾、而且都會很接近母體平均身高(全部 1,000 人的平均身高)。

再來,如果你選擇抽樣的人數下降到 600 人呢?比起上述抽樣 995 人的例子,每次抽出的 600 人算出來的多組平均身高彼此差異應該會更大,對吧?

從這個範例希望幫助讀者理解,樣本數越小,多次重新抽樣之間樣本平均數的差異會越大,也表示計算出來的樣本平均數也會離母體平均數較遠;反之,樣本數越大,計算出來的樣本平均數會越接近母體平均數。樣本平均數接近母體平均數,意思是其分佈會更集中,這就是 大數法則 在描述的現象,也是統計學家回答「為什麼數據越多越好」的科學方法。

圖表來源:好豪的 Python NotebookColab


結語

講起來可能有點詭異,筆者剛學到用蒙地卡羅法跟拔靴法來描述標準誤的時候,超級興奮的!以前在統計課本只用冷冰冰的公式,怎麼看都沒什麼心得,自己動手寫 Python 程式來模擬之後,有一種突然理解標準誤在幹嘛的感覺,我很希望這篇文章跟程式碼範例,也能帶給讀者這種豁然開朗的感動。

本文的四個步驟,漸進式地向讀者表達四種理解標準誤的方式:

  1. 標準誤就是資料可靠程度
  2. 標準誤是樣本平均數抽樣分布的標準差
  3. 樣本平均數抽樣分布實際上不可得,可以用拔靴法來估計相似結果
  4. 樣本標準差越大、標準誤就越大;而樣本數越多、則標準誤就越小

相信讀者理解這些要點之後,能更清楚分辨標準誤與標準差之間的差別,也對統計報表經常呈現的標準誤有更多數字直覺。

這篇文章提到的作法,在 好豪的 Python Notebook在 Colab 開啟) 都有完整的程式碼示範,請各位資料科學愛好者務必親手操作、體驗標準誤的特性。如果你也喜歡用這種實作的方式學習統計學,很推薦你跟我一起研讀 《資料科學家的實用統計學》 ,這本書最大特色就是同時以 R 與 Python 程式碼來實作抽樣分佈、假設檢定、或線性回歸等等統計學觀念,同時動腦又動手寫 Code 的方式讓你扎實記住這些資料科學必備知識。

參考資料:


你正在研讀統計學嗎?筆者好豪喜歡用白話與圖解的方式介紹統計學知識,我相信以下這些文章你也會有興趣:

如果這些文章對你有幫助,歡迎追蹤 好豪的 Facebook 粉絲專頁,我會持續撰寫資料科學知識相關文章與你分享!

推薦閱讀