over 2 years ago

Bootstrap可以說是這幾十年來(其實已經快四十年了)統計界的重大突破之一
因為這套方法非常簡單 而用途又很強大 所以不斷的被廣為使用
這篇文章簡單談談Bootstrap的基本概念與原理

p.s. 這篇下面有用LaTeX打的數學 有些瀏覽器+OS顯示會有問題 (win7+chrome/firefox有問題) 不過使用IE觀看反而沒有問題...

Bootstrap的主要用途是:
衡量估計式(統計量)的誤差大小 進而做統計推論(像是信賴區間 假設檢定)

估計式(Estimator)是由資料組成 用來估計母體的某個參數
因為資料是隨機的 估計式自然也是隨機的
理想的估計式 會隨著樣本數越來越大 收斂到母體我們想要了解的參數(這稱為一致性consistency)

現在給一個例子
我們有興趣的是--台灣博士生的"中位數"薪水
而假設我們從教育部得到一筆500名台灣博士生的薪水資料(隨機抽樣 只有部分博士生的資料)
我們可以根據這筆資料 用樣本的中位數 當做母體中位數的估計式
來估計實際台灣博士生的中位數薪水
而根據機率理論 這個樣本中位數 會收斂到母體中位數

但這個估計式有個問題:
雖然他會收斂 可是我們並不曉得誤差的大小
以及這個估計式的變異程度(因為資料是隨機 所以估計式也是隨機)
因為用這一筆資料 我們只能得到一個估計值
一個值本身是無法分析隨機的大小的

1. Bootstrap的基本原理

現在想像一個可以分析隨機程度的理想狀態:
假設我們有一台神奇的機器
這台機器 擁有所有台灣博士生的薪水資料
因此我們可以不斷從這台機器產生出一筆又一筆 500名隨機台灣博士生的薪水資料
每次的一筆500名博士生的資料 我們就能得到一次新的估計量
假設我們用這台機器1000次 我們就能得到1000個 中位數的估計量
利用這1000個中位數估計量 就能分析出這"樣本中位數"估計的變異大小

但在現實生活 我們沒有這台機器 我們只有一筆資料
所以無法用這個方式去分析出估計式的隨機大小

不過Bootstrap提供了一個機制 可以逼近這台機器的運作原理!
Bootstrap就是從給定的資料裡面 再次重複抽樣出一筆一樣大小的資料
(允許同樣的一個資料點被抽到很多次: sample with replacement)
每一次Bootstrap都會產生一筆新的資料 而我們可以用這筆新資料去得到一個新的估計式
不斷地使用Bootstrap 我們就可以得到好幾個估計值
利用這些Bootstrap估計值 我們就能計算估計式的變異大小

Bootstrap這和那檯理想機器的機制一樣:
那檯機器是從"母體"去重複抽樣 而我們現在是從"樣本"去重複抽樣
你可以想像當樣本數很大時 樣本數的分配與母體的分配 非常相近
因此從兩邊抽樣出來的誤差大小應該也會相近 因此Bootstrap是可行的
(當然 這並不總是對的 我們後面會談所謂的Bootstrap consistency)

2. 常見的Bootstrap用法

上面談的是Bootstrap的基本原理--和那台理想機器一樣
現在談Bootstrap常用來估計的兩種"隨機測度"(uncertainty measures)
這邊要用一點點數學

我們定義
為原本的估計式
而假設我們產生B個Bootstrap樣本
因此得到

B個新的估計式

第一種隨機測度是 估計式的"變異數"(Variance)
也就是我們想要算
Bootstrap的估計方法很簡單 就直接計算Bootstrap估計值的樣本變異數
也就是我們使用

作為的估計量
注意: 這個變異數估計"沒有使用到原本的估計量 "

第二種隨機測度是 估計式的"平均平方誤差"(MSE, Mean square error)
也就是我們想要計算
是我們想要估計的參數值
這時候我們對MSE的估計量就是

注意一個重大差別: 我們使用了原本的估計量 而不是Bootstrap的樣本平均數)

