【问题标题】:Error in lm.wfit(x, y, w, offset = offset, singular.ok = singular.ok, : 0 (non-NA) cases. But all columns contain at least one non-NA valuelm.wfit(x, y, w, offset = offset,singular.ok =singular.ok, : 0 (non-NA) case 中的错误。但所有列都至少包含一个非 NA 值
【发布时间】:2019-06-05 17:03:23
【问题描述】:

尽管我检查了每一列并确认每一列都为 > 10 个非 NA 值,但线性回归返回了一个错误,指出有一列具有 0 个非 NA 值。如有任何有关诊断此错误的方法的建议,我将不胜感激。

> reg_CTR <- lm(formula = modelFormula_CTR, data = reg_data_lowCorr, weights = dailyImps, na.action = na.exclude)
Error in lm.wfit(x, y, w, offset = offset, singular.ok = singular.ok,  : 
  0 (non-NA) cases
> min(apply(reg_data_lowCorr, 2, function(x) sum(!is.na(x))))
[1] 11
> sum(!is.na(c(NA,NA,NA)))
[1] 0
> sum(!is.na(c(NA,NA,1)))
[1] 1
> reg_CTR <- lm(formula = modelFormula_CTR, data = reg_data_lowCorr, weights = dailyImps, na.action = na.omit)
Error in lm.wfit(x, y, w, offset = offset, singular.ok = singular.ok,  : 
  0 (non-NA) cases

数据有 NA 值,但这些值是必需的,因此使用 na.exclude

根据我在网上阅读的内容,我有一些想法可以研究,但似乎没有任何东西适用于这种情况。

  1. 所有列都是数字
> sum(sapply(reg_data_lowCorr, is.factor))
[1] 0
  1. 模型公式是动态生成的,因此不存在拼写错误的风险
selectedVars <- c(names(reg_data_lowCorr[,3:ncol(reg_data_lowCorr)]))
modelFormula_CTR <- as.formula(paste0('CTR000', " ~ ", paste(selectedVars, collapse = "+")))
reg_CTR <- lm(formula = modelFormula_CTR, data = reg_data_lowCorr, weights = dailyImps, na.action = na.exclude)

【问题讨论】:

    标签: r na lm


    【解决方案1】:

    我不相信它是说你有一个全是 NA 的列,我相信这意味着没有没有缺失数据的行。在下面的示例中,请注意 bc 都有非缺失条目,但没有完整的行。

    > a <- 1:4
    > b <- c(1, 2, NA, NA)
    > c <- c(NA, NA, 1, 2)
    > lm(a ~ b + c, na.action = na.exclude)
    Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
      0 (non-NA) cases
    

    您可以通过运行类似table(rowSums(is.na(data[vars]))) 的方法进行检查,其中data 是您的数据集,vars 是模型中的变量。看看是否有人没有遗漏任何值。

    【讨论】:

      猜你喜欢
      • 2014-12-12
      • 1970-01-01
      • 1970-01-01
      • 2013-04-20
      • 2020-09-09
      • 2018-09-26
      • 2020-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多