Я не знаю, что должно быть b.specificity.specificity
.Это должно решить вашу проблему:
SELECT ((CASE WHEN b.sensitivity> a.sensitivity THEN b.sensitivity
ELSE a.sensitivity
END) * abs(b.specificity - a.specificity) +
(abs(b.sensitivity - a.sensitivity) *
abs(b.specificity - a.specificity) / 2
)
) AS area
INTO #Areas
FROM #SensSpec a inner join
#SensSpec b
ON b.rnum - 1 = a.rnum;
Это не то, как я рассчитал значения ROC для данных.В этом расчете используется внутреннее соединение, поэтому, по крайней мере, вам не хватает конечных точек диапазона.
Я предпочитаю вычисление, использующее кумулятивные оконные функции.Но объяснение ответа на переполнение стека довольно длинное.Я редко делаю это, но я освещаю эту вершину в Анализ данных с использованием SQL и Excel, второе издание .