為什麼會有這個差異呢?
原因是 如果我們只在乎估計式的變異數(第一種情況)
這個變異量和實際上母體的參數值 並沒有關係
如果我們使用那檯理想機器 我們不需要計算實際母體的參數值
我們只需要一直產生出500名博士生的樣本去計算變異數

在第二種情況 我們想要分析的量(MSE) 需要使用到實際母體的參數
假如我們有那台機器 我們會需要用到
(1) 所有博士生的薪水 去計算真實的值
(2) 不斷產生出500名博士生的薪水 然後和(1)比較 去得到MSE的值
當我們使用Bootstrap 我們是把原始樣本當做母體
因此對應的參數 就是使用原本樣本的估計式
所以才會得到那樣的公式

Bootstrap不只可以估算隨機測度
更可以直接估算誤差的"分配函數"(cumulative distribution function)
像是這個量的隨機分配
就可以用一堆Bootstrap的的分配來逼近
當我們得到的大致分配
我們就能夠做信賴區間 或是檢定是否是某些值

3. Bootstrap收斂性

最後 我們用比較數學的角度去談Bootstrap的原理(以及其收斂性: Bootstrap consistency)
給定一個機率分配函數(CDF, cumulative distribution function) 我們稱為
這個函數F 完全描述了母體的隨機性質
也就是我們的資料()是根據 抽出n個獨立樣本
因此我們估計式的隨機性 完全被所決定
當然 我們想要估計的母體參數也是的一個特性
像是在博士生中位數的問題裡 就是的中位數
換句話說 前面所提到的理想機器 就是這個--只要知道 就能夠不斷抽樣出新的樣本

所以不論是的變異量 或是平均平方誤差MSE
都完全被所決定 (亦即: 只要知道 就知道這些量)
因此我們可以說 我們估計式的隨機測度 是一個的"函數"
也就是函數的函數 (functional: a function of function)
我們用來表示這個隨機測度 其中表示樣本數

仔細觀察Bootstrap的過程
就會發現Bootstrap其實就是不斷地從樣本分配函數 (empirical CDF)裡面去抽樣
可以回想一下 Bootstrap和理想機器之間的關係--一個是從原始樣本(可以看成)不斷抽樣 一個是從母體不斷抽樣

因此Bootstrap對隨機測度的估計量
在許多情況下可以寫成
所以Bootstrap對隨機測度的估計是一致的 必須滿足

符號表示機率收斂(convergence in probability)

如果今天我們要說Bootstrap可以用來逼近誤差的"分配函數"
那我們需要證明

其中的收斂速率
第一項是Bootstrap版本的"誤差分配函數"
第二項是真實版本的"誤差分配函數"

Bootstrap收斂性並不容易證明
一個比較常用的方法是先把要估計的母體參數寫成的函數
也就是
而我們的估計式選成
然後設法去證明在某些情況下是"可微分"的
(functional differentiation, 這個數學就比較複雜)

有興趣的讀者 我推薦下面這本書
Van der Vaart, Aad W. Asymptotic statistics. Vol. 3. Cambridge university press, 2000.
裡面第23章談了很多關於Bootstrap收斂性的證明
也可以看Larry Wasserman的Intermediate Statistics的課程內容
http://www.stat.cmu.edu/~larry/=stat705/
裡面第13章有談Bootstrap (每年的章節可能會換)

一般來講 Bootstrap在"誤差分配函數的收斂性"上
證明難度特別高
但如果要做統計推論 像是信賴區間等等
就必須要證明Bootstrap對誤差分配函數的收斂性

Bootstrap還有許多種版本 像是smooth bootstrap, wild bootstrap (multiplier bootstrap), residual bootstrap....
基本原理都是 從不同的估計式去抽樣
最原始的Bootstrap是從 empirical CDF
其他的方法像是smooth bootstrap就是從kernel density estimator去抽樣
可以想成 用不同方法去製造一個類似"理想機器"的抽樣機制

← 預測--Machine Learning優於統計之處 Modal Regression--一種新的角度做迴歸 →
 
comments powered by Disqus