2017-12-20 45 views
1

Rを使ってROCプロットを描く方法を教えてください。 ロジスティック回帰モデルを作成しました。ロジスティック回帰を使用したRoC曲線

dt3 - 主データセット

dt3Training -

dt3Test主データセットから作られたトレーニングスプリット - 以下

主データセットから作られた試験分割がロジスティック回帰のために使用されるコードである:

ctrl<- trainControl (method="repeatedcv", number = 10, repeats =5, savePredictions="TRUE" 

modelfit <- train (Attrition~., data=dt3, method="glm", family="binomial", trControl=ctrl) 

pred = predict (modelfit, newdata=dt3Test) 

confusionMatrix(data=pred, dt3Test$Attrition) 

私の問題は、predは表示されません代わりにデータテーブルとして表示されます。したがって、コードの下にエラーがあります。

perf1 <- performance(pred,"tpr","fpr") 

plot(perf1) 

私がこれを手伝ってくれれば本当にありがたく思います。

UPDATE:k-fold cross validation - how to get the prediction automatically?を見た後、私は以下に私のコードを変更:

library("caret", lib.loc="~/R/win-library/3.4") 
load (df) ## load main dataset "df" 
tc <- trainControl("cv",10,savePred=T) ##create folds 
(fit<-train(Attrition~.,data=df,method="glm",family="binomial",trControl=tc)) ##train model, predict Attrition with all other variables 

私はクラウスウィルケで以下のコードを試してみたい私は私のメインデータ(DF)と私のモデルを持っているとして、しかし、私は混乱してしまいました(フィット)。

data.frame(predictor = predict(fit, df), 
known.truth = fit$Attrition, 
model = "fit") 

または

data.frame(predictor = predict(fit, tc), 
known.truth = tc$Attrition, 
model = "fit") 

申し訳ありませんが、私は本当に愚かな質問をしていますが、私は終了する私のプロジェクトのために残され多くの時間を持っていない場合。私は以前のRの経験はありません。

+0

再現可能な例を作成するには、https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-exampleの指示に従ってください。非常に、少なくとも、エラーメッセージと使用されたパッケージを報告してください。それがなければ、あなたを助けることは不可能です。 – Calimo

答えて

0

私はROC曲線をプロットする方法を発見 - 私は非常に最初からコードを書き留めます - その後、ROC曲線をモデルを作成:

k個の折り目とロジスティック回帰を作成します:ROC曲線の

library("caret", lib.loc="~/R/win-library/3.4") 
load (df) 
## load main dataset "df" 

tc <- trainControl("cv",10,savePred=T) 
##create folds 

(fit<-train (Attrition~.,data=df,method="glm",family="binomial",trControl=tc)) 
##train model, predict Attrition with all other variables 

library(ggplot2) 
library(ROCR) 

predict0 <- predict(fit, type = 'raw') 

ROCRpred0 <- prediction(as.numeric(predict0),as.numeric(df$Attrition)) 

ROCRperf0<- performance(ROCRpred0, 'tpr', 'fpr') 

plot(ROCRperf0, colorize=TRUE, text.adj=c(-0.2,1.7)) 

私はこのコードでプロットを得ることができました。私は同じ問題を抱えて他の人を助けてくれることを願っています。 Sample ROC Curve - discrete values

0

再現可能な例は提供していないので、別のデータセットとモデルを使用します。 ggplot2の場合、パッケージplotROCは、適合モデルで動作する一般的なROCプロット機能を提供します。既知の真理値と予想される確率(または他の数値予測変数)をデータフレームに配置してから、ジオムに渡すだけです。例を次に示します。

library(MASS) # for Pima data sets 
library(ggplot2) 
library(plotROC) 

# train model on training data 
glm.out.train <- glm(type ~ npreg + glu + bp + bmi + age, 
        data = Pima.tr, 
        family = binomial) 

# combine linear predictor and known truth for training and test datasets into one data frame 
df <- rbind(data.frame(predictor = predict(glm.out.train, Pima.tr), 
         known.truth = Pima.tr$type, 
         model = "train"), 
      data.frame(predictor = predict(glm.out.train, Pima.te), 
         known.truth = Pima.te$type, 
         model = "test")) 

# the aesthetic names are not the most intuitive 
# `d` (disease) holds the known truth 
# `m` (marker) holds the predictor values 
ggplot(df, aes(d = known.truth, m = predictor, color = model)) + 
    geom_roc(n.cuts = 0) 

enter image description here

関連する問題