我试图计算的MS SQL Server接收器操作曲线(ROC)。以下是代码。
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”。我该如何解决?
我不知道是什么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,第二版。