恳请各位大侠,帮忙给写一个SAS macro来处理重复的数据文件操作。如果在写这个macro的时候果被卡到了什么地方,没有关系,即使只是提供部分方案,我也感激不尽,100个论坛币悬赏照送。此外,写这个macro完全没有必要了解任何的统计知识。这个macro完全是个数据文件操作问题(data step, proc sql)。
正文如下:
我有一个数据文件,my_data,包含一个y变量和上百个x变量。为了举例方便,这里用3个x变量来演示。下边这个程序生成我的数据文件,my_data。
DATA my_data;
INPUT y x1 x2 x3;
DATALINES;
10 1 1 1
20 1 2 2
30 2 3 3
40 2 4 4
50 3 4 4
60 3 5 4
70 4 5 5
80 4 6 5
90 5 7 6
;
RUN;
我把(x1 x2 x3)这个组合放入到下边这段程序中,这段程序会生成一个数据文件,model_parms。(你只需要知道这些就足够了)。
PROC REG DATA=my_data;
MODEL y=x1 x2 x3; *对于不同x变量组合,这是唯一需要改动的一行程序;
ODS OUTPUT ParameterEstimates=model_parms;
RUN;QUIT;
对于生成的这个数据文件,model_parms,稍作如下处理。
DATA model_parms;
SET model_parms;
KEEP Variable Estimate Probt;
IF Variable NE "Intercept";
RUN;
对于生成的这个数据文件,model_parms,我只看两个东西:
1是看x变量的符号对不对(所有x变量的估计参数都应该是负号)。通过观察Parameter Estimate,我发现2/3(或者66%)的参数符号不对(x1,x2符号不对,x3符号对了)。
2是看P-Value是不是小于0.05。通过观察Pr > |t|,我发现2/3(或者66%)的参数的P-Value小于0.05(x1,x2的P-Value小于0.05,x3的P-Value大于0.05)。
目前为止,我只看了一种x变量的组合情况,即(x1 x2 x3)这个组合。 下面, 我还需要看(x1 x2)这个组合(只需把上面的MODEL y=x1 x2 x3 这行程序变动成为MODEL y=x1 x2)。 我还需要看(x2 x3)这个组合(只需把上面的MODEL y=x1 x2 x3这行程序变动成为MODEL y=x2 x3)。
最后,我要把这些x变量的组合按照这个数据文件,model_parms,符号正确率和P-Value小于0.05率,来排一下序,选出一个最佳x变量的组合。对于这个最佳x变量的组合来说,其估计参数的符号正确率最高,而且P-Value小于0.05的率同样的高。
请大侠帮帮忙,把上面的这个例子写成一个macro。这个macro不需要遍历所有x变量的组合, 用户可以指定x变量的各种组合。在这个例子了,我要看看,下面这3个x变量的组合,哪个最好:(x1 x2 x3)这个组合,(x1 x2)这个组合,还是(x2 x3)这个组合?
如果我有什么地方解释的不清楚,尽情按照你的理解来写这个macro即可。说一千,道一万,我的根本问题是,给定一些x变量的组合,按照符号正确率和P-Value小于0.05率找到个最好的那个组合:(x1 x2 x3)这个组合,(x1 x2)这个组合,还是(x2 x3)这个组合?
|