[英]How to loop glm
我想循环 ridge & lasso 100 次以获得 100 mse 和 mspe。 我的最终目标是绘制一个箱线图来比较这 100 个值。 我做了一个回归模型,但我不知道如何重复这个模型。 我怎么能得到值和箱线图?
您可以尝试以下操作:
ntimes <- 100
res <- replicate(ntimes, {
cv.rr <- cv.glmnet(x=as.matrix(train[,-1]),y=as.numeric(train[,1]),alpha=0,nfolds=10,nlambda=100, intercept=FALSE)
lambda.rr=cv.rr$lambda.min
mse.rr <- mean((coef(cv.rr)[-1] - betas.true)^2)
yhat.rr <- predict(cv.rr,s="lambda.min",newx=as.matrix(test[,-1]))
mspe.rr <- mean((test[,1]-yhat.rr)^2)
list(mse=mse.rr, mspe=mspe.rr)
})
library(tidyverse)
res_df <- as.data.frame(apply(res, 1, function(x) unlist(x)))
names(res_df) <- c('mse', 'mspe')
res_df %>% gather(key='metric', value='value') %>% ggplot(aes(value, fill=metric)) + geom_boxplot()
获得如下所示的可视化:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.