【问题标题】:How to find the fitted value in cv.glmnet or glmnet function in R?如何在 R 中的 cv.glmnet 或 glmnet 函数中找到拟合值?
【发布时间】:2019-07-28 18:13:34
【问题描述】:

假设我生成了以下数据集并使用R 中的cv.glmnet 函数拟合了模型。

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 模型。

非常感谢。

【问题讨论】:

  • Error: object 'cv.glmnet' not found
  • @42- 它在包下library(glmnet)
  • 来吧,接受提示。 Edit 问题正文中的代码。

标签: r glmnet lasso-regression


【解决方案1】:

从 pkg glmnet 请求 cv.glmnet-object 的 fitted 值是错误的。交叉验证是在具有不同结构的相对广泛的模型上进行的,因此它并没有真正做任何相当于 glm 的事情,后者只有一个模型和一个结果。 cv.glmnet 的目标是为您提供结果,让您根据数据的性质选择 glmnet 过程的最佳复杂程度。这是选择 glmnet 模型的一步,即选择 lambda。您可以使用它来获得预测:

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

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

【讨论】:

    猜你喜欢
    • 2022-10-13
    • 2015-06-01
    • 2020-10-18
    • 2019-05-22
    • 2021-10-16
    • 2017-12-25
    • 2015-11-18
    • 2015-12-24
    • 2022-01-23
    相关资源
    最近更新 更多