Получите предопределенные значения после glm (), чтобы получить PPV, NPV, чувствительность и специфичность - PullRequest
0 голосов
/ 28 сентября 2018

Я управлял glm() моделью;но теперь я хотел бы измерить точность модели с помощью PPV, NPV, чувствительности и специфичности.Тем не менее, я продолжаю получать запутанные результаты.

Мой результат - фактор-переменная, которая выглядит следующим образом:

table(mydata$outcome)

   0    1 
6824  359

Предикторы - это комбинация непрерывных переменных с 1 категориальной (пол).

Мой код:

# To run the logistic model 

    mod <- glm(outcome~predictor1+predictor2+predictor3,data=mydata,family=binomial("logit"))
    summary(mod)

# To run predict() to get the predicted values of the outcome 

    predicted = predict(object =  mod, newdata=mydata, type = "response")

Результаты для этого выглядят так:

head(predicted)
         1          2          3          4          5          6 
0.02568802 0.02979873 0.01920584 0.01077031 0.01279325 0.09725329 

Это очень удивительно, так как я ожидал увидеть предсказанный «1»(случаи) против '0' (элементы управления), которые я мог бы использовать для получения показателей точности моделей либо с confusionMatrix(predicted, mydata$outcome), либо с использованием библиотеки ModelMetrics.

Итак, мой вопрос: как я могу получить результаты таблицы 4х4 (прогнозируемые или наблюдаемые), которые я могу использовать для измерения точности моей glm() модели при прогнозировании результата?Я буду благодарен за любой совет, или, пожалуйста, дайте мне знать, если есть лучшие способы получить PPV, NPV, чувствительность и специфичность.Спасибо.

1 Ответ

0 голосов
/ 28 сентября 2018

Ваша модель glm дает вероятности двух результатов.Как правило, каждый хочет присвоить '1' любому событию с вероятностью> =.5 и 0 в противном случае.Вы можете сделать это с помощью round ().В более типичных ситуациях типа «машинное обучение» можно рассмотреть и другие значения, кроме .5.Вы можете использовать ifelse () fn для этого.Например, если вы хотите присвоить '1' только случаям с вероятностью 0,7, вы можете сказать, что vals = ifelse (mydata $ output> .7,1,0).Наконец, данные, которые вы хотите, обычно называют матрицей путаницы.Его можно вычислить с помощью различных пакетов, но вот хорошее решение с родственного сайта - R: как создать матрицу путаницы для прогнозирующей модели?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...