用5个数据点计算DDT任务的AUC

时间:2019-07-08 17:36:05

标签: spss

我正在尝试使用以下语法为延迟贴现任务计算曲线下方的面积。当我运行程序时,它给了我AUC的空白列(它计算cmax,tmax,lagdelay,lagtime等),但没有给我AUC。

INPUT PROGRAM.
LOOP id=1001 TO 1247.
DO REPEAT v=DDTt1ip DDTt2ip DDTt3ip DDTt4ip DDTt5ip.
COMPUTE v=UNIFORM(25).
END REPEAT.
END CASE.
END LOOP.
END FILE.
END INPUT PROGRAM.
EXECUTE.
DO REPEAT  h = h0 h1 h2 h3 h4
 / t = 0 1 2 3 4 .
COMPUTE h = t.
END REPEAT.
EXECUTE.

VECTOR time = h0 to h4.
VECTOR delay = DDTt1ip to DDTt5ip.
COMPUTE cmax = MAX(DDTt1ip to DDTt5ip).
COMPUTE tmax = $sysmis.
COMPUTE lagdelay = $sysmis.
COMPUTE lagtime = $sysmis.
COMPUTE auc = 0.
LOOP #k = 1 to 5.
DO IF (NOT(MISSING(delay(#k)))).
IF (NOT(MISSING(lagdelay(#k))))
 auc = auc + (time(#k) - lagtime)*(lagdelay + delay(#k))/2.
IF (delay(#k) = cmax and missing(tmax)) tmax = time(#k).
COMPUTE lagdelay = delay(#k).
COMPUTE lagtime = time(#k).
END IF.
END LOOP.
EXECUTE.

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

将代码与原始技术说明(https://www-01.ibm.com/support/docview.wss?uid=swg21476168)仔细比较,您会发现原始代码中没有lagdelay(#k),因为lagdelay是标量而不是向量。

IF(NOT(MISSING(lagdelay(#k))))

在您的代码中应该是

IF(NOT(MISSING(lagdelay)))