Я пытался установить прогнозирующую производительность (AUC ROC) для модели glmer. Когда я пытаюсь использовать функцию predict()
в наборе тестовых данных, выходом для этой функции является длина моего набора данных поезда.
folds = 10;
glmerperf=rep(0,folds); glmperf=glmerperf;
TB_Train.glmer.subset <- TB_Train.glmer %>% select(one_of(subset.vars), IDNO)
TB_Train.glmer.fs <- TB_Train.glmer.subset[,c(1:7, 22)]
TB_Train.glmer.ns <- TB_Train.glmer.subset[, 8:21]
TB_Train.glmer.cns <- TB_Train.glmer.ns %>% scale(center=TRUE, scale=TRUE) %>% cbind(TB_Train.glmer.fs)
foldsamples = caret::createFolds(TB_Train.glmer.cns$Case.Status, k = folds, list = TRUE, returnTrain = FALSE)
for (n in 1:folds)
{
testdata = TB_Train.glmer.cns[foldsamples[[n]],]
traindata = TB_Train.glmer.cns[-foldsamples[[n]],]
GLMER <- lme4::glmer(Case.Status ~ . + (1 | IDNO), data = traindata, family="binomial", control=glmerControl(optimizer="bobyqa", optCtrl=list(maxfun=1000000)))
glmer.probs <- predict(GLMER, newdata=testdata$Non.TB.Case, type="response")
glmer.ROC <- roc(predictor=glmer.probs, response=testdata$Case.Status, levels=rev(levels(testdata$Case.Status)))
glmerperf[n] <- glmer.ROC$auc
}
prob <- predict(GLMER, newdata=TB_Test.glmer$Non.TB.Case, type="response", re.form=~(1|IDNO))
print(sprintf('Mean AUC ROC of model on test set for GLMER %f', mean(glmerperf)))
Оба объекта prob
и glmer.probs
имеют длину объекта traindata
, несмотря на указание аргумента newdata
. Раньше я замечал проблемы с функцией прогнозирования, но ни одна из них не была столь специфичной, как эта.
Кроме того, когда модель запускается, я получаю несколько ошибок о необходимости масштабирования моих данных (которые у меня уже есть) и о том, что модель не может сходиться. Любые идеи о том, как это исправить? Я уже увеличил количество итераций и выбрал новый оптимизатор.
newdata
должен быть фреймом данных, а не вектором, поэтому может помочь использование чего-то вродеtestdata[, "Non.TB.Case", drop=FALSE]
вместо существующего аргументаnewdata
. - person Marius   schedule 20.04.2017testdata$Case.Status
, но когда я запускаю такой кодprob <- predict(GLMER, newdata=TB_Test.glmer[, "Case.Status", drop=FALSE], type="response", re.form=~(1|IDNO))
, я получаю следующую ошибкуError in terms.formula(formula(x, fixed.only = TRUE)) : '.' in formula and no 'data' argument
. Если я попытаюсь манипулировать, как вы упомянули, я получаю эту ошибку _4 _ [. Data.frame(TB_Test.glmer, , "Non.TB.Case", drop = FALSE) : undefined columns selected
- person CAD   schedule 20.04.2017