线性回归模型函数没有返回值

No Values Returned in Linear Regression Model Function

我正在做作业。我已经进行了诚实的尝试,所以我想我会伸出援手寻求帮助。

我必须 运行 启动程序 10 次,样本大小为 10,并编写一个函数来估计每组输入的线性回归模型。这不是完整的问题,但是,这是我坚持的部分。如果你想要完整的问题,请告诉我。

这是我迄今为止尝试过的代码。 x 和 y 数据被视为成对 (x_i, y_i):

rm(list=ls())
x = c(1,1.5,2,3,4,4.5,5,5.5,6,6.5,7,8,9,10,11,12,13,14,15)
y = c(6.3,11.1,20,24,26.1,30,33.8,34.0,38.1,39.9,42,46.1,53.1,52,52.5,48,42.8,27.8,21.9)
n=length(y)

myfunc <- function(data,index){
  # Calculate and return the estimate of linear regression model
  lmout <- lm(data)
  return(lmout$estimate)
}

# call boot
library(boot)

bout = NULL
# Calling boot 10 times...
for(i in 1:10){
  #... with a bootstrap distribution of size 10
  bout = boot(data = y ~ x, statistic = myfunc, R = 10)
}
print(bout$t)

我的问题是,当我 print(bout$t) 时,它显示一个没有值的列:

 [1,]
 [2,]
 [3,]
 [4,]
 [5,]
 [6,]
 [7,]
 [8,]
 [9,]
[10,]

myfunc (print(lmout)) returns 内添加打印语句输出 100 次:

Coefficients:
(Intercept)            x  
     21.321        1.771  

我假设我生成 bootstrap 输入的方式出了问题,或者我 return 输入时出了问题。

这似乎更像是一个合理的答案:

library(boot)
data <- data.frame(
  x = c(1,1.5,2,3,4,4.5,5,5.5,6,6.5,7,8,9,10,11,12,13,14,15),
  y = c(6.3,11.1,20,24,26.1,30,33.8,34.0,38.1,39.9,42,46.1,53.1,52,52.5,48,42.8,27.8,21.9))

myfunc <- function(data, index){
  # Calculate and return the estimate of linear regression model
  lmout <- lm(y ~ x, data = data[index,])
  coef(lmout)
}
myfunc(data.frame(x,y)) # always run this once to see if you function makes sense

boot(data = data.frame(x,y), statistic = myfunc,
     R = 250)

R = 表示引导程序应该发生多少次。 index 参数决定了新的“自举”采样。数据必须在 data.frame 中,否则它不会放在 boot-package 可以抓住它的地方。