2013-12-13 27 views
0

我有一個10000個消費者貸款的數據集,我創建了一個模型來預測一個人是否會默認,並且響應變量爲1(默認)或0不默認)。我使用step()來找到一個訓練集(8000分)的glm模型,但我的任務是確定模型在預測測試集(2000分)時的有效性。當我嘗試獲得錯誤率時,R正在吐出大量數字:在R中發現錯誤分類貸款違約

我的reg有Y響應和6個變量。這是我想如何得到錯誤率:

preddreg <- predict(dreg, newdata=test, type="response") 
predfull <- predict(full, newdata=test, type="response") 
errorreg <- (test,1) - (preddreg = 1) 
errorfull <- (test,1) - (predfull = 1) 

mean(abs(errorreg)) 
##I keep getting 37, it should be a small decimal in the .20 range 
mean(abs(error full)) 
##I get the same huge number 

是否有更簡單的方法來檢查數據的測試集以獲取錯誤分類率?我拉我的頭髮,花了10個小時試圖得到合理的錯誤率。

回答

0

語法preddreg = 1在這裏沒有很多意義。如果您要分類錯誤率,則需要爲預測概率設置閾值。以下是如何獲得reg模型的錯誤分類,使用閾值0.5。在這裏,我假設default是你的結果變量的名稱(我不能從閱讀您的文章告訴名稱):

preddreg <- predict(dreg, newdata=test, type="response") 

# Rows are correct outcome, columns are prediction with threshold 0.5 
tab <- table(test$default, preddreg >= 0.5) 
tab # Display the confusion matrix 
accuracy.reg <- sum(diag(tab))/sum(tab) 
accuracy.reg # Output accuracy 
+0

是固定的,我認爲它必須= 1,因爲這是對價值「default」 – user3096418

+0

由於您使用的是type =「response」,因此您的模型報告的是概率,因此預測的概率將完全等於1的可能性非常小。即使您正在檢查的東西恰好等於1,您也需要使用「preddreg == 1「而不是」preddreg = 1「;前者比較平等,後者指定值。 – josliber