Является ли оценка Brier и Brier правильным подходом для оценки этой биномиальной модели glm?

#r #glm

#r #glm

Вопрос:

Я хочу оценить калькулятор, который предсказывает события, вычисляя предполагаемый процент вероятности того, что событие произойдет, на основе многочисленных входных переменных (на практике речь идет о пациентах с факторами риска и послеоперационными осложнениями). К сожалению, я не понимаю, как на самом деле работает калькулятор, но могу смотреть только на значения ввода / вывода. После ввода нескольких сценариев я получаю df, подобный этому:

 risk <- runif(100, 0, 1)
event <- sample(c(0,1), 100, replace = TRUE) 
test.df <- data.frame(risk, event)
 

Риск описывает прогнозируемую вероятность, а событие описывает, действительно ли произошло осложнение.

Теперь я хочу выяснить, насколько хорош калькулятор для прогнозирования осложнений у моих пациентов.

Было бы целесообразно использовать биномиальную glm и оценивать ее с помощью масштабируемой оценки brier?

 library (stats)
library (DescTools)
mod <- glm(event ~ risk, family = binomial, data = test.df)
BrierScore(mod, scaled = TRUE)
 

С моей точки зрения, можно также напрямую рассчитать оценку Brier и масштабировать оценку Brier из df, но я не уверен, будет ли это правильным подходом.

 BS <- function(obs, pred) {
          mean((obs - pred)^2)
        }
        
Scaled_BS <- function(obs, pred) {
          1 - (BS(obs, pred) / (mean(obs) * (1 - mean(obs))))
        }
BS(event, risk)
Scaled_BS(event, risk)
 

Пожалуйста, простите меня, если это совершенно неправильный подход. Я новичок в такого рода задачах, и любая помощь будет высоко оценена!

Ответ №1:

Использование оценки Brier — это нормально, но вы можете дополнить анализ ROC, который предназначен для проверки двоичных результатов. Ключ в анализе ROC возвращает значение в диапазоне 0-1. Чем ближе к 1, тем лучше прогнозы. И если значение близко к 0,5, то прогноз является случайным и не обладает прогностической способностью. Эмпирическое правило заключается в том, что производительность модели является правильной, если AUROC превышает 0,7. Я набросал для вас код, используя ROCR package:

 library(ROCR)
#Data
risk <- runif(100, 0, 1)
event <- sample(c(0,1), 100, replace = TRUE) 
test.df <- data.frame(risk, event)
#Model
mod <- glm(event ~ risk, family = binomial, data = test.df)
#Evaluate
test.df$score<-predict(mod,type='response',test.df)
pred<-prediction(test.df$score,test.df$event)
discr=performance(pred,"auc")
#Compute AUROC
AUROC=as.numeric(discr@y.values)
 

Вывод для AUROC :

 AUROC
[1] 0.5700522
 

Что является низким. Также вы можете построить кривую ROC, ближайшая кривая к левому верхнему углу означает, что прогнозы исходят из высокопроизводительной модели. В случае ваших данных:

введите описание изображения здесь

Который находится в середине квадрата, а не близко к левому верхнему углу. Этот показатель может помочь вам определить производительность вашей модели.

Комментарии:

1. Большое вам спасибо за вашу быструю поддержку и рекомендации относительно AUROC. Я хотел использовать оценку Brier, потому что она использовалась другими коллегами в контексте того же калькулятора. Я предполагаю, что в конце концов оба подхода должны дать результат с одинаковой тенденцией? Еще раз спасибо и хороших выходных!

2. @NR117 Большое спасибо! Да, оба показателя количественно оценивают производительность, но AUROC используется для большей точности, поскольку AUROC понимается как вероятность. Близкая к 1 лучшая классификация. Оценка Brier возвращает число, которое иногда может быть трудно интерпретировать. Надеюсь, это вам поможет 🙂