尽管我检查了每一列并确认每列> 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
。
根据我在网上阅读的内容,我对要研究的事情有一些想法,但似乎没有什么适用于这种情况。
> sum(sapply(reg_data_lowCorr, is.factor))
[1] 0
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)
答案 0 :(得分:0)
我不认为这是一列全为NA的列,我认为这意味着不存在没有缺失数据的行。在下面的示例中,请注意b
和c
都具有不丢失的条目,但是没有一行是完整的。
> 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
是模型中的变量。看看是否有人不缺少任何值。