Как найти подходящее значение в функции cv.glmnet или glmnet в R? - PullRequest
1 голос
/ 07 марта 2019

Предположим, я сгенерировал следующий набор данных и установил модель, используя функцию cv.glmnet в R.

library(glmnet)
means <- c(-1, 1.3, 0.6, 2, 1.5, -0.7, 2.5)
size <- c(50, 50, 100, 200, 350, 50, 200)


t = list()
  for (i in 1:length(means)) {
   t[[i]] <- c(rnorm(size[i],mean = means[i],sd = 0.5))
  }
y <- c(unlist(t))
plot(y,type = 'l')

lower_tri <- function(i){ 
  a <- matrix(1,i,i)
  a[upper.tri(a)] <- 0
  return(a)
}
x <- lower_tri(sum(size))[,2:sum(size)]

cv_fit <- cv.glmnet(x,y)

Как найти установленное значение, используя cv_fit1?Я использовал fitted() функцию для lm модели.

Большое спасибо.

1 Ответ

0 голосов
/ 07 марта 2019

Запрос значения fitted объекта cv.glmnet из pkg glmnet не соответствует действительности. Перекрестная проверка выполняется на относительно широком спектре моделей с различными структурами, поэтому на самом деле она не делает ничего эквивалентного glm, который имеет одну модель и один результат. Цель cv.glmnet - дать вам результаты, которые позволят вам выбрать оптимальный уровень сложности процедуры glmnet с учетом характера ваших данных. Это шаг на пути выбора модели glmnet, то есть выбора лямбды. Вы можете использовать это, чтобы получить прогноз:

 predict( glmnet(x,y), s=cv_fit$lambda.min )  

Я не считаю предлагаемый пример особенно полезным для поддержки дальнейшего обсуждения, поскольку он выглядит довольно "вырожденным" с минимальным уровнем сложности.

...