Предикат () производит NAN - PullRequest
0 голосов
/ 17 февраля 2020

Заранее спасибо за помощь.

Данные доступны здесь .

Я пытаюсь предсказать из средней линейной модели. Изначально я получаю ошибку от predict(), предполагающую, что я предоставил модели числовую переменную c, а функцию predict() - логическую переменную. Когда я преобразовываю эту проблемную переменную в класс Numberri c, запускается функция predict(), но все создаваемые прогнозы являются NAN. Любая помощь будет принята с благодарностью.

Пожалуйста, смотрите код ниже.

library(lme4); library(stats)
test <- read.csv("FILE_LOCATION/test.csv", header = TRUE)

# Scale test$age and test$pred
test$sage  <- scale(test$age)
test$spred <- scale(test$pred)

# Make test$sage and test$spred numeric variables as scale function makes them class matrix
test$sage  <- as.numeric(test$sage)
test$spred <- as.numeric(test$spred)

# Run models
predict_1 <- glm(igm_pres ~  fRHDV2_arrive_cat + fseason + sage + rcv_pres + spred + fseason*fRHDV2_arrive_cat, 
                 data = test, family = binomial)

predict_2 <- glm(igm_pres ~  fRHDV2_arrive_cat + fseason + sage + rcv_pres + spred + fseason*fRHDV2_arrive_cat + sage*fRHDV2_arrive_cat, 
                 data = test, family = binomial)

predict_3 <- glm(igm_pres ~  fRHDV2_arrive_cat + fseason + sage + rcv_pres + spred + fseason*fRHDV2_arrive_cat + spred*fRHDV2_arrive_cat, 
                 data = test, family = binomial)

# Average models
predict_list_1 <- list(predict_1, predict_2, predict_3)
ave_predict <- model.avg(predict_list_1, rank = AICc)

# Create new data to predict from
a <- as.data.frame(c("Summer", "Autumn", "Winter", "Spring", "Summer", "Autumn", "Winter", "Spring"))
a$fRHDV2_arrive_cat <- c("Pre-RHDV2 arrival", "Pre-RHDV2 arrival", "Pre-RHDV2 arrival", "Pre-RHDV2 arrival", "Post-RHDV2 arrival", "Post-RHDV2 arrival", "Post-RHDV2 arrival", "Post-RHDV2 arrival")
a$sage <- c(0, 0, 0, 0, 0, 0, 0, 0)
a$rcv_pres <- c(NA, NA, NA, NA, NA, NA, NA, NA)
a$spred <- c(0, 0, 0, 0, 0, 0, 0, 0)
colnames(a) <- c("fseason", "fRHDV2_arrive_cat", "sage", "rcv_pres", "spred")

# Predict from average model 
predict(ave_predict, backtransform = TRUE, newdata = a, se.fit = TRUE, re.form = NA)

Я получаю сообщение об ошибке:

переменная 'rcv_pres' была установлена ​​с типом "цифра c", но тип " логическое "было предоставлено

# Convert test$rcv_pres to class numeric
a$rcv_pres <- as.numeric(a$rcv_pres)

# Predict from average model again
predict(ave_predict, backtransform = TRUE, newdata = a, se.fit = TRUE, re.form = NA)

Все прогнозы и стандартные ошибки - NAN

...