【问题标题】:if (any(const_vars)) missing value where TRUE/FALSE needed error while running Lasso in Rif (any(const_vars)) 在 R 中运行 Lasso 时缺少 TRUE/FALSE 需要错误的值
【发布时间】:2021-12-29 02:58:16
【问题描述】:

当我尝试对我的第 51 个响应变量和其他 50 个变量运行套索回归时,我收到以下错误消息:

lasso_now=cv.glmnet(x=as.matrix(scaledData[,-51]),y=as.matrix(scaledData[,51]),alpha=1,nfolds = 5,type.measure="mse ",family = 二项式(link = "logit"))

  • Error in if (any(const_vars)) { : missing value where TRUE/FALSE needed
    

我的响应变量是 0 或 1,所以我使用了逻辑回归。我的 x 有分类变量或数值变量。

有没有人知道为什么会发生这种情况,或者有什么方法可以验证问题的数据吗?提前致谢!

【问题讨论】:

    标签: r logistic-regression glmnet lasso-regression


    【解决方案1】:

    检查您是否有 NA 值,您会收到错误,因为 glmnet 会检查您的任何列的标准偏差为零的位置。例如,我们在以下数据集中将第四列的第一个条目设置为 NA:

    library(glmnet)
    
    scaledData = data.frame(v1 = rnorm(100),v2=rnorm(100),
    v3 = rbinom(100,1,0.5),v4 = rbinom(100,1,0.7))
    
    scaledData[1,4] = NA
    

    您可以查看:

    glmnet:::weighted_mean_sd(as.matrix(scaledData[,-3]))
    $mean
            v1         v2         v4 
    0.03979154 0.14547529         NA 
    
    $sd
           v1        v2        v4 
    0.8544635 1.0815797        NA 
    

    运行时出现相同的错误:

    lasso_now=cv.glmnet(x=as.matrix(scaledData[,-3]),
    y=as.matrix(scaledData[,3]),
    alpha=1,nfolds = 5,type.measure="mse",
    family = binomial(link = "logit"))
    
    Error in if (any(const_vars)) { : missing value where TRUE/FALSE needed
    

    您可以删除的一种方法如下:

    scaledData = scaledData[complete.cases(scaledData),]
    

    并运行它,注意二项式你不应该使用“mse”,你可以使用“deviance”、“class”或“auc”。

    lasso_now=cv.glmnet(x=as.matrix(scaledData[,-3]),
    y=as.matrix(scaledData[,3]),
    alpha=1,nfolds = 5,type.measure="deviance",
    family = binomial(link = "logit"))
    
    lasso_now
    
    Call:  cv.glmnet(x = as.matrix(scaledData[, -3]), 
    y = as.matrix(scaledData[,3]), 
    type.measure = "deviance", nfolds = 5, alpha = 1, 
    family = binomial(link = "logit")) 
    
    Measure: GLM Deviance 
    
         Lambda Index Measure      SE Nonzero
    min 0.07643     1   1.427 0.01681       0
    1se 0.07643     1   1.427 0.01681       0
    

    【讨论】:

    • 非常感谢,尤其是验证部分!
    • 不客气 :)
    猜你喜欢
    • 2016-07-01
    • 2023-03-12
    • 2011-11-13
    • 2020-07-29
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    相关资源
    最近更新 更多