我正在尝试使用以下语法为延迟贴现任务计算曲线下方的面积。当我运行程序时,它给了我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.
任何帮助将不胜感激!
答案 0 :(得分:0)
将代码与原始技术说明(https://www-01.ibm.com/support/docview.wss?uid=swg21476168)仔细比较,您会发现原始代码中没有lagdelay(#k),因为lagdelay是标量而不是向量。
IF(NOT(MISSING(lagdelay(#k))))
在您的代码中应该是
IF(NOT(MISSING(lagdelay)))