拓端tecdat|R語言Bootstrap(自舉法,自抽樣法)估計(jì)回歸置信區(qū)間分析股票收益
原文鏈接:http://tecdat.cn/?p=25908
原文出處:拓端數(shù)據(jù)部落公眾號(hào)
介紹
假設(shè)你做了一個(gè)簡單的回歸,現(xiàn)在你有了你的?
. 您想知道它是否與(例如)零顯著不同。一般來說,人們會(huì)查看他們選擇的軟件報(bào)告的統(tǒng)計(jì)數(shù)據(jù)或 p.value。問題是,這個(gè) p.value 計(jì)算依賴于因變量的分布。如果沒有不同的說明,您的軟件假定為正態(tài)分布,那是怎么回事?
例如,(95%)置信區(qū)間是?

,1.96 來自正態(tài)分布。
建議不要這樣做,bootstrapping* 的優(yōu)點(diǎn)在于它沒有分布的問題,它適用于高斯、柯西或其他的分布。
40年前電腦計(jì)算速度很慢,現(xiàn)在不是了。你仍然可以保留你的分布假設(shè),但至少要看看當(dāng)你放松假設(shè)的時(shí)候會(huì)發(fā)生什么。做到這一點(diǎn)的方法是使用Bootstrap法,這個(gè)想法很直觀和簡單。
約翰-福克斯寫道:"總體對樣本來說,就像樣本對引導(dǎo)程序樣本一樣"。但這是什么意思呢?你對來自樣本的估計(jì)

,應(yīng)該是對 "真實(shí)"

,即總體的估計(jì)

,而這是未知的?,F(xiàn)在從樣本中抽取一個(gè)樣本,我們稱這個(gè)樣本為Bootstrap樣本,根據(jù)這個(gè)(Bootstrap)樣本來估計(jì)你的情況,現(xiàn)在這個(gè)新的估計(jì)是對你原來的估計(jì)

,也就是來自原始數(shù)據(jù)的那個(gè)。為了清楚起見,假設(shè)你有3個(gè)觀測值,第一個(gè)是{x=0.7,y=0.6},第二個(gè)是{x=A,y=B},第三個(gè)是{x=C,y=D},現(xiàn)在,從樣本中抽出的一個(gè)例子是洗牌排序:第一個(gè)是{x=A,y=B},第二個(gè)是{x=0.7,y=0.6},第三個(gè)是{什么什么}。這種 "洗牌 "就是我們所說的bootstrap樣本,注意,任何觀察值都可以被選擇一次以上,或者根本不被選擇,也就是說,我們是用替換法取樣?,F(xiàn)在我們再次估計(jì)同一統(tǒng)計(jì)量x=C,y=D}。這種 "洗牌 "就是我們所說的bootstrap樣本,注意,任何觀察值都可以被選擇一次以上,或者根本不被選擇,也就是說,我們是用替換法取樣。現(xiàn)在我們再次估計(jì)同一統(tǒng)計(jì)量

