2019-07-07 14:35:47
原文地址: http://blog.sciencenet.cn/home.php?mod=space&uid=255662&do=blog&id=523462
Bootstrap又稱自展法,是用小樣本估計總體值的一種非參數方法,在進化和生態學研究應用十分廣泛。例如進化樹分化節點的自展支持率等。
在進行分析的時候,首先要做的就是,判斷隨機變量的類型,然后就是判斷隨機變量的數據服從什么分布。什么分布至關重要,因為它直接決定能不能分析。舉例:如果進行方差分析,首先就要求正態分布,如果不是正態分布,就要有補救措施,這個補救措施就是bootstrap,也是應用bootstrap的原因,如果因變量符合或者大概符合正態分布,bootstrap方法就可以不用。
Bootstrap的思想,是生成一系列bootstrap偽樣本,每個樣本是初始數據有放回抽樣。通過對偽樣本的計算,獲得統計量的分布。例如,要進行1000次bootstrap,求平均值的置信區間,可以對每個偽樣本計算平均值。這樣就獲得了1000個平均值。對着1000個平均值的分位數進行計算, 即可獲得置信區間。可以證明,在初始樣本足夠大的情況下,bootstrap抽樣能夠無偏得接近總體的分布(均值和方差)。
原理:中心極限定理,樣本均值的抽樣分布是所有的樣本均值形成的分布,即μ的概率分布.樣本均值的抽樣分布在形狀上卻是對稱的.隨着樣本量n的增大,不論原來的總體是否服從正態分布,樣本均值的抽樣分布都將趨於正態分布,其分布的數學期望為總體均值μ,方差為總體方差的1/n。
下面是一個實例:
例如,假設有一批產品,隨機抽出30個,使用壽命(天數)如下,試用bootstrap的方法估計這批產品壽命95%的置信區間。
dat<-c(119,120,131,209,210,337,332,287,146,129,232,169,208,253,142,105,419,179,324,287,115,132,308,356,286,221,204,105,45,245) ## 查看原始數據的頻數直方圖 hist(dat, col = "blue")
##生成一個存儲器 boot.sample <- list() ## 循環1000次,有放回的抽樣,每次生成的 ## 新樣本存儲在boot.sample中 for(i in 1:1000){ boot.sample[[i]] <- sample(dat,size = 30, replace = TRUE) } ## 求每個樣本的mean,結果為1000個bootstrap樣本的mean ## unlist 平展列表對象生成的內容 boot.mean <- unlist(lapply(boot.sample, mean)) ## 頻數直方圖 hist(boot.mean, col = "red") ## 求95%的置信區間 CI95 <- quantile(boot.mean, probs = c(0.025, 0.975)) ## 在頻數直方圖上加置信區間 abline(v = CI95, col = "blue")