筆記說明
讀《Discovering Statistics Using R》第六章 Correlation中的6.5.7節(jié)Bootstrapping correlations做的筆記踏烙。在書中bootstrap最初出現(xiàn)于5.8.4節(jié)顶岸。本筆記主要介紹bootstrap基本概念和使用bootstrap計(jì)算Kendall’s tau相關(guān)系數(shù)的置信區(qū)間昔逗。
示例數(shù)據(jù)
設(shè)我們想要驗(yàn)證一個(gè)理論:創(chuàng)造力更強(qiáng)的人可以講出更厲害的故事捉捅。有這么一個(gè)比賽“the World's Biggest Liar competition”每年舉辦一次厂置。作者收集了68個(gè)參賽者的比賽名次數(shù)據(jù)并讓他們做了一份考察創(chuàng)造力的量表帕膜,滿分60分弟塞。數(shù)據(jù)在這里:The Biggest Liar.dat
library(rio)
liarData <- import("data/The Biggest Liar.dat")
str(liarData)
## 'data.frame': 68 obs. of 3 variables:
## $ Creativity: int 53 36 31 43 30 41 32 54 47 50 ...
## $ Position : int 1 3 4 2 4 1 4 1 2 2 ...
## $ Novice : int 0 1 0 0 1 0 0 1 1 0 ...
Position即為比賽名次稿械,Creativity即為創(chuàng)造力評分膜廊。
由于position變量為定序變量乏沸,而Pearson相關(guān)系數(shù)要求數(shù)據(jù)為定距變量,不適合使用Pearson相關(guān)系數(shù)爪瓜。名次數(shù)據(jù)排序相同的情況有點(diǎn)多蹬跃,比較適合使用Kendall’s tau相關(guān)系數(shù)。本系列筆記8中可以看到使用cor.test()
等方法無法計(jì)算Kendall’s tau相關(guān)系數(shù)的置信區(qū)間,我們使用bootstrap方法來計(jì)算Kendall’s tau相關(guān)系數(shù)的置信區(qū)間蝶缀。
仍然是先做一個(gè)散點(diǎn)圖看一下數(shù)據(jù)情況:
#散點(diǎn)圖
library(ggplot2)
scatter <- ggplot(liarData, aes(Creativity, Position)) + geom_point()
Bootstrap
bootstrap是一種非參數(shù)的參數(shù)估計(jì)方法丹喻。也叫做自助法。
參數(shù)估計(jì)中的一個(gè)重要問題是我們不知道抽樣分布(即統(tǒng)計(jì)量的分布)的形狀翁都。傳統(tǒng)參數(shù)估計(jì)的解決方法:
- 如果樣本數(shù)據(jù)符合正態(tài)分布碍论,那么我們可以合理推斷抽樣分布符合正態(tài)分布。
- 中心極限定理告訴我們柄慰,在大樣本下鳍悠,抽樣分布符合正態(tài)分布。
bootstrap法將樣本數(shù)據(jù)作為一個(gè)總體坐搔,從這個(gè)總體中有放回地重復(fù)抽取很多更小的樣本藏研,樣本量和原樣本數(shù)據(jù)相同,新抽到的樣本稱為bootstrap樣本概行,根據(jù)bootstrap樣本的信息估計(jì)抽樣分布的特征:在每個(gè)bootstrap樣本中計(jì)算要估計(jì)的統(tǒng)計(jì)量蠢挡,進(jìn)而可以模擬一個(gè)抽樣分布,用模擬出的抽樣分布的標(biāo)準(zhǔn)差來作為待估計(jì)統(tǒng)計(jì)量的標(biāo)準(zhǔn)誤的估計(jì)值凳忙。有了標(biāo)準(zhǔn)誤的估計(jì)值就可以計(jì)算置信區(qū)間和進(jìn)行假設(shè)檢驗(yàn)了业踏。
我們主要借助boot
包中的boot()
完成bootstrap. boot()
的一般用法為:
object <- boot(data = , statistic =, R = , ...)
生成一個(gè)bootstrap對象
-
data
指定使用的數(shù)據(jù)集 -
statistic
指定 計(jì)算統(tǒng)計(jì)量的函數(shù)。該函數(shù)的第一個(gè)參數(shù)應(yīng)為原始數(shù)據(jù)涧卵,第二個(gè)參數(shù)應(yīng)為用于選擇數(shù)據(jù)行勤家、確定bootstrap樣本的indices。 -
R
即重復(fù)抽取bootstrap樣本的次數(shù)艺演。為使bootstrap估計(jì)的結(jié)果穩(wěn)健却紧,重復(fù)抽樣數(shù)應(yīng)該足夠大桐臊,《Discovering Statistics Using R》作者一般將重復(fù)數(shù)設(shè)為2000胎撤。
用boot()
進(jìn)行bootstrap法時(shí)的關(guān)鍵在于statistic=
參數(shù)對應(yīng)的計(jì)算統(tǒng)計(jì)量的函數(shù)。這里我們要對Kendall’s tau相關(guān)系數(shù)這個(gè)統(tǒng)計(jì)量進(jìn)行bootstrap断凶,使用的函數(shù)為:
bootTau <-function(liarData,i) {
cor(liarData$Position[i], liarData$Creativity[i],
use = "complete.obs", method = "kendall")
}
這個(gè)函數(shù)的作用就是輸入bootstrap樣本(用i來確定)伤提,返回對應(yīng)的樣本Kendall’s tau相關(guān)系數(shù)。
定義好bootTau
后我們就可以使用boot()
來生成bootstrap對象:
library(boot)
set.seed(1234)
boot_kendall <- boot(liarData, bootTau, 2000)
boot_kendall
由于bootstrap過程涉及隨機(jī)抽樣认烁,每次的計(jì)算結(jié)果都會不一樣(重復(fù)次數(shù)足夠大時(shí)結(jié)果會比較穩(wěn)定)肿男,用set.seed()
確定隨機(jī)種子數(shù),以保證可重復(fù)性(即每次運(yùn)行代碼結(jié)果都是一樣的)却嗡。
## ORDINARY NONPARAMETRIC BOOTSTRAP
##
##
## Call:
## boot(data = liarData, statistic = bootTau, R = 2000)
##
##
## Bootstrap Statistics :
## original bias std. error
## t1* -0.3002413 -0.00220919 0.09730457
從結(jié)果可以看到bootstrap法對Kendall’s tau相關(guān)系數(shù)的估計(jì)值為-0.300舶沛,標(biāo)準(zhǔn)誤為0.097。
對于生成的bootstrap對象窗价,可以用plot()
來查看bootstrap得到的抽樣分布
plot(boot_kendall)
可以看出來bootstrap得到的Kendall’s tau相關(guān)系數(shù)的抽樣分布比較符合正態(tài)分布如庭。
對于生成的bootstrap對象,可以用
boot.ci()
來生成統(tǒng)計(jì)量的置信區(qū)間撼港。boot.ci(bootobject, conf, type)
-
bootobject
即為boot()
生成的bootstrap對象 -
conf
指定置信區(qū)間長度坪它,默認(rèn)為0.95 -
type
指定置信區(qū)間計(jì)算方法骤竹,可能值為 "norm","basic", "stud", "perc", "bca","all"往毡,默認(rèn)為"all"蒙揣,即輸出全部5種方法的結(jié)果。具體這五種方法不在此展開开瞭,其中"bca"法對應(yīng)adjusted bootstrap percentile (BCa) method懒震,會根據(jù)偏差(bootstrap對象中顯示的bias)對區(qū)間做簡單調(diào)整。在大部分情況中是更可取的(此結(jié)論來自《R in action》第二版)
boot.ci(boot_kendall)
## BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
## Based on 2000 bootstrap replicates
##
## CALL :
## boot.ci(boot.out = boot_kendall)
##
## Intervals :
## Level Normal Basic
## 95% (-0.4887, -0.1073 ) (-0.4934, -0.1060 )
##
## Level Percentile BCa
## 95% (-0.4945, -0.1071 ) (-0.4887, -0.1005 )
## Calculations and Intervals on Original Scale
## Warning message:
## In boot.ci(boot_kendall) :
## bootstrap variances needed for studentized intervals
結(jié)果中給出了四種方法計(jì)算得到的置信區(qū)間( "stud"對應(yīng)結(jié)果未能正常輸出)嗤详。四個(gè)置信區(qū)間都沒有跨0挎狸,表示Kendall’s tau相關(guān)系數(shù)有統(tǒng)計(jì)學(xué)意義。