(在我們的例子中)。
?
重復(fù)這個(gè)樣本和估計(jì)很多次,你就有了許多Bootstrap估計(jì),現(xiàn)在你可以檢查表現(xiàn)。你可以用它來做一件事,就是為你的估計(jì)值自舉Bootstrap置信區(qū)間(CI),而不需要基本的分布假設(shè)。
在 R
在 R 中,“boot”包可以解決問題:
library #加載軟件包
# 現(xiàn)在我們需要我們想要估計(jì)的函數(shù)
# 在我們的例子中,是β。
bfun = function(da,b,fola){??
# b是bootstrap樣本的隨機(jī)指數(shù)
return(lm$coef[2])??
# 這是對β系數(shù)的解釋
}
# 現(xiàn)在你可以進(jìn)行自舉了。
bt = boot
# R是多少個(gè)bootstrap樣本
plot
hist
您可以放大在每個(gè)bootstrap程序中選擇了哪些索引,確切的排列是什么,可以使用函數(shù) bay 來做到這一點(diǎn):
zot = boot.array
dim(zo) # 大小應(yīng)該是R(bootstrap樣本數(shù))乘以n(你的數(shù)據(jù)的NROW)
hist
# 這是每一個(gè)指數(shù)的頻率,對于第一個(gè)bootstrap運(yùn)行,所以在這個(gè)直方圖中,一個(gè)Y值比如說是3
#意味著在這個(gè)特定的bootstrap樣本中,X值觀察被選擇了3次
自己編寫代碼
如果您可以自己編寫代碼,就可以更好地理解它,對于像bootstrap置信區(qū)間這樣的簡單問題,它更加簡單和快捷:
ptm <- pce() # 看一下它所花的時(shí)間
for (i in 1:nb){
uim = sample # 選擇隨機(jī)指數(shù)
bt[i] = lm
proc.time() - ptm # 在我這邊大約80秒
您當(dāng)前的置信區(qū)間怎么樣?
真的有關(guān)系嗎?也許這不值得麻煩。作為一個(gè)例子,我使用了已知有厚尾的股票收益,這意味著遠(yuǎn)離中心的更多觀察樣本??纯聪聢D:

那就是摩根士丹利?

?與市場。估計(jì)值以 1.87 為中心。黑色垂直線是“l(fā)m”函數(shù)報(bào)告的 (95%) 置信區(qū)間,藍(lán)色垂直線是等效的非參數(shù)置信區(qū)間,淺藍(lán)色曲線是正態(tài)密度。
注意到這個(gè)區(qū)間與非參數(shù)bootstrap法有多大區(qū)別,在這種情況下,非參數(shù)bootstrap 法更準(zhǔn)確。例如,可能參數(shù)實(shí)際上是2,你可以看到軟件的輸出拒絕了這種可能性,因?yàn)樗俣苏龖B(tài)性,然而引導(dǎo)法的置信區(qū)間確實(shí)涵蓋了2這個(gè)值。所以,一個(gè)投資者如果認(rèn)為 "在我的投資組合中,所有的貝塔值都小于2,CI值為95%",那么他就錯(cuò)誤地認(rèn)為摩根斯坦利是這樣的。這個(gè)檢查需要大約80秒,所以我在把它插入雙 "for "循環(huán)之前會(huì)三思而后行。然而,如果你是社會(huì)科學(xué)家,可以用這種穩(wěn)健的分析來增強(qiáng)你的標(biāo)準(zhǔn)(正常)輸出。
總結(jié)
在這里你可以看到,當(dāng)你使用bootstrap的置信區(qū)間時(shí),當(dāng)正態(tài)分布假設(shè)有效時(shí),情況并沒有那么糟壞。我創(chuàng)建了一個(gè)假的正態(tài)分布,使用與報(bào)告相同的中心和標(biāo)準(zhǔn)差,并做了完全相同的分析。
?

同樣,我使用與 "lm "報(bào)告相同的中心和標(biāo)準(zhǔn)差從正態(tài)分布中進(jìn)行了模擬,你可以看到區(qū)間是相互接近的,這就總結(jié)了這篇文章,使用參數(shù)化的置信區(qū)間,從假設(shè)的正態(tài)分布在某種意義上是次優(yōu)的,因?yàn)榧词故钦龖B(tài),你也不會(huì)損失很多。
謝謝閱讀。
?
###################################################
### 現(xiàn)在我實(shí)際上是從正態(tài)分布中生成
###################################################
rnorm
lm2 = lm
for (i in 1:b){
uni = sample
fe[i] = lm
}
ftha <- boe
h2 = hist
xline
xfit<-seq
yfit<-dnorm
lines

最受歡迎的見解
1.R語言多元Logistic邏輯回歸 應(yīng)用案例
2.面板平滑轉(zhuǎn)移回歸(PSTR)分析案例實(shí)現(xiàn)
3.matlab中的偏最小二乘回歸(PLSR)和主成分回歸(PCR)
4.R語言泊松Poisson回歸模型分析案例
5.R語言混合效應(yīng)邏輯回歸Logistic模型分析肺癌
6.r語言中對LASSO回歸,Ridge嶺回歸和Elastic Net模型實(shí)現(xiàn)
7.R語言邏輯回歸、Naive Bayes貝葉斯、決策樹、隨機(jī)森林算法預(yù)測心臟病
8.python用線性回歸預(yù)測股票價(jià)格
9.R語言用邏輯回歸、決策樹和隨機(jī)森林對信貸數(shù)據(jù)集進(jìn)行分類預(yù)測