рассчитать ROC с использованием SQL - PullRequest
0 голосов
/ 10 февраля 2019

Я пытаюсь рассчитать рабочую кривую приемника (ROC) с использованием MS SQL Server.Ниже приведен код.

DROP TABLE #Areas
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.specificity)/2
AS area
INTO #Areas
FROM #SensSpec a inner join #SensSpec b ON b.rnum-1 = a.rnum

Я получаю следующее сообщение об ошибке:

Сообщение 258, уровень 15, состояние 1, строка 4 Не удается вызвать методы с плавающей точкой

это относится к "b.specificity" в этой части кода "abs (b.specificity.specificity) / 2".как я могу это исправить?

1 Ответ

0 голосов
/ 10 февраля 2019

Я не знаю, что должно быть 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, второе издание .

...