В результате линейной регрессии возвращается ошибка, говорящая о наличии столбца с 0 значениями, отличными от NA, несмотря на то, что я проверяю каждый столбец и подтверждаю, что в каждом столбце> 10 значений, отличных от 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)