我做了一个bootstrap(线性回归重复1000次替换)并得到1000个截距(alpha)和1000个斜率(beta),
msft.boot.sample <- list()
for (i in 1:1000) {
msft.boot.sample[[i]] <- sample(y_msft,size = 132, replace = TRUE)
}
x.boot.sample <- list()
for (i in 1:1000) {
x.boot.sample[[i]] <- sample(x, size = 132, replace = TRUE)
}
n <- 1000
my_lms <- lapply(1:n, function(i) lm(msft.boot.sample[[i]] ~ x.boot.sample[[i]]))
sapply(my_lms, coef)
summaries <- lapply(my_lms, summary)
然后,
coef(my_lms[[1]])["(Intercept)"]
# (Intercept)
# -0.0366332
coef(my_lms[[2]])["(Intercept)"]
# (Intercept)
# -0.01598145
coef(my_lms[[3]])["(Intercept)"]
# (Intercept)
# -0.02526318
我可以一次获得一个截距和一个斜率,但是如何在一段时间内获得所有alpha(或beta)并将它们放入数据集中? 我使用了类似的代码,但仍然只有一个alpha值。
for (i in 1:1000) {
alpha.1000 <- as.numeric(coef(my_lms[[i]])["(Intercept)"])
}
alpha.1000
# [1] -0.03495652
答案 0 :(得分:0)
你总是覆盖alpha.1000值。使用此:
alpha.1000=numeric(1000)
for(i in 1:1000){
alpha.1000[i]<-as.numeric(coef(my_lms[[i]])["(Intercept)"])
}
答案 1 :(得分:0)
如果您的回归都具有相同的参数,那么
coef_list = sapply(my_lms, coef)
将为您提供一个矩阵,其中每个模型都有一列,每个系数都有一行。截距矢量只是顶行coef_list[1, ]
。