Я пытаюсь найти оптимальный порог T для X, чтобы предсказать Y. Обычно я использовал бы J Юдена в этой настройке, однако, когда порог является нижней границей (в случае, когда Y изменяется обратно пропорционально X), классический реализация, кажется, не имеет места.
В следующем посте есть некоторые частичные ответы (первые ответы дают лучшие результаты), но этот метод не является надежным в соответствии с комментариями, и ни одна статья не цитируется:
Кривая Roc и точка отсечки. Python
def cutoff_youdens_j(fpr, tpr, thresholds):
j_scores = tpr-fpr # J = sensivity (=tpr) + specificity (=1-fpr) - 1
j_ordered = sorted(zip(j_scores, thresholds))
return j_ordered[-1][1]
import numpy as np
from sklearn.metrics import roc_curve
X = np.arange(1, 10)
# Y is an example of a binary dependent variable that varies inversely to the predictor X
Y = X < 5
fpr, tpr, thresholds = roc_curve(Y, X)
T = cutoff_youdens_j(fpr, tpr, thresholds)
print(T)
# OUTPUT: 10
Ожидаемый результат будет 5
, однако я получаю 10
.
Есть ли лучшие методы для выбора оптимального порога и есть ли документ, демонстрирующий это?
Было бы также интересно получить, если это на самом деле нижняя или верхняя граница.
EDIT:
Возможно, будет заранее обратный X, а затем обратный T.
X = np.arange(1, 10)
Y = X < 5
X = -X
fpr, tpr, thresholds = roc_curve(Y, X)
T = cutoff_youdens_j(fpr, tpr, thresholds)
T = -T
print(T) #OUTPUT 4
Это работает, но направление ассоциации должно быть определено заранее. Существуют ли другие методы, которые работают как с положительными, так и с отрицательными ассоциациями между X и Y?