Как я могу добавить заголовок к графикам multiclass.roc в pROC?

У меня есть полиномиальная модель, построенная с nnet:multinom из 5 классов для 26 переменных:

mirna_multinom_0 = multinom(formula_0, data= clase_training, maxit=10000 )

И затем я создаю свой ROCS с помощью:

multiclass.roc(clase_training$clase, mirna_multinom_0$fitted.values,plot=TRUE)

Который я планирую.

pred_test_inter_multinom_5 = predict(interaction_multinom_model_5, newdata = clase_test, "probs")
multiclass.roc(clase_test$clase, pred_test_inter_multinom_5,plot=TRUE)

График первого контраста Ctrl и Group1

Чтобы понять их, я сохраняю его как объект e и вызываю контраст как names(e$roc), чтобы увидеть свои контрасты.

e = multiclass.roc(clase_training$clase, mirna_multinom_0$fitted.values)
names(e$rocs)

 [1] "Control/Idiop_grave"      "Control/Idiop_leve"       "Control/Isquem_grave"    
 [4] "Control/Isquem_leve"      "Idiop_grave/Idiop_leve"   "Idiop_grave/Isquem_grave"
 [7] "Idiop_grave/Isquem_leve"  "Idiop_leve/Isquem_grave"  "Idiop_leve/Isquem_leve"  
[10] "Isquem_grave/Isquem_leve"

Что дает мне 2 графика для каждого из них, 1 в направлении › и другой в направлении ‹.

Теперь. Можно ли каким-то образом отобразить названия каждого контраста на графиках?

Кроме того, есть ли способ получить площадь под кривой AUC для каждого контраста ROC? Я получаю его только в сообщении для полинома. У которых нет сюжета PROC. Могу ли я получить полиномиальную ROC или это просто конструкция без графического представления?


person Galpaccru    schedule 24.03.2020    source источник
comment
Re Могу ли я каким-то образом изобразить названия каждого контраста на графиках?: можете ли вы показать, что вы сделали до сих пор (т.е. вы говорите, что я рисую, но не показываете нам)?   -  person Calimo    schedule 25.03.2020
comment
Конечно, извини @Calimo. Собираюсь редактировать. Аааа сделано.   -  person Galpaccru    schedule 25.03.2020
comment
Я имел в виду, можете ли вы показать нам код, который вы используете для построения графиков?   -  person Calimo    schedule 25.03.2020
comment
Мой плохой, я думал, что сделал. Отредактировано. Это полиномиальная модель от nnet:multinom, поэтому я получаю их 20, 5 уровней, 2 контраста для каждого из них. @Калимо   -  person Galpaccru    schedule 25.03.2020
comment
Я не знал, что multiclass.roc принимает plot = TRUE. Явно не очень полезно. См. github.com/xrobin/pROC/issues/56 для будущих улучшений.   -  person Calimo    schedule 25.03.2020


Ответы (1)


Могу ли я каким-то образом изобразить названия каждого контраста на графиках?

Вам нужно будет перебрать кривые самостоятельно, но это можно легко сделать, например:

for (contrast in names(e$rocs)) {
    plot(e$rocs[[contrast]][[1]], col = "green", main = contrast)
    plot(e$rocs[[contrast]][[2]], col = "blue", add = TRUE)
}

есть ли способ получить площади под кривой AUC для каждого контраста ROC?

Вы можете сделать что-то подобное с функцией auc:

for (contrast in names(e$rocs)) {
    print(contrast)
    print(auc(e$rocs[[contrast]][[1]]))
    print(auc(e$rocs[[contrast]][[2]]))
}

Могу ли я получить полиномиальную ROC или это просто конструкция без графического представления?

Это своего рода среднее значение AUC, описанное Hand & Till в doi:10.1023/A:1010920819831< /а>. Соответствующая кривая для представления отсутствует.

person Calimo    schedule 25.03.2020