Мне нужно построить график ошибок прогнозирования по размеру модели с помощью перекрестной проверки после выполнения прямого выбора. Я разделил данные пополам и использовал пакет прыжков, чтобы найти лучшую модель для каждого размера. Однако я не могу понять, как получить необходимые ошибки прогнозирования. Код, который я пробовал, выдает ошибку:
1 линейная зависимость найденаОшибка в val_matrix [, names (coefi)]: нижний индекс вне границ
n = 400
p = 200
s = 10
X = matrix(rnorm(n*p),n,p)
X = scale(X, center = FALSE, scale = sqrt(colSums(X^2)))
beta = c(rep(5,10), rep(0,p-10))
Y = X%*%beta + rnorm(n)
tr <- sample(1:400, 200, replace = FALSE)
train <- X[tr,]
validation <- X[-tr,]
d <- regsubsets(Y[tr,]~train, nvmax=30, data = as.data.frame(train), method = c("forward"))
val_matrix <- model.matrix(Y[-tr,]~validation, data = as.data.frame(validation))
val_errors = rep(0,30)
for (i in 1:30){
coefi = coef(d, id=i)
predi = val_matrix[,names(coefi)]%*%coefi
val_errors[i] = Y[-tr,] - predi
}