我有一个线性回归模型y = 50 + 10x + e,其中e是正态分布的。
每次我适合模型时,我都需要使用20对x和y值,其中x是seq(从= 0.5到= 10,乘以= 0.5)。
我的第一个任务是让模型适合100次。换句话说,生成100个样本,其中每个样本由10对x和y值组成。
我的第二个任务是保存100个模型拟合实例中的每一个的截距和斜率。
我的未成功代码如下:
linear_model <- c()
intercept <- c()
slope <- c()
for (i in 1:100) {
e <- rnorm(n = 20, mean = 0, sd = 4)
x <- seq(from = 0.5, to = 10, by = 0.5)
y <- 50 + 10 * x + e
linear_model[i] <- lm(formula = y ~ x)
intercept[i] <- summary(object = linear_model[i])$coefficients[1, 1]
slope[i] <- summary(object = linear_model[i])$coefficients[2, 1]
}
答案 0 :(得分:0)
您已为错误生成了10个随机变量,但生成了20个x,因此尺寸不匹配。 20个随机变量或10个x值都可以使用。
以下是我的试用 - 请注意,循环只进行了两次(次数= 2),而在你的例子中只有100次。
errs <- lapply(rep(x=20, times=2), rnorm, mean=0, sd=4)
x <- seq(0.5, 10, 0.5)
y <- lapply(errs, function(err) 50 * x + err)
myLM <- function(res) {
mod <- lm(formula = res ~ x)
out <- list(intercept = mod$coefficients[1],
slope = mod$coefficients[2])
out
}
fit <- sapply(y, myLM)
fit
[,1] [,2]
intercept 0.005351345 -2.362931
slope 50.13638 50.60856