模型报告的测量值与我计算的手动误差不符。我正在使用 R 包
cv.glmnet
中的 glmnet
函数。我相信当我将函数变量keep
设置为True
时,交叉验证拟合将保留在fit.preval
中。但是,我使用 fit.preval
手动计算均方误差和最小 cv 误差的指数与模型摘要所说的不匹配。我的手工计算总是少很多。
library(glmnet)
x <- data.frame(runif(100),runif(100),runif(100),runif(100),runif(100))
y <- data.frame(runif(100),runif(100),runif(100))
cvfit <- cv.glmnet(x = as.matrix(x), y = as.matrix(y), keep = T, family = "mgaussian")
mean(unlist((cvfit$fit.preval[,,cvfit$index["min",]] - y)^2))
## [1] 0.08803571
cvfit
## Call: cv.glmnet(x = as.matrix(x), y = as.matrix(y), keep = T, family = "mgaussian")
## Measure: Mean-Squared Error
## Lambda Index Measure SE Nonzero
## min 0.06003 1 0.2641 0.01158 1
## 1se 0.06003 1 0.2641 0.01158 1
我手动计算的均方误差与模型测量值不匹配。
对于“mgaussian”响应,cv 计算误差的均方 Frobenius 范数。 所以 errormin = (cvfit$fit.preval[,,cvfit$index["min",]] - y)^2 平均值(行总和(误差最小值))
将匹配报告的错误