Hello,
I am attempting to calculate participants' cardiovascular risk using a macro I found in a published paper. It requires common variables like blood pressure, age, sex, etc .
The macro works when I call it and reference specific values for each variable, as shown below. However, I would like to use it to calculate the risk score for thousands of participants (and not have to do each by hand) and eventually have it exported to a new dataset (still working on this also).
Is there any way to transform it from requiring values to referencing variables? I tried using %let and removing the = in the macro line, but neither were successful ("ERROR: Variable age is uninitialized")
Thanks in advance!
%MACRO PCE_RISK(AGE=, SEX=, TCHOL=, HDL=, SBP=, HTN=, SMK=, DIA=);
DATA RISK;
SCORE = (&SEX=0)*( -29.799*LOG(&AGE) +4.884*(LOG(&AGE)**2)
+13.540*LOG(&TCHOL) -3.114*LOG(&AGE)*LOG(&TCHOL)
-13.578*LOG(&HDL) +3.149*LOG(&AGE)*LOG(&HDL)
+(2.019*(&HTN=1)+1.957*(&HTN=0))*LOG(&SBP)
+7.574*(&SMK=1)-1.665*LOG(&AGE)*(&SMK=1)
+0.661*(&DIA=1))+
(&SEX=1)*( +12.344*LOG(&AGE)+ 0*(LOG(&AGE)**2)
+11.853*LOG(&TCHOL)-2.664*LOG(&AGE)*LOG(&TCHOL)
-7.990*LOG(&HDL)+1.769*LOG(&AGE)*LOG(&HDL)
+(1.797*(&HTN=1)+1.764*(&HTN=0))*LOG(&SBP)
+7.837*(&SMK=1)-1.795*LOG(&AGE)*(&SMK=1)
+0.658*(&DIA=1));
RISK = 100*(1 - (&SEX=0)*(0.96652**EXP(SCORE+29.1817)) - (&SEX=1)*(0.91436**EXP(SCORE-61.1816)) );
RUN;
PROC PRINT DATA=RISKWHITE; RUN; %MEND;
%PCE_RISK(AGE=55, SEX=0, TCHOL=200, HDL=60, SBP=130, HTN=1, SMK=0, DIA=1); run;
... View more