阵列的最大值(SAS)

roc11111111

我有一个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。

DomPazz

我在这里看不到任何可能不正确的内容。最好的猜测是两个地方的最大值略有不同。如果第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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章