在R中手动引导线性回归

时间:2017-11-30 15:09:49

标签: r regression lm statistics-bootstrap

|大家好 我正在向你寻求帮助,因为我被引导了......

任务是: 使用非参数引导程序计算CAPM beta估计值的bootstrap标准错误,该错误基于1000个引导程序复制和自举样本大小等于原始样本的大小。

如果我理解正确的话,我应该运行我的回归模型1000次,以估计β及其标准误差的不同估计值。但是,我无法将我的想法变成实际的R代码。

我的代码:

https://maps.googleapis.com/maps/api/geocode/json?latlng=41.970722%2C-88.420715&result_type=locality&key=YOUR_API_KEY

好的,我已经获得了' 08的AAPL beta的系数估计值。现在,我想在测试版上运行bootstrap,其标准错误1000次,样本大小与原始版本相同。

#1)fetch data from Yahoo
#AAPL prices
apple08 <- getSymbols('AAPL', auto.assign = FALSE, from = '2008-1-1', to = 
"2008-12-31")[,6]
#market proxy
rm08<-getSymbols('^ixic', auto.assign = FALSE, from = '2008-1-1', to = 
"2008-12-31")[,6]

#log returns of AAPL and market
logapple08<- na.omit(ROC(apple08)*100)
logrm08<-na.omit(ROC(rm08)*100)

#OLS for beta estimation
beta_AAPL_08<-summary(lm(logapple08~logrm08))$coefficients[2,1]

我考虑过使用

set.seed(666)
Boot_times=1000
mean.boot=rep(0,Boot_times)
for(i in 1:Boot_times){
# nonparametric bootstrap
data.boot=#Here I am stucked, I dunno what to put here
boot[i]=data.boot
}

但我猜这不对。我确实重新采样了回报,但是我假设它重新采样数据而不管理回报的日期,即它回归例如AAPL从25/1/08返回市场的回报发生在25 / 2/08。

帮助将不胜感激,谢谢!

亚当

2 个答案:

答案 0 :(得分:1)

为了引导用lm计算的线性回归,你可以按照下面的代码行做一些事情。

library(boot)

# This is the function 'statistic'    
boot_lm_coef <- function(data, index){
    coef(lm(logapple08 ~ logrm08, data = data[index, ]))[2]
}

df_boot <- data.frame(logapple08, logrm08)

set.seed(666)
Boot_times <- 1000
result <- boot(df_boot, boot_lm_coef, R = Boot_times)
mean(result$t)
#[1] 1.078191

注意:

  1. 我使用了coef,而不是summary(lm(.))[2, 1]这是过度杀伤
  2. data.frame的数据必须为lm才能生效。

答案 1 :(得分:0)

如果您(或其他人)不想手动执行此操作,还可以使用 model_parameters 中的 parameters 函数来获取自举置信区间和 p 值

library(parameters)

mod <- lm(formula = wt ~ mpg, data = mtcars)

model_parameters(mod)
#> Parameter   | Coefficient |   SE |         95% CI | t(30) |      p
#> ------------------------------------------------------------------
#> (Intercept) |        6.05 | 0.31 | [ 5.42,  6.68] | 19.59 | < .001
#> mpg         |       -0.14 | 0.01 | [-0.17, -0.11] | -9.56 | < .001

model_parameters(mod, bootstrap = TRUE, iterations = 100)
#> Parameter   | Coefficient |         95% CI |     p
#> --------------------------------------------------
#> (Intercept) |        5.99 | [ 5.36,  6.68] | 0.010
#> mpg         |       -0.14 | [-0.17, -0.11] | 0.010

reprex package (v1.0.0) 于 2021 年 3 月 9 日创建