Цитата(Игорь @ 3.07.2008 - 13:29)

Не могу разделить воодушевления DrgLena по поводу ясности показанного представления относительно ROC анализа, хотя понимание автором поста изложенного материала ни малейшего сомнения не вызывает. Тем более не могу утверждать этого относительно изложения ROC в книге Ребровой.
Поэтому неудивительно, что исследователи шарахаются от новых методов, просто не понимая их. А на самом-то деле алгоритм элементарен. Кто бы внятно описал.
Честно говоря, не понял, что я тут непонятного написал, ну да ладно - самому всегда не видно, для этого есть даже умное название "профессиональный кретинизм" (это я про себя

). Попробую с примером.
Итак, у нас есть набор значений, который мы измерили в группе больных и здоровых (например, ХС в мг/дл). Теперь мы сортируем значения без учета принадлежности к группе в порядке возрастания, например так:
160 0
170 1
172 0
180 0
190 1
200 0
210 0
220 1
230 0
240 1
250 1
250 0
260 1
270 1
280 1
Всего у нас 8 больных и 7 здоровых. Теперь начинаем считать, сколько больных имеет значение выше порогового и сколько здоровых тоже имеют его выше или равным пороговому (т.е. сколько у нас будет истинно положительных результатов теста - на больных и сколько ложно-положительных - на здоровых, если мы используем эту границу). Начнем со 160. Выше все больные (100%) и все здоровые (100%). Соответственно, первая точка на графике будет иметь координаты 1,1
Далее, берем значение 170 - вышего него 100% больных и 6/7 (85,7%) здоровых. Итак, координаты второй точки (0,857, 1)
Для значения 172 получаем 87,5% больных и 85,7% здоровых. Координаты третьей точки (0,857, 0,875)
Продолжаем этот ряд
Код
160 0 7 1,000 1 1
170 1 1 8 1 0,857 1
172 0 6 0,857 0,857 0,875
180 0 5 0,714 0,714 0,875
190 1 1 7 0,875 0,571 0,875
200 0 4 0,571 0,571 0,75
210 0 3 0,429 0,429 0,75
220 1 1 6 0,75 0,286 0,75
230 0 2 0,286 0,286 0,625
240 1 1 5 0,625 0,143 0,625
250 1 1 4 0,5 0,143 0,5
250 0 1 0,143 0,143 0,375
260 1 1 3 0,375 0 0,375
270 1 1 2 0,25 0 0,25
280 1 1 1 0,125 0 0,125
Последние две колонки содержат координаты, необходимые для построения ROC-кривой
Оценка ее площади - это уже другая задача, для сравнения, например, можно было бы использовать интегрирование взвешиванием - метод не ахти какой точный, зато никакой математики не требуется - на миллиметровке строим кривые, затем аккуратно вырезаем их ножницами и взвешиваем на точных весах. Отношение масс и есть отношение площадей.
Если же хочется использовать, например, Эксель, то можно просто ввести формулу, как я описывал выше:
=(E31+E32)/2*(D31-D32), т.е. полусумма значений по оси Y умноженная на разность значений по оси X
Для примера выше получаем:
Se FP Площадь
1 1 0,143
0,857 1 0,000
0,857 0,875 0,125
0,714 0,875 0,125
0,571 0,875 0,000
0,571 0,75 0,107
0,429 0,75 0,107
0,286 0,75 0,000
0,286 0,625 0,089
0,143 0,625 0,000
0,143 0,5 0,000
0,143 0,375 0,054
0 0,375 0,000
0 0,25 0,000
0 0,125 0,000
Суммируя значения в столбце Площадь получаем 0,75, что и является в данном случае AUC ROC.
Далее, при желании, используя приведенные в другом посту формулы можно оценить AUC ROC:
з б
160 0 1 1
170 1 2 2
172 0 3 3
180 0 4 4
190 1 5 5
200 0 6 6
210 0 7 7
220 1 8 8
230 0 9 9
240 1 10 10
250 1 11 11
250 0 12 12
260 1 13 13
270 1 14 14
280 1 15 15
Сумма рангов
42 78
U 42 14
AUC 0,75
Q1 0,6
Q2 0,642857143
se2 0,017410714
se 0,131949666
Вначале рассчитываем суммы рангов и оцениваем U-критерий Мэнна-Уитни. Берем большее значение U и делим на произведение численностей групп (в данном случае величина - сюрприз! - получается равной 0,75)
Сами формулы продублирую
Q1 = AUC / (2 - AUC);
Q2 = 2 * AUC^2 / (1 + AUC);
se2 = (AUC * (1 - AUC) + (N1 - 1) * (Q1 - AUC^2) + (N2 - 1) * (Q2 - AUC^2)) / (N1 * N2);
SE_auc = squareRoot (se2);
Их выражения в Экселе (в ячейке С49 - сумма рангов критерий):
C50 U =7*8+(7*(7+1))/2-C49
C51 AUC =C50/(7*8)
C52 Q1 =C51/(2-C51)
C53 Q2 =2*C51^2/(1+C51)
C54 se2 =(C51*(1-C51)+(7-1)*(C52-C51^2)+(8-1)*(C53-C51^2))/(7*8)
C55 se =КОРЕНЬ(C54)
Я думаю, что очевидно, что 7 и 8 - это численности здоровых и больных в вышеописанном примере.
Поскольку все таблицеподобные примеры вверху поехали, креплю экселевский файл со всеми расчетами и примером. пытался как-то исправить - но мои пробелы переделывает в табуляции, которые затем считает одним пробелом...