获取宏的最小最大输出(函数)

时间:2017-03-15 08:03:06

标签: sas sas-macro

我想找到一个宏产生的极值作为输入参数的函数:

这里的示例目的是一些数据:

data Input_data;
    input X Y;
    cards;
    10 15
    20 18
    30 27
    33 41
    ;
run; 

以下不是实际的公式(因为分析上很容易找到它的最小值)。我想要计算方法。 例如,我有半经验规则,它采用三个参数:

%macro Function(const1, const2 const3);
    data output;
        set input;
        X_eff1=((X > &const1.)*(X - &const1.)**2);
        X_eff2=((X > &const2.)*(X - &const2.)**2);
        X_eff3=((X > &const3.)*(X - &const3.)**2);
        Residual= Y - (1.3*X_eff1 - 2.7*X_eff2+ 3.1*X_eff3);
    run;
%mend;

我想找到const1,const2 const3,它为变量'Residual'产生最小值。 SAS能做到吗? 很少有选择要考虑:

a)查找全局最小值

b)在边界条件下找到局部最小值,例如:const1[0,1] const2[10,17]const3[20, 22]

我可以生成巨大的桌子和蛮力将它提供给该功能。但是,如果输入参数的数量增加,则这是不可行的。

我可以抓一些程序吗?

我可以在numpy中做到这一点(来自cipy.optimize的fmin)或R如果证明SAS很难。

关于如何解决它的任何想法?

0 个答案:

没有答案