如何在R中找到cv.glmnet或glmnet函数中的拟合值?

问题描述 投票:1回答:1

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

非常感谢你。

r glmnet lasso
1个回答
0
投票

从pkg fitted询问cv.glmnet对象的glmnet值是错误的。正在对具有不同结构的相对多种模型进行交叉验证,因此它实际上并没有做与glm相同的任何具有单个模型和单个结果的模型。 cv.glmnet的目标是为您提供结果,让您根据数据的性质选择glmnet程序的最佳复杂程度。这是选择glmnet模型的一个步骤,即选择lambda。您可以使用它来获得预测:

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

我没有看到提供的示例对支持进一步讨论特别有用,因为它看起来相当“简并”,复杂程度最低。

© www.soinside.com 2019 - 2024. All rights reserved.