GLM, функция стоимости для определения точки отсечения - PullRequest
0 голосов
/ 18 января 2020

Я построил модель GLM и нашел функцию для нахождения точки отсечения с наименьшей ошибкой, поскольку из-за медицинской проблемы стоимость для меня должна быть выше для ложных отрицательных прогнозов, моя функция выглядит следующим образом и находит точка отсечения где-то около 0,29, но при использовании этой точки отсечки в моей матрице путаницы гораздо больше ложных негативов, чем ложных срабатываний, но для меня это выглядит так, как будто стоимость ложного отрицания равна 2, а стоимость ложного положительного - 1. ? Как это исправить, чтобы он нашел точку отсечения, в которой я получаю меньше ложных срабатываний, чем ложных срабатываний?

result = cbind(searchgrid, NA)
cost1 <- function(r, pi) {
  weight1 = 2 #False Negative cost
  weight0 = 1 #False Positive cost
  c1 = (r == 1) & (pi < pcut)  #logical vector - true if actual 1 but predict 0 (False Negative)
  c0 = (r == 0) & (pi > pcut)  #logical vector - true if actual 0 but predict 1 (False Positive)
  return(mean(weight1 * c1 + weight0 * c0))
}
for (i in 1:length(searchgrid)) {
  pcut <- result[i, 1]
  result[i, 2] <- cv.glm(data = train.data, glmfit = model.glm.new, cost = cost1,
                         K = 3)$delta[2]
}
...