如何在R中找到CV.GLMNET或GLMNET函数中的拟合值



假设我已经生成了以下数据集并使用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型号。

非常感谢。

询问来自pkg glmnetcv.glmnet -object的 fitted值是错误的。交叉验证是在具有不同结构的相对多种模型上进行的,因此它实际上并没有做任何等同于glm的任何模型,该模型具有单个模型和一个结果。cv.glmnet的目标是为您提供鉴于数据性质的glmnet过程的最佳复杂性水平。这是选择GLMNET模型的一步,即选择Lambda。您可以使用它来获得一个预测:

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

我不认为提供的示例对于支持进一步的讨论特别有用,因为它似乎以最小的复杂程度"退化"。

最新更新