<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: SAS AUTOMATED MACRO CODE FOR MULTICOLLINEARITY FINAL in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/please-help-me-for-macro-to-test-multicollinearity/m-p/588181#M168068</link>
    <description>&lt;P&gt;/* Author PRAKASH HULLATHI */&lt;BR /&gt;/*CREATING THE DATA FOR MULTICOLLINEARITY*/&lt;/P&gt;&lt;P&gt;%MACRO REMOVE_MULTICOLLINEARITY(DATASET=,YVAR=,VIF_CUTOFF=);&lt;/P&gt;&lt;P&gt;/*taking output of all variables*/&lt;BR /&gt;PROC CONTENTS DATA=&amp;amp;DATASET. VARNUM OUT=T;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;/*filter only numeric variables excluding dependent and date variables*/&lt;BR /&gt;DATA T1;&lt;BR /&gt;SET T;&lt;BR /&gt;KEEP NAME ;&lt;BR /&gt;WHERE TYPE=1 AND NAME NOT IN("&amp;amp;yvar.") and FORMAT not in('DATE') ;/* Remove target and date variables*/&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;/*creating macro for independent variables*/&lt;BR /&gt;PROC SQL NOPRINT;&lt;BR /&gt;SELECT NAME INTO : XVARS SEPARATED BY ' '&lt;BR /&gt;FROM T1;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;%PUT independent_variables=&amp;amp;XVARS;&lt;/P&gt;&lt;P&gt;/*running the regression model till independent variables vif&amp;lt; specified vif_cutoff*/&lt;BR /&gt;%DO %UNTIL (%SYSEVALF(&amp;amp;MAX_VIF.&amp;lt;=&amp;amp;VIF_CUTOFF.) );&lt;/P&gt;&lt;P&gt;/*taking the output of independent variables vif by removing the intercept*/&lt;BR /&gt;ODS OUTPUT PARAMETERESTIMATES=PAREST2;&lt;/P&gt;&lt;P&gt;PROC REG DATA=&amp;amp;DATASET. ;&lt;/P&gt;&lt;P&gt;MODEL &amp;amp;YVAR.= &amp;amp;XVARS. / VIF ;&lt;/P&gt;&lt;P&gt;RUN;&lt;/P&gt;&lt;P&gt;QUIT;&lt;/P&gt;&lt;P&gt;/*dropping the independent variables with missing vif value*/&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;DATA T11;&lt;BR /&gt;SET PAREST2;&lt;BR /&gt;IF VarianceInflation NOT IN(.) ;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;/*sorting the vif value by descending order*/&lt;BR /&gt;PROC SORT DATA=PAREST2 OUT=PAREST2_SORT ;&lt;BR /&gt;BY DESCENDING VarianceInflation;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;/*considering the highest vif value */&lt;BR /&gt;DATA PAREST2_SORT_2;&lt;BR /&gt;SET PAREST2_SORT;&lt;BR /&gt;IF _N_=1;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;/*creating the macro for highest vif value*/&lt;BR /&gt;PROC SQL NOPRINT;&lt;BR /&gt;SELECT VARIABLE INTO: REMOVE_VAR&lt;BR /&gt;FROM PAREST2_SORT_2;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;/*dropping the highest vif value variable*/&lt;/P&gt;&lt;P&gt;PROC SQL NOPRINT ;&lt;BR /&gt;SELECT Variable INTO: XVARS SEPARATED BY ' '&lt;BR /&gt;FROM T11&lt;BR /&gt;WHERE VARIABLE NOT IN("&amp;amp;REMOVE_VAR.","Intercept") ;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;/*getiing the highest vif value*/&lt;BR /&gt;PROC SQL NOPRINT;&lt;BR /&gt;SELECT MAX(VarianceInflation) INTO: MAX_VIF&lt;BR /&gt;FROM PAREST2;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;%PUT max_vif=&amp;amp;MAX_VIF. variable_removed=&amp;amp;REMOVE_VAR. ;&lt;/P&gt;&lt;P&gt;%END;&lt;/P&gt;&lt;P&gt;%MEND REMOVE_MULTICOLLINEARITY;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;%REMOVE_MULTICOLLINEARITY(DATASET=sashelp.cars,YVAR=MPG_City,VIF_CUTOFF=10)&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;/* after running the above sas macro code&lt;BR /&gt;for multicollinearity then run the below code */&lt;/P&gt;&lt;P&gt;/* final data set with no multicollinearity variables*/&lt;BR /&gt;data NO_MULTICOLLINEARITY;&lt;BR /&gt;SET PAREST2;&lt;BR /&gt;KEEP VARIABLE;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;PROC SQL NOPRINT;&lt;BR /&gt;SELECT VARIABLE INTO : XVARS_final SEPARATED BY ' '&lt;BR /&gt;FROM NO_MULTICOLLINEARITY&lt;BR /&gt;WHERE VARIABLE NOT IN("Intercept");&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;PROC REG DATA=SASHELP.CARS;&lt;BR /&gt;MODEL MPG_City=&amp;amp;XVARS_final./ VIF ;&lt;BR /&gt;RUN;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 12 Sep 2019 11:56:24 GMT</pubDate>
    <dc:creator>phullathi</dc:creator>
    <dc:date>2019-09-12T11:56:24Z</dc:date>
    <item>
      <title>please help me for macro to test multicollinearity</title>
      <link>https://communities.sas.com/t5/SAS-Programming/please-help-me-for-macro-to-test-multicollinearity/m-p/446443#M112006</link>
      <description>&lt;P&gt;Hi everyone,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have created macro to test for&amp;nbsp;multicollinearity but I have a couple problems that I need help from the following code.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro vif_automated(target,num);

