我有一个auc值数组cv_auc0-cv_auc39,编号为0-39。最大auc值为.7778,它出现在数组中的多个位置(33、35、38、39)。当我创建变量时
auc_max = max(of cv_auc0-cv_auc&39);
即使该最大值出现在阵列的其他位置,也似乎将位置39标识为最大值。
这些数字0-39反映了模型中协变量的数量,我想在保持最大auc的同时将这个数字保持尽可能低,因此我希望auc_max变量标识位置33而不是39。 ?
我在以下代码中提取了这个协变量数p:
array a (*) cv_auc0-cv_auc&maxp;
do k = &maxp to 0 by -1;
if (a(k+1) = auc_max) then p = k;
end;
cross_val_auc = a(p+1);
keep p cross_val_auc;
它返回的p是39而不是33。
我在这里看不到任何可能不正确的内容。最好的猜测是两个地方的最大值略有不同。如果第39位的值是1e-6>第33位的值,那么您将返回第39位。
这就是我要怎么做。我将从底部进行迭代,并使用该leave;
语句停止循环。
data test;
array a[10] (1 2 3 4 4 3 2 4 1 4);
m = max(of a1-a10);
do p=1 to 10 ;
if a[p] = m then leave;
end;
put m= p=;
run;
返回:
m=4 p=4
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句