2013-04-28 132 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