%let VIF_limit=2;
%let VIF_val=100;

/*Variable list*/

proc sql noprint;
select Variable
into :varlist
separated by " "
from PD.cluster_&amp;amp;segment._select
where variable not in ("&amp;amp;target.");
quit;

/*Create a blank table for removed variable*/

proc reg data=PD.MEF_ALL_&amp;amp;segment.;
model &amp;amp;target.=&amp;amp;varlist. /vif;
ods output parameterestimates=vif;
quit;

data removed_variable_list;
set vif;
if _n_=0 then output removed_variable_list;
run;

/*Loop*/

%do %while (%sysevalf(&amp;amp;vif_val.&amp;gt;&amp;amp;VIF_limit.));

proc reg data=PD.MEF_ALL_&amp;amp;segment.;
model &amp;amp;target.=&amp;amp;varlist. /vif;
ods output parameterestimates=vif;
quit;

dm 'odsresults; clear';
dm 'log; clear';

proc sort data=vif;
by descending VarianceInflation;
quit;

data vif_top vif_others;
set vif;
if _n_=1 then output vif_top;
if _n_&amp;gt;1 then output vif_others;
run;

data vif_top;
set vif_top;
call symput(compress("vif_val"),compress(VarianceInflation));
run;

data removed_variable_list;
set vif_top removed_variable_list;
run;

proc sql;
select distinct variable 
into: varlist 
separated by " "
from vif_others
where variable^="Intercept";
quit;

%end;

data final_variable_vif_&amp;amp;num.;
set vif;
run;

%mend;

