Построение перекрестной проверки MSE регрессии хребта

#r #ggplot2 #plot #regression #glmnet

#r #ggplot2 #построение #регрессия #glmnet

Вопрос:

прежде всего, я должен извиниться за мой плохой английский. Во-вторых, цель этого поста состоит в том, что я хочу воспроизвести график MSE регрессии хребта с помощью ggplot2 вместо функции plot , которая включена в R.

Объект cv.out определяется следующим выражением: cv.out <- cv.glmnet(x_var[train,], y_var[train], alpha = 0) . И когда я печатаю этот объект, это элементы cv.out

Лямбда — выражение Измерять SE Ненулевое значение
мин 439.8 32554969 1044541 5
lse 1343.1 33586547 1068662 5

Это сюжет с plot(cv.out) :

Изображение сюжета

Дело в том, что я хочу сделать тот же сюжет, но более проработанный, ggplot и я не знаю, какая эстетика заложена в функцию. Это элементы cv.out, когда я вызываю объект следующим образом: cv.out$ :

  • лямбда — выражение
  • cmv
  • cvsd
  • cvup
  • cvlo
  • nzero
  • вызов
  • Имя
  • lambda.min
  • lambda.lse

Наконец, спасибо за вашу помощь. Я действительно ценю это. 🙂

Ответ №1:

Использование примера набора данных:

 X = as.matrix(mtcars[,-1])
y = as.matrix(mtcars[,1])
cv.out = cv.glmnet(X,y,alpha=0)
plot(cv.out)
 

введите описание изображения здесь

Вам просто нужно извлечь значения и поместить в data.frame и построить график с использованием geom_point() и geom_errorbar() :

 df = with(cv.out,
     data.frame(lambda = lambda,MSE = cvm,MSEhi=cvup,MSElow=cvlo))

ggplot(df,aes(x=lambda,y=MSE))   
geom_point(col="#f05454")   
scale_x_log10("log(lambda)")   
geom_errorbar(aes(ymin = MSElow,ymax=MSEhi),col="#30475e")   
geom_vline(xintercept=c(cv.out$lambda.1se,cv.out$lambda.min),
linetype="dashed") 
theme_bw()
 

введите описание изображения здесь