假设我已生成以下数据集,并使用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
模型。
非常感谢您。
答案 0 :(得分:0)
从pkg fitted
请求cv.glmnet
对象的glmnet
值是错误的。交叉验证是在结构变化的相对广泛的各种模型上进行的,因此它实际上并没有做等效于glm
的任何事情,后者具有单个模型和单个结果。 cv.glmnet
的目标是为您提供结果,让您根据数据的性质选择glmnet
过程的最佳复杂度。这是选择glmnet模型(即选择lambda)的一步。您可以使用它来进行预测:
predict( glmnet(x,y), s=cv_fit$lambda.min )
我认为所提供的示例对于支持进一步的讨论不是特别有用,因为它看起来“退化”且具有最低程度的复杂性。