【发布时间】: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。
根据我在网上阅读的内容,我有一些想法可以研究,但似乎没有任何东西适用于这种情况。
- 所有列都是数字
> 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)
【问题讨论】: