R:如何提取1000个线性回归的截距并将它们放在一个数据集中?

时间:2017-11-10 03:01:24

标签: r

我做了一个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

2 个答案:

答案 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, ]