Что вы ожидаете получить с помощью выборки из линейного объекта модели?
sample(model[i], size=300)
Мы хотим отбирать данные и модифицировать модель. I.e., выполнив 2000 раз, мы примеряем данные в 2000 раз и подходим к 2000 регрессионным моделям.
Отбор проб из данных - это ключ. Это было бы многообещающим способом, используя аргумент subset
в lm
. Для любых задач, требующих многократного повторения процесса, было бы удобно сначала написать функцию, выполняющую такой эксперимент один раз.
f <- function() {
fit <- lm(price ~ mileage, data = dat, subset = sample(nrow(dat), 300))
coef(fit)
}
Теперь мы используем replicate
повторить это в 2000 раз, чтобы получить матрицу:
z <- t(replicate(2000, f()))
replicate
основан на sapply
, который всегда делает cbind()
вы получите в конечном итоге с плоской матрицей; для лучшей удобочитаемости я перенес его с помощью t()
, чтобы получить длинную матрицу.
В дальнейшем я использую R встроенный в наборе данных cars
в качестве примера. Этот набор данных имеет 50 наблюдений, поэтому мы не можем отбирать 300 из них без замены. Я попробую 30 вместо этого.
f <- function() {
fit <- lm(dist ~ speed, data = cars, subset = sample(nrow(cars), 30))
coef(fit)
}
Выполнение одного действия дает коэффициент. Часть set.seed
предназначена только для воспроизводимости.
set.seed(0); f()
#(Intercept) speed
# -22.69112 4.18617
Реплицируя это, скажем, в 50 раз, мы получаем матрицу:
set.seed(0); z <- t(replicate(50, f()))
head(z) ## show first few rows
# (Intercept) speed
#[1,] -22.69112 4.186170
#[2,] -21.31613 4.317624
#[3,] -12.98734 3.454305
#[4,] -22.59920 4.274417
#[5,] -22.53475 4.584875
#[6,] -18.88185 4.104758
Распределение коэффициентов может быть грубо оценена гистограмме:
par(mfrow = c(1,2))
hist(z[,1], main = "intercept")
hist(z[,2], main = "slope")
Результат выглядит грубым, потому что я не делал много повторений.
Спасибо, это то, чего я пытался достичь. Цель состоит в том, чтобы наблюдать распределение коэффициентов, которые, если реплицироваться достаточно много раз, будут вести себя как нормальное распределение. – Senun