例如:
install.packages("AER")
mylr=glm(CHOICE~PURPOSE+OVTRAIL+TCRAIL+CHANGES,family=binomial(link="logit"),data=traindata)
logodds<-predict(mylr)
traindata<-data.frame(traindata,logodds)
odds<-exp(traindata$logodds)
traindata<-data.frame(traindata,odds)
p=traindata$odds/(1+traindata$odds)
traindata<-data.frame(traindata,p)
Class<-numeric(length(traindata$p))
Class[traindata$p<0.5]<-0
Class[traindata$p>=0.5]<-1
traindata<-data.frame(traindata,Class)
confusionmatrix<-table(traindata$CHOICE,traindata$Class)
confusionmatrix
accuracy=(confusionmatrix[1,1]+confusionmatrix[2,2])/sum(confusionmatrix)
accuracy
现在希望CHOICE变量对purpose、ovtrail、tcrail、changes分别进行回归分析,本来希望通过for循环来做的。
如:
install.packages("AER")
for (i in 2:nrow(mydata))
{
traindata$variable<-traindata[,i]
mylr=glm(CHOICE~variable,family=binomial(link="logit"),data=traindata)
logodds<-predict(mylr)
traindata<-data.frame(traindata,logodds)
odds<-exp(traindata$logodds)
traindata<-data.frame(traindata,odds)
p=traindata$odds/(1+traindata$odds)
traindata<-data.frame(traindata,p)
Class<-numeric(length(traindata$p))
Class[traindata$p<0.5]<-0
Class[traindata$p>=0.5]<-1
traindata<-data.frame(traindata,Class)
confusionmatrix<-table(traindata$CHOICE,traindata$Class)
confusionmatrix
accuracy=(confusionmatrix[1,1]+confusionmatrix[2,2])/sum(confusionmatrix)
accuracy
}
显示错误:
Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) :
对比只适用于有两个或多于两个层次的因子
要不就是:
变量只能使用character变量,想请教下各位,这种回归遍历有什么办法能够实现,而不需要每个都手动输入获得训练数据的准确率。