%vif_automated(ConLoanc_M12_lg2,1);
%vif_automated(X_CVM_M12_lg4,2);
%vif_automated(C_CVM_M6_lg1,3);
%vif_automated(Auto_sale_comm_C,4);
%vif_automated(C_CVM_M12_lg3,5);
%vif_automated(C_CVM_M6_lg4,6);
%vif_automated(C_CVM_M6_lg3,7);
%vif_automated(Farm_C_lg1,8);
%vif_automated(X_CVM_M6_lg2,9);
%vif_automated(UR_M6,10);
%vif_automated(X_CVM_LN_lg4,11);
%vif_automated(X_CVM_M3_lg4,12);
%vif_automated(Auto_sale_Pass_C,13);
%vif_automated(CCI_C_lg2,14);
%vif_automated(UR_LN,15);
%vif_automated(UR_M3,16);
%vif_automated(C_CVM_lg3,17);
%vif_automated(Farm_C,18);&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;I try to avoid to type Y variable name as a target by write code like above. Are there any faster way to set one of the variables in&amp;nbsp;PD.cluster_&amp;amp;segment._select file as Y and the rest of them are X.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Another thing is that when I manually set Y variable, I have to put the number 1,2,3,... to keep result. Are there any way to create the final results file as one time after all combination.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you so much&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 17 Mar 2018 13:55:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/please-help-me-for-macro-to-test-multicollinearity/m-p/446443#M112006</guid>
      <dc:creator>LengYi</dc:creator>
      <dc:date>2018-03-17T13:55:31Z</dc:date>
    </item>
    <item>
      <title>Re: please help me for macro to test multicollinearity</title>
      <link>https://communities.sas.com/t5/SAS-Programming/please-help-me-for-macro-to-test-multicollinearity/m-p/446461#M112014</link>
      <description>&lt;P&gt;You could re-write the macro as big loop, which has all of the Y variables as input. This seems to solve both of your questions. However, it may not be worth the work now that you have written the existing macro, re-writing the macro may simply be extra work for no benefit.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For example, something like this&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%macro vif_automated(targets=);
...
%mend;

