计算ROC使用SQL

问题描述 投票:0回答:1

我试图计算的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”。我该如何解决?

sql sql-server roc
1个回答
0
投票

我不知道是什么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,第二版。

© www.soinside.com 2019 - 2024. All rights reserved.