J'effectue une régression logistique en utilisant ceci page . Mon code est comme ci-dessous.
mydata <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv")
mylogit <- glm(admit ~ gre, data = mydata, family = "binomial")
summary(mylogit)
prob=predict(mylogit,type=c("response"))
mydata$prob=prob
Après avoir exécuté ce code, la base de données mydata comporte deux colonnes - "admettre" et "prob". Ces deux colonnes ne devraient-elles pas suffire à obtenir la courbe ROC?
Comment puis-je obtenir la courbe ROC.
Deuxièmement, en regardant les mydonnées, il semble que le modèle prédit la probabilité de admit=1
.
Est-ce exact?
Comment savoir quel événement particulier le modèle prévoit?
Merci
MISE À JOUR: Il semble que les trois commandes ci-dessous soient très utiles. Ils fournissent la coupure qui aura une précision maximale et aident ensuite à obtenir la courbe ROC.
coords(g, "best")
mydata$prediction=ifelse(prob>=0.3126844,1,0)
confusionMatrix(mydata$prediction,mydata$admit
La courbe ROC compare le rang de prédiction et de réponse. Par conséquent, vous pouvez évaluer la courbe ROC avec le package pROC
comme suit:
mydata <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv")
mylogit <- glm(admit ~ gre, data = mydata, family = "binomial")
summary(mylogit)
prob=predict(mylogit,type=c("response"))
mydata$prob=prob
library(pROC)
g <- roc(admit ~ prob, data = mydata)
plot(g)
une autre façon de tracer la courbe ROC ...
library(Deducer)
modelfit <- glm(formula=admit ~ gre + gpa, family=binomial(), data=mydata, na.action=na.omit)
rocplot(modelfit)
#Another way to plot ROC
mydata <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv")
mylogit <- glm(admit ~ gre, data = mydata, family = "binomial")
summary(mylogit)
prob=predict(mylogit,type=c("response"))
library("ROCR")
pred <- prediction(prob, mydata$admit)
perf <- performance(pred, measure = "tpr", x.measure = "fpr")
plot(perf, col=Rainbow(7), main="ROC curve Admissions", xlab="Specificity",
ylab="Sensitivity")
abline(0, 1) #add a 45 degree line