2017-04-20 160 views
0

我一直在試圖建立glmer模型的預測性能(AUC ROC)。當我嘗試在測試數據集上使用predict()函數時,此函數的輸出是我列車數據集的長度。如何在lme4 :: 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))) 

兩者probglmer.probs對象是traindata對象的長度,儘管指定newdata參數。過去我已經注意到預測功能的問題,但沒有一個像這個那樣具體。另外,當模型運行時,我會遇到一些關於需要調整我的數據(我已經擁有)和模型無法收斂的錯誤。有想法該怎麼解決這個嗎?我已經提到了迭代並選擇了一個新的優化器。

+1

'newdata'應該是一個數據框而不是一個向量,所以使用像'testdata [,'Non.TB.Case「,drop = FALSE]'而不是現有的'newdata'參數可能會有所幫助。 – Marius

+0

不幸的是,這並沒有解決問題。我知道我應該從一個數據框中進行預測,並且希望對變量'testdata $ Case.Status'進行預測,但是當我像這樣運行代碼時,會發現'prob < - predict(GLMER,newdata = TB_Test.glmer [,'Case。狀態「,drop = FALSE],type =」response「,re.form =〜(1 | IDNO))'我得到了以下錯誤:terms.formula(formula(x,fixed.only = TRUE) ''在公式中,沒有'數據'參數。如果我嘗試按照你提到的操作,我得到這個錯誤'[.data.frame'(TB_Test.glmer,,「Non.TB.Case」,drop = FALSE)中的錯誤:未定義列選擇' – CAD

+0

錯誤指的是我使用「。」表示所有變量? – CAD

回答

0

找出該錯誤是由於使用「。」而引起的。指定模型的所有預測變量的快捷方式。

相關問題