この page を使用してロジスティック回帰を実行しています。私のコードは以下の通りです。
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
このコードを実行した後、mydataデータフレームには「admit」と「prob」の2つの列があります。これらの2つの列はROC曲線を取得するのに十分ではありませんか?
ROC曲線を取得するにはどうすればよいですか。
第二に、mydataを見ると、モデルはadmit=1
の確率を予測しているようです。
あれは正しいですか?
モデルが予測している特定のイベントを見つける方法
ありがとう
更新:以下の3つのコマンドが非常に役立つようです。それらは、最大の精度を持つカットオフを提供し、ROC曲線を取得するのに役立ちます。
coords(g, "best")
mydata$prediction=ifelse(prob>=0.3126844,1,0)
confusionMatrix(mydata$prediction,mydata$admit
ROC曲線は、予測と回答のランクを比較します。したがって、次のようにパッケージpROC
を使用して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"))
mydata$prob=prob
library(pROC)
g <- roc(admit ~ prob, data = mydata)
plot(g)
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