2013-04-28 105 views
4

我對從數據集中提取的1000多個樣本進行多次邏輯迴歸運行。我的問題是展示我的結果的最佳方式是什麼?我如何繪製適合度和預測曲線的輸出?爲邏輯迴歸繪製多個擬合和預測

這是我正在做的一個例子,使用R的棒球數據集。例如,我想擬合和預測模型5次。每次我拿出一個樣本(用於預測)並使用另一個樣本進行擬合。

library(corrgram) 
data(baseball) 

#Exclude rows with NA values 
dataset=baseball[complete.cases(baseball),] 

#Create vector replacing the Leage (A our N) by 1 or 0. 
PA=rep(0,dim(dataset)[1]) 
PA[which(dataset[,2]=="A")]=1 

#Model the player be league A in function of the Hits,Runs,Errors and Salary 
fit_glm_list=list() 
prd_glm_list=list() 
for (k in 1:5){ 
    sp=sample(seq(1:length(PA)),30,replace=FALSE) 
    fit_glm<-glm(PA[sp[1:15]]~baseball$Hits[sp[1:15]]+baseball$Runs[sp[1:15]]+baseball$Errors[sp[1:15]]+baseball$Salary[sp[1:15]])  
    prd_glm<-predict(fit_glm,baseball[sp[16:30],c(6,8,20,21)]) 
    fit_glm_list[[k]]=fit_glm;prd_glm_list[[k]]=fit_glm 
} 
+0

哪裏是「棒球「數據集? – 2013-04-28 16:39:19

+0

@ A.R你是什麼意思的「顯示我的結果」?繪製預測的分佈?繪製殘差?繪製其他迴歸診斷?還有別的嗎? – pteetor 2013-04-28 16:50:25

+0

@pteetor繪製預測和殘差的分佈 – 2013-04-28 16:55:43

回答

1

這裏有很多問題。

  • PAbaseball$League一個子集,但是該模型構造上的列從整個baseball數據幀,即它們不匹配。
  • PA在使用默認系列(高斯)時被視爲連續響應,應將其更改爲因子和二項系列。
  • prd_glm_list[[k]]=fit_glm應該可能是prd_glm_list[[k]]=prd_glm
  • 您必須保存預測的真實類標籤,否則您無法比較。

我對你的代碼看起來像這樣。

library(corrgram) 
data(baseball) 

dataset <- baseball[complete.cases(baseball),] 

fits <- preds <- truths <- vector("list", 5) 
for (k in 1:5){ 
    sp <- sample(nrow(dataset), 30, replace=FALSE) 
    fits[[k]] <- glm(League ~ Hits + Runs + Errors + Salary, 
        family="binomial", data=dataset[sp[1:15],])  
    preds[[k]] <- predict(fits[[k]], dataset[sp[16:30],], type="response") 
    truths[[k]] <- dataset$League[sp[1:15]] 
} 
plot(unlist(truths), unlist(preds)) 

模型表現不佳,但至少代碼運行沒有問題。在圖中的y軸示出了估計概率,這些實施例屬於聯賽N,理想左框應接近0和右接近1

enter image description here