线性回归模型函数没有返回值
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 可以抓住它的地方。
我正在做作业。我已经进行了诚实的尝试,所以我想我会伸出援手寻求帮助。
我必须 运行 启动程序 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 可以抓住它的地方。