Заранее спасибо за помощь.
Данные доступны здесь .
Я пытаюсь предсказать из средней линейной модели. Изначально я получаю ошибку от 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