R cv.glmnet error: "need at least two non-NA values to interpolate"

R cv.glmnet error: "need at least two non-NA values to interpolate"

当 运行 cv.glmnet 函数时,我收到无法追踪的错误。 研究仅提示我在搜索 lambda 时抛出错误的 approx() 函数,但我对 glmnet 不够熟悉,无法弄清楚它是如何连接的。

错误是:“需要至少两个非 NA 值进行插值”

虽然解决方案看起来很明显,但我使用的是模拟数据,因此其中肯定没有 NA。我仔细检查了多次。我还尝试删除了带有常量变量的列,但也无济于事。

由于数据的复杂性,可重现的示例有点混乱(而且也不是最小的,因为错误不会在小示例数据中发生)但请看下面:

pacman::p_load(glmnet,RCurl)

url <- getURL('https://raw.githubusercontent.com/oliverkostorz/MC-Simulation-Ensemble-Methods-Heterogeneous-Treatment-Effects/master/example.csv')
data <- read.csv(text = url)

x <- data[,3:ncol(data)]
y <- data[,2]

EN_fit <- cv.glmnet(x, y, type.measure = 'mse', alpha = .5)

希望有人能帮忙!

最好的, 奥利弗

9.352584e+229 引起了问题。这是一个很大的数字。

big_index <- y > 1e120
EN_fit <- cv.glmnet(as.matrix(x[!big_index, ]), y[!big_index], 
    type.measure = 'mse', alpha = .5)
EN_fit
# 
# Call:  cv.glmnet(x = as.matrix(x[!big_index, ]), y = y[!big_index],
#     type.measure = "mse", alpha = 0.5) 
# 
# Measure: Mean-Squared Error 
# 
#         Lambda Index    Measure  SE Nonzero
# min 3.864e+113    84 8.533e+229 Inf      10
# 1se 1.836e+115     1 8.644e+229 Inf       0