【发布时间】:2014-09-15 18:48:48
【问题描述】:
在 SAS 中,如何分配来自 OUTEST 或 OUTSTAT 函数的变量以用于循环?
例如,假设我想运行某种迭代分析,直到我的平均值(平均值)达到某个阈值。我知道如何使用 OUTEST 或 OUTSTAT 提取均值,但是我如何对其执行操作或代码块?
谢谢。
如果您对细节感兴趣,我正在尝试执行 VIF 的反向选择(以消除多重共线性)。不幸的是,SAS 似乎没有为此提供“SELECTION=BACKWARD”功能...
编辑:使用示例代码更新:
%MACRO MULTICOLLINEARITY(TABLE_SUFFIX,YVAR,FIELDS,MAX_VIF);
/* PRELIMINARY PROC REG ON ALL FIELDS*/
PROC REG DATA=TABLE_&TABLE_SUFFIX. NOPRINT;
MODEL &YVAR = &FIELDS / VIF COLLIN NOINT;
ODS OUTPUT PARAMETERESTIMATES=PAREST1;
RUN;
/* RETAIN NON-NULL VIF FIELDS ONLY */
DATA NO_NULL_VIF;
SET PAREST1 (WHERE=(VarianceInflation <> .));
RUN;
/* CREATE VARIABLE LIST OF NON-NULL VIF FIELDS */
PROC SQL;
SELECT VARIABLE
INTO :NO_NULL_VIF_FIELDS SEPARATED BY ' '
FROM NO_NULL_VIF;
QUIT;
/* RE-RUN REGRESSION WITH NON-NULL VIF FIELDS ONLY */
PROC REG DATA=TABLE_&TABLE_SUFFIX. NOPRINT;
MODEL &YVAR = &NO_NULL_VIF_FIELDS / VIF COLLIN NOINT;
ODS OUTPUT PARAMETERESTIMATES=PAREST2;
RUN;
/* START ITERATION OF DROPPING THE HIGHEST VIF UNTIL THE CRITERIA IS MET */
???
%MEND;
%MULTICOLLINEARITY(, RESPONSE, &INPUT_FIELDS,???)
按照标准,我的意思是 VIF_MAX
【问题讨论】:
-
您应该在此处提供一些代码,最好使用 SASHELP 数据集或您在问题中描述的内容,以便我们了解您使用的上下文。就此而言,这是什么 PROC?
-
如果您使用的是 PROC REG,它确实有 selection=B(ackward),至少根据 9.2 documentation。
-
嗨乔。我将很快提供代码。它确实适用于 PROC REG,但 SELECTION=BACKWARD 仅适用于 PVALUE 等内容,不适用于 VIF。如果我错了,请纠正我。谢谢。
-
嗨乔。那里更新了代码和注释。谢谢。
标签: sas regression