%vif_automated(targets=ConcLoanc_M12_lg2 X_CBM_M12_lg4 C_CVM_Mg_lg1 ...)&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Note: the forum software has mangled the formatting of the SAS text above...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As a side issue, there are many different existing automated ways to deal with multicollinearity that are already built into SAS, such as PROC PLS, that are superior to the method you are creating.&lt;/P&gt;</description>
      <pubDate>Sat, 17 Mar 2018 22:27:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/please-help-me-for-macro-to-test-multicollinearity/m-p/446461#M112014</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2018-03-17T22:27:06Z</dc:date>
    </item>
    <item>
      <title>Re: please help me for macro to test multicollinearity</title>
      <link>https://communities.sas.com/t5/SAS-Programming/please-help-me-for-macro-to-test-multicollinearity/m-p/587743#M167887</link>
      <description>&lt;P&gt;/* Author PRAKASH HULLATHI */&lt;BR /&gt;/*CREATING THE DATA FOR MULTICOLLINEARITY*/&lt;/P&gt;&lt;P&gt;%MACRO REMOVE_MULTICOLLINEARITY(DATASET=,YVAR=,VIF_CUTOFF=);&lt;/P&gt;&lt;P&gt;/*taking output of all variables*/&lt;BR /&gt;PROC CONTENTS DATA=&amp;amp;DATASET. VARNUM OUT=T;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;/*filter only numeric variables excluding dependent and date variables*/&lt;BR /&gt;DATA T1;&lt;BR /&gt;SET T;&lt;BR /&gt;KEEP NAME ;&lt;BR /&gt;WHERE TYPE=1 AND NAME NOT IN("&amp;amp;yvar.") and FORMAT not in('DATE') ;/* Remove target and date variables*/&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;/*creating macro for independent variables*/&lt;BR /&gt;PROC SQL NOPRINT;&lt;BR /&gt;SELECT NAME INTO : XVARS SEPARATED BY ' '&lt;BR /&gt;FROM T1;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;%PUT independent_variables=&amp;amp;XVARS;&lt;/P&gt;&lt;P&gt;/*running the regression model till independent variables vif&amp;lt; specified vif_cutoff*/&lt;BR /&gt;%DO %UNTIL (%SYSEVALF(&amp;amp;MAX_VIF.&amp;lt;=&amp;amp;VIF_CUTOFF.) );&lt;/P&gt;&lt;P&gt;/*taking the output of independent variables vif by removing the intercept*/&lt;BR /&gt;ODS OUTPUT PARAMETERESTIMATES=PAREST2;&lt;/P&gt;&lt;P&gt;PROC REG DATA=&amp;amp;DATASET. ;&lt;/P&gt;&lt;P&gt;MODEL &amp;amp;YVAR.= &amp;amp;XVARS. / VIF ;&lt;/P&gt;&lt;P&gt;RUN;&lt;/P&gt;&lt;P&gt;QUIT;&lt;/P&gt;&lt;P&gt;/*dropping the independent variables with missing vif value*/&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;DATA T11;&lt;BR /&gt;SET PAREST2;&lt;BR /&gt;IF VarianceInflation NOT IN(.) ;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;/*sorting the vif value by descending order*/&lt;BR /&gt;PROC SORT DATA=PAREST2 OUT=PAREST2_SORT ;&lt;BR /&gt;BY DESCENDING VarianceInflation;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;/*considering the highest vif value */&lt;BR /&gt;DATA PAREST2_SORT_2;&lt;BR /&gt;SET PAREST2_SORT;&lt;BR /&gt;IF _N_=1;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;/*creating the macro for highest vif value*/&lt;BR /&gt;PROC SQL NOPRINT;&lt;BR /&gt;SELECT VARIABLE INTO: REMOVE_VAR&lt;BR /&gt;FROM PAREST2_SORT_2;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;/*dropping the highest vif value variable*/&lt;/P&gt;&lt;P&gt;PROC SQL NOPRINT ;&lt;BR /&gt;SELECT Variable INTO: XVARS SEPARATED BY ' '&lt;BR /&gt;FROM T11&lt;BR /&gt;WHERE VARIABLE NOT IN("&amp;amp;REMOVE_VAR.","Intercept") ;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;/*getiing the highest vif value*/&lt;BR /&gt;PROC SQL NOPRINT;&lt;BR /&gt;SELECT MAX(VarianceInflation) INTO: MAX_VIF&lt;BR /&gt;FROM PAREST2;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;%PUT max_vif=&amp;amp;MAX_VIF. variable_removed=&amp;amp;REMOVE_VAR. ;&lt;/P&gt;&lt;P&gt;%END;&lt;/P&gt;&lt;P&gt;%MEND REMOVE_MULTICOLLINEARITY;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;%REMOVE_MULTICOLLINEARITY(DATASET=sashelp.cars,YVAR=MPG_City,VIF_CUTOFF=10)&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;/* after running the above sas macro code&lt;BR /&gt;for multicollinearity then run the below code */&lt;/P&gt;&lt;P&gt;/* final data set with no multicollinearity variables*/&lt;BR /&gt;data NO_MULTICOLLINEARITY;&lt;BR /&gt;SET PAREST2;&lt;BR /&gt;KEEP VARIABLE;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;PROC SQL NOPRINT;&lt;BR /&gt;SELECT VARIABLE INTO : XVARS_final SEPARATED BY ' '&lt;BR /&gt;FROM NO_MULTICOLLINEARITY&lt;BR /&gt;WHERE VARIABLE NOT IN("Intercept");&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;PROC REG DATA=SASHELP.CARS;&lt;BR /&gt;MODEL MPG_City=&amp;amp;XVARS_final./ VIF ;&lt;BR /&gt;RUN;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 15 Sep 2019 06:21:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/please-help-me-for-macro-to-test-multicollinearity/m-p/587743#M167887</guid>
      <dc:creator>phullathi</dc:creator>
      <dc:date>2019-09-15T06:21:44Z</dc:date>
    </item>
    <item>
      <title>Re: please help me for macro to test multicollinearity</title>
      <link>https://communities.sas.com/t5/SAS-Programming/please-help-me-for-macro-to-test-multicollinearity/m-p/588158#M168060</link>
      <description>&lt;P&gt;/* Author PRAKASH HULLATHI */&lt;BR /&gt;/*CREATING THE DATA FOR MULTICOLLINEARITY*/&lt;/P&gt;&lt;P&gt;%MACRO REMOVE_MULTICOLLINEARITY(DATASET=,YVAR=,VIF_CUTOFF=);&lt;/P&gt;&lt;P&gt;/*taking output of all variables*/&lt;BR /&gt;PROC CONTENTS DATA=&amp;amp;DATASET. VARNUM OUT=T;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;/*filter only numeric variables excluding dependent and date variables*/&lt;BR /&gt;DATA T1;&lt;BR /&gt;SET T;&lt;BR /&gt;KEEP NAME ;&lt;BR /&gt;WHERE TYPE=1 AND NAME NOT IN("&amp;amp;yvar.") and FORMAT not in('DATE') ;/* Remove target and date variables*/&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;/*creating macro for independent variables*/&lt;BR /&gt;PROC SQL NOPRINT;&lt;BR /&gt;SELECT NAME INTO : XVARS SEPARATED BY ' '&lt;BR /&gt;FROM T1;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;%PUT independent_variables=&amp;amp;XVARS;&lt;/P&gt;&lt;P&gt;/*running the regression model till independent variables vif&amp;lt; specified vif_cutoff*/&lt;BR /&gt;%DO %UNTIL (%SYSEVALF(&amp;amp;MAX_VIF.&amp;lt;=&amp;amp;VIF_CUTOFF.) );&lt;/P&gt;&lt;P&gt;/*taking the output of independent variables vif by removing the intercept*/&lt;BR /&gt;ODS OUTPUT PARAMETERESTIMATES=PAREST2;&lt;/P&gt;&lt;P&gt;PROC REG DATA=&amp;amp;DATASET. ;&lt;/P&gt;&lt;P&gt;MODEL &amp;amp;YVAR.= &amp;amp;XVARS. / VIF ;&lt;/P&gt;&lt;P&gt;RUN;&lt;/P&gt;&lt;P&gt;QUIT;&lt;/P&gt;&lt;P&gt;/*dropping the independent variables with missing vif value*/&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;DATA T11;&lt;BR /&gt;SET PAREST2;&lt;BR /&gt;IF VarianceInflation NOT IN(.) ;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;/*sorting the vif value by descending order*/&lt;BR /&gt;PROC SORT DATA=PAREST2 OUT=PAREST2_SORT ;&lt;BR /&gt;BY DESCENDING VarianceInflation;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;/*considering the highest vif value */&lt;BR /&gt;DATA PAREST2_SORT_2;&lt;BR /&gt;SET PAREST2_SORT;&lt;BR /&gt;IF _N_=1;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;/*creating the macro for highest vif value*/&lt;BR /&gt;PROC SQL NOPRINT;&lt;BR /&gt;SELECT VARIABLE INTO: REMOVE_VAR&lt;BR /&gt;FROM PAREST2_SORT_2;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;/*dropping the highest vif value variable*/&lt;/P&gt;&lt;P&gt;PROC SQL NOPRINT ;&lt;BR /&gt;SELECT Variable INTO: XVARS SEPARATED BY ' '&lt;BR /&gt;FROM T11&lt;BR /&gt;WHERE VARIABLE NOT IN("&amp;amp;REMOVE_VAR.","Intercept") ;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;/*getiing the highest vif value*/&lt;BR /&gt;PROC SQL NOPRINT;&lt;BR /&gt;SELECT MAX(VarianceInflation) INTO: MAX_VIF&lt;BR /&gt;FROM PAREST2;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;%PUT max_vif=&amp;amp;MAX_VIF. variable_removed=&amp;amp;REMOVE_VAR. ;&lt;/P&gt;&lt;P&gt;%END;&lt;/P&gt;&lt;P&gt;%MEND REMOVE_MULTICOLLINEARITY;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;%REMOVE_MULTICOLLINEARITY(DATASET=sashelp.cars,YVAR=MPG_City,VIF_CUTOFF=10)&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;/* after running the above sas macro code&lt;BR /&gt;for multicollinearity then run the below code */&lt;/P&gt;&lt;P&gt;/* final data set with no multicollinearity variables*/&lt;BR /&gt;data NO_MULTICOLLINEARITY;&lt;BR /&gt;SET PAREST2;&lt;BR /&gt;KEEP VARIABLE;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;PROC SQL NOPRINT;&lt;BR /&gt;SELECT VARIABLE INTO : XVARS_final SEPARATED BY ' '&lt;BR /&gt;FROM NO_MULTICOLLINEARITY&lt;BR /&gt;WHERE VARIABLE NOT IN("Intercept");&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;PROC REG DATA=SASHELP.CARS;&lt;BR /&gt;MODEL MPG_City=&amp;amp;XVARS_final./ VIF ;&lt;BR /&gt;RUN;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 15 Sep 2019 06:22:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/please-help-me-for-macro-to-test-multicollinearity/m-p/588158#M168060</guid>
      <dc:creator>phullathi</dc:creator>
      <dc:date>2019-09-15T06:22:07Z</dc:date>
    </item>
    <item>
      <title>Re: please help me for macro to test multicollinearity</title>
      <link>https://communities.sas.com/t5/SAS-Programming/please-help-me-for-macro-to-test-multicollinearity/m-p/588180#M168067</link>
      <description>&lt;P&gt;/* Author PRAKASH HULLATHI */&lt;BR /&gt;/*CREATING THE DATA FOR MULTICOLLINEARITY*/&lt;/P&gt;&lt;P&gt;%MACRO REMOVE_MULTICOLLINEARITY(DATASET=,YVAR=,VIF_CUTOFF=);&lt;/P&gt;&lt;P&gt;/*taking output of all variables*/&lt;BR /&gt;PROC CONTENTS DATA=&amp;amp;DATASET. VARNUM OUT=T;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;/*filter only numeric variables excluding dependent and date variables*/&lt;BR /&gt;DATA T1;&lt;BR /&gt;SET T;&lt;BR /&gt;KEEP NAME ;&lt;BR /&gt;WHERE TYPE=1 AND NAME NOT IN("&amp;amp;yvar.") and FORMAT not in('DATE') ;/* Remove target and date variables*/&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;/*creating macro for independent variables*/&lt;BR /&gt;PROC SQL NOPRINT;&lt;BR /&gt;SELECT NAME INTO : XVARS SEPARATED BY ' '&lt;BR /&gt;FROM T1;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;%PUT independent_variables=&amp;amp;XVARS;&lt;/P&gt;&lt;P&gt;/*running the regression model till independent variables vif&amp;lt; specified vif_cutoff*/&lt;BR /&gt;%DO %UNTIL (%SYSEVALF(&amp;amp;MAX_VIF.&amp;lt;=&amp;amp;VIF_CUTOFF.) );&lt;/P&gt;&lt;P&gt;/*taking the output of independent variables vif by removing the intercept*/&lt;BR /&gt;ODS OUTPUT PARAMETERESTIMATES=PAREST2;&lt;/P&gt;&lt;P&gt;PROC REG DATA=&amp;amp;DATASET. ;&lt;/P&gt;&lt;P&gt;MODEL &amp;amp;YVAR.= &amp;amp;XVARS. / VIF ;&lt;/P&gt;&lt;P&gt;RUN;&lt;/P&gt;&lt;P&gt;QUIT;&lt;/P&gt;&lt;P&gt;/*dropping the independent variables with missing vif value*/&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;DATA T11;&lt;BR /&gt;SET PAREST2;&lt;BR /&gt;IF VarianceInflation NOT IN(.) ;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;/*sorting the vif value by descending order*/&lt;BR /&gt;PROC SORT DATA=PAREST2 OUT=PAREST2_SORT ;&lt;BR /&gt;BY DESCENDING VarianceInflation;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;/*considering the highest vif value */&lt;BR /&gt;DATA PAREST2_SORT_2;&lt;BR /&gt;SET PAREST2_SORT;&lt;BR /&gt;IF _N_=1;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;/*creating the macro for highest vif value*/&lt;BR /&gt;PROC SQL NOPRINT;&lt;BR /&gt;SELECT VARIABLE INTO: REMOVE_VAR&lt;BR /&gt;FROM PAREST2_SORT_2;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;/*dropping the highest vif value variable*/&lt;/P&gt;&lt;P&gt;PROC SQL NOPRINT ;&lt;BR /&gt;SELECT Variable INTO: XVARS SEPARATED BY ' '&lt;BR /&gt;FROM T11&lt;BR /&gt;WHERE VARIABLE NOT IN("&amp;amp;REMOVE_VAR.","Intercept") ;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;/*getiing the highest vif value*/&lt;BR /&gt;PROC SQL NOPRINT;&lt;BR /&gt;SELECT MAX(VarianceInflation) INTO: MAX_VIF&lt;BR /&gt;FROM PAREST2;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;%PUT max_vif=&amp;amp;MAX_VIF. variable_removed=&amp;amp;REMOVE_VAR. ;&lt;/P&gt;&lt;P&gt;%END;&lt;/P&gt;&lt;P&gt;%MEND REMOVE_MULTICOLLINEARITY;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;%REMOVE_MULTICOLLINEARITY(DATASET=sashelp.cars,YVAR=MPG_City,VIF_CUTOFF=10)&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;/* after running the above sas macro code&lt;BR /&gt;for multicollinearity then run the below code */&lt;/P&gt;&lt;P&gt;/* final data set with no multicollinearity variables*/&lt;BR /&gt;data NO_MULTICOLLINEARITY;&lt;BR /&gt;SET PAREST2;&lt;BR /&gt;KEEP VARIABLE;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;PROC SQL NOPRINT;&lt;BR /&gt;SELECT VARIABLE INTO : XVARS_final SEPARATED BY ' '&lt;BR /&gt;FROM NO_MULTICOLLINEARITY&lt;BR /&gt;WHERE VARIABLE NOT IN("Intercept");&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;PROC REG DATA=SASHELP.CARS;&lt;BR /&gt;MODEL MPG_City=&amp;amp;XVARS_final./ VIF ;&lt;BR /&gt;RUN;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 15 Sep 2019 06:22:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/please-help-me-for-macro-to-test-multicollinearity/m-p/588180#M168067</guid>
      <dc:creator>phullathi</dc:creator>
      <dc:date>2019-09-15T06:22:57Z</dc:date>
    </item>
    <item>
      <title>Re: SAS AUTOMATED MACRO CODE FOR MULTICOLLINEARITY FINAL</title>
      <link>https://communities.sas.com/t5/SAS-Programming/please-help-me-for-macro-to-test-multicollinearity/m-p/588181#M168068</link>
      <description>&lt;P&gt;/* Author PRAKASH HULLATHI */&lt;BR /&gt;/*CREATING THE DATA FOR MULTICOLLINEARITY*/&lt;/P&gt;&lt;P&gt;%MACRO REMOVE_MULTICOLLINEARITY(DATASET=,YVAR=,VIF_CUTOFF=);&lt;/P&gt;&lt;P&gt;/*taking output of all variables*/&lt;BR /&gt;PROC CONTENTS DATA=&amp;amp;DATASET. VARNUM OUT=T;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;/*filter only numeric variables excluding dependent and date variables*/&lt;BR /&gt;DATA T1;&lt;BR /&gt;SET T;&lt;BR /&gt;KEEP NAME ;&lt;BR /&gt;WHERE TYPE=1 AND NAME NOT IN("&amp;amp;yvar.") and FORMAT not in('DATE') ;/* Remove target and date variables*/&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;/*creating macro for independent variables*/&lt;BR /&gt;PROC SQL NOPRINT;&lt;BR /&gt;SELECT NAME INTO : XVARS SEPARATED BY ' '&lt;BR /&gt;FROM T1;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;%PUT independent_variables=&amp;amp;XVARS;&lt;/P&gt;&lt;P&gt;/*running the regression model till independent variables vif&amp;lt; specified vif_cutoff*/&lt;BR /&gt;%DO %UNTIL (%SYSEVALF(&amp;amp;MAX_VIF.&amp;lt;=&amp;amp;VIF_CUTOFF.) );&lt;/P&gt;&lt;P&gt;/*taking the output of independent variables vif by removing the intercept*/&lt;BR /&gt;ODS OUTPUT PARAMETERESTIMATES=PAREST2;&lt;/P&gt;&lt;P&gt;PROC REG DATA=&amp;amp;DATASET. ;&lt;/P&gt;&lt;P&gt;MODEL &amp;amp;YVAR.= &amp;amp;XVARS. / VIF ;&lt;/P&gt;&lt;P&gt;RUN;&lt;/P&gt;&lt;P&gt;QUIT;&lt;/P&gt;&lt;P&gt;/*dropping the independent variables with missing vif value*/&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;DATA T11;&lt;BR /&gt;SET PAREST2;&lt;BR /&gt;IF VarianceInflation NOT IN(.) ;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;/*sorting the vif value by descending order*/&lt;BR /&gt;PROC SORT DATA=PAREST2 OUT=PAREST2_SORT ;&lt;BR /&gt;BY DESCENDING VarianceInflation;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;/*considering the highest vif value */&lt;BR /&gt;DATA PAREST2_SORT_2;&lt;BR /&gt;SET PAREST2_SORT;&lt;BR /&gt;IF _N_=1;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;/*creating the macro for highest vif value*/&lt;BR /&gt;PROC SQL NOPRINT;&lt;BR /&gt;SELECT VARIABLE INTO: REMOVE_VAR&lt;BR /&gt;FROM PAREST2_SORT_2;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;/*dropping the highest vif value variable*/&lt;/P&gt;&lt;P&gt;PROC SQL NOPRINT ;&lt;BR /&gt;SELECT Variable INTO: XVARS SEPARATED BY ' '&lt;BR /&gt;FROM T11&lt;BR /&gt;WHERE VARIABLE NOT IN("&amp;amp;REMOVE_VAR.","Intercept") ;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;/*getiing the highest vif value*/&lt;BR /&gt;PROC SQL NOPRINT;&lt;BR /&gt;SELECT MAX(VarianceInflation) INTO: MAX_VIF&lt;BR /&gt;FROM PAREST2;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;%PUT max_vif=&amp;amp;MAX_VIF. variable_removed=&amp;amp;REMOVE_VAR. ;&lt;/P&gt;&lt;P&gt;%END;&lt;/P&gt;&lt;P&gt;%MEND REMOVE_MULTICOLLINEARITY;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;%REMOVE_MULTICOLLINEARITY(DATASET=sashelp.cars,YVAR=MPG_City,VIF_CUTOFF=10)&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;/* after running the above sas macro code&lt;BR /&gt;for multicollinearity then run the below code */&lt;/P&gt;&lt;P&gt;/* final data set with no multicollinearity variables*/&lt;BR /&gt;data NO_MULTICOLLINEARITY;&lt;BR /&gt;SET PAREST2;&lt;BR /&gt;KEEP VARIABLE;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;PROC SQL NOPRINT;&lt;BR /&gt;SELECT VARIABLE INTO : XVARS_final SEPARATED BY ' '&lt;BR /&gt;FROM NO_MULTICOLLINEARITY&lt;BR /&gt;WHERE VARIABLE NOT IN("Intercept");&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;PROC REG DATA=SASHELP.CARS;&lt;BR /&gt;MODEL MPG_City=&amp;amp;XVARS_final./ VIF ;&lt;BR /&gt;RUN;&lt;BR /&gt;QUIT;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 12 Sep 2019 11:56:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/please-help-me-for-macro-to-test-multicollinearity/m-p/588181#M168068</guid>
      <dc:creator>phullathi</dc:creator>
      <dc:date>2019-09-12T11:56:24Z</dc:date>
    </item>
  </channel>
</rss>

