BrCa MD RAM Readme
ReadMe.fil 7/17/09
Documentation and user guide for a SAS macro to project for white women BrCa absolute
risk based on a RR model which includes % mammographic density, body weight and a
subset of the standard breast cancer relative risk covariates.
Relative risk covariates, 1-AR, composite breast cancer incidences, competing hazards
are described in "Projecting absolute invasive breast cancer risk in white women with
a model that includes mammographic density". JNCI 2006 98(17) 1215-26.
Handling of missing covariate values and covariate editing procedures follow NCI BrCa
Risk Assessment Tool (NCI BCRAT).
A simple 3 step example on the use of the SAS macro: "BrCa_MD_RAM"
(Br)east (Ca)ncer with (M)ammographic (D)ensity (R)isk (A)ssessment (M)acro
Step 1: the included sas program "BC_MD_example.sas" reads the supplied data file
"Sample.in", which contains the BrCa risk covarites and projection
age interval for 50 hypothetical women. It then saves a SAS system file
with name of "ExampleIn" to be used as input to the SAS macro "BrCa_MD_RAM":
data ExampleIn; *** name of the saved sas system file;
infile 'Sample.in'; *** sample RR covariate input file;
*** SAS variable names selected by user;
input InitalAge
ProjtnAge
PerCent_Den
Num_Rels
NBiop
AgeFstLive
Body_Weight;
Rec_Num = _n_;
run;
Step 2: the included sas program BCRAM_example.sas then runs the SAS macro
"BrCa_MD_RAM":
%include "BrCa_MD_RAM"; *** include the sas MACRO "BrCa_MD_RAM";
Involking the sas macro "BrCa_MD_RAM" to perform the BrCa projections.
The temporary sas input file is set to "ExampleIn".
The temporary sas output file is set to "ExampleOut".
The macro parameters T1, T2, PDensty, N_Rels, N_Biop, Age1st and
BdyWght point to their corresponding sas variables on the sas file
"ExampleIn", namely InitalAge, ProjtnAge, PerCent_Den, Num_Rels,
NBiop, AgeFstLive and Body_Weight.
The macro parameter AbsRsk points to the sas variable Absolute_Risk
which will be added to the output sas file "ExampleOut". The output
sas file will also contain all the variables on the input sas file.
Macro pointing SAS file name or
parameter to SAS variable name;
%BrCa_MD_RAM (In_File = ExampleIn ,
Out_File = ExampleOut ,
T1 = InitalAge ,
T2 = ProjtnAge ,
PDensty = PerCent_Den ,
N_Rels = Num_Rels ,
N_Biop = NBiop ,
Age1st = AgeFstLive ,
BdyWght = Body_Weight ,
AbsRsk = Absolute_Risk);
Step 3 It thens list the contents of the temporary output sas system file
"ExampleOut" which contains the projected absolute risk as well as the
relative risk covariate values. Note that any further processing
requiring the projected absolute risk, must be performed on the output
sas system file;
data ExampleOut;
set ExampleOut;
file print;
if (_N_ eq 1) then do;
put " Record % # # Age Body"
" (1-ar)RR (1-ar)RR Pattrn";
put " # T1 T2 Dens Rel Biop 1st Wght"
" Age<50 Age>50 AbsRsk #";
put " ";
end;
*** all variables below take on their SAS variable names, not
their macro names
see SAS variable names defined in Step 1;
if (Rec_Num le 100) then put
Rec_Num 7.0
InitalAge 6.1
ProjtnAge 6.1
PerCent_Den 7.1
Num_Rels 5.0
NBiop 6.0
AgeFstLive 5.0
Body_Weight 8.1
One_AR_RR1 10.4
One_AR_RR2 10.4
Absolute_Risk 12.6
PattrnNumber 8.0;
run;
Detailed description of the operation and output items from the SAS macro "BrCa_MD_RAM":
Input data:
----------
In_File= should "point" to a SAS data set containing all the required input data
items needed to perform risk projections, such as initial age, projection age, BrCa
relative risk covariates. See the paragraph "Input data items ... " below,
for a detailed description of all required data items.
Output data:
-----------
Out_File= should "point" to a SAS output data set which will contain the projected
absolute risk of BrCa as well as the original input data items.
Macro structure:
---------------
Macro Macro
name parameters "points" to SAS names
%macro BrCa_MD_RAM (In_File =, name of input sas data set
Out_File =, name of output sas data set
T1 =, initial age, age at beginning of
projection interval
T2 =, projection age, age at end of
projection interval
PDensty =, % mammographic density
N_Rels =, # 1st degree relatives with brca
N_Biop =, # biopsies performed
Age1st =, age at 1st live birth
BdyWght =, body weight in lbs
AbsRsk =); projected absolute risk of brca
appropriate sas file/sas variable names must be associated with each macro parameters
on the invocation of the sas macro "BrCa_MD_RAM".
For example coding "In_File = AARPin" tells the macro that the user created
sas file "AARPin" is to be used for input of variables. Similarly, coding
"N_Biop = Num_Biops", lets the macro know that the sas variable "Num_Biops" in the
sas input file "AARPin" contiains the count of the # of biopsies performed.
To involke the sas macro in your sas program, an #include statement must be coded in
your sas program.
For example:
the statement: %include "BrCa_MD_RAM"; points to the sas macro BrCa_MD_RAM
stored in your current directory
the statement: %include "c:\sas.macro\BrCa_MD_RAM"; points to the sas macro
BrCa_MD_RAM stored in the
directory c:\sas.macro
Input data items needed to project for BrCa absolute risk and consistency
requirements:
Macro
parameter Definition Valid values
T1 Initial age any real number T1 in [20,85]
T2 BrCa projection age any real number T2 such that T2 > T1
PDensty % mammographic density any real number in [0,100]
N_Rels # 1st degree relatives 0,1,2 ... 99=unk
with BrCa
N_Biop # of biopsies 0,1,2 ... 99=unk
Age1st Age at first live birth less than or equal to initial age.
98=nulliparous,
99=unk
BdyWght Body weight in lbs any positive real number
Recoding and checking of relative risk covariate values performed by the SAS macro:
raw value recoded to
PDensty: % mammographic density 0 0
( 0, 25) 1
[25, 50) 2
[50, 75) 3
[75,100] 4
N_Rels : # 1st degree rel with BrCa 0 or 99=unk 0
1 1
2,3,4 ... and not 99=unk 2
N_Biop : # biopsies 0 or 99=unk 0
1 or 1
2,3,4 ... and not 99=unk 2
Age1st : age at 1st live birth 19 and younger or 99=unk 0
20,21,22,23,24 1
25,26,27,28,29 or 98(nulliparous) 2
30,31,32 ... and not 98 and not 99 3
BdyWght: body weight in lbs ( 0,100] 0
(100,125] 1
(125,150] 2
(150,175] 3
(175,200] 4
(200, +] 5
In the above, note the liberal use of "open", "closed" interval limits notation.
Edit checking for relative risk covariates, PDensty,N_Rels,N_Biop,Age1st & BdyWght:
PDensty: % mammographic density must be between 0 and 100 inclusive.
no accomodating for unknown % density. unkown %density results in an
unknown absolute risk projection.
N_Rels : # of 1st degree relatives with BrCa must be 0,1,2... unk=99
N_Biop : # biopsies must be 0,1,2... unk=99
Age1st : age first live birth must be less than or equal to Initial age T1
nulliparous=98, unk=99
BdyWght: body weight must be a positive real number. no accomodation for
unknown body weight. unknown weight results in an unknown absolute risk.
Following is a listing of the sample raw input data set "Sample.in"
(column heading included for clarity):
Age
Inital Projtn PerCent_ Fst Body_
Rec_Num Age Age Den Num_Rels NBiop Live Weight
1 67 72 96 0 2 25 175
2 44 49 24 0 1 30 125
3 38 43 0 2 2 19 125
4 54 59 72 0 0 19 200
5 54 59 72 2 0 25 100
6 44 49 24 1 2 19 150
7 44 49 24 2 2 25 125
8 44 49 24 0 2 25 150
9 54 59 72 1 0 19 200
10 44 49 24 2 0 30 150
11 67 72 96 1 2 19 100
12 58 63 48 0 2 30 125
13 67 72 96 0 1 25 100
14 67 72 96 1 0 19 125
15 54 59 72 0 2 30 200
16 67 72 96 0 0 19 200
17 67 72 96 0 2 19 200
18 44 49 24 2 0 19 150
19 44 49 24 0 2 19 125
20 58 63 48 1 1 19 200
21 44 49 24 1 1 20 125
22 44 49 24 1 2 25 175
23 44 49 24 1 0 20 100
24 58 63 48 0 1 20 175
25 38 43 0 0 1 25 100
26 54 59 72 0 1 30 100
27 67 72 96 0 0 30 150
28 54 59 72 1 0 25 125
29 54 59 72 2 0 25 200
30 67 72 96 2 1 25 125
31 58 63 48 2 2 30 100
32 58 63 48 1 1 20 175
33 58 63 48 2 1 19 250
34 58 63 48 1 1 19 250
35 58 63 48 2 0 25 125
36 44 49 24 2 0 25 175
37 67 72 96 0 2 30 200
38 54 59 72 0 0 25 200
39 58 63 48 0 1 25 100
40 38 43 0 0 2 25 200
41 54 59 72 1 2 19 250
42 67 72 96 1 2 19 125
43 58 63 48 1 0 25 200
44 38 43 0 0 2 19 200
45 67 72 96 2 2 19 250
46 67 72 96 0 0 20 150
47 44 49 24 0 2 25 125
48 67 72 96 0 0 19 175
49 54 59 72 1 1 19 200
50 67 72 96 2 1 20 250
Following is a listing of the consequence of applying the macro to the input file
Note the raw values for the RR covaraties are listed and not the recoded values of
0,1,2,3,4 or 5
Record % # # Age Body (1-ar)RR (1-ar)RR Pattrn
# T1 T2 Dens Rel Biop 1st Wght Age<50 Age>50 AbsRsk #
1 67.0 72.0 96.0 0 2 25 175.0 3.6546 4.1787 0.092145 928
2 44.0 49.0 24.0 0 1 30 125.0 0.7936 0.9074 0.007421 260
3 38.0 43.0 0.0 2 2 19 125.0 1.1110 1.2703 0.005499 194
4 54.0 59.0 72.0 0 0 19 200.0 1.4190 1.6225 0.026740 653
5 54.0 59.0 72.0 2 0 25 100.0 1.9960 2.2822 0.037406 805
6 44.0 49.0 24.0 1 2 19 150.0 1.2335 1.4104 0.011511 339
7 44.0 49.0 24.0 2 2 25 125.0 2.1257 2.4305 0.019753 422
8 44.0 49.0 24.0 0 2 25 150.0 1.0861 1.2418 0.010142 279
9 54.0 59.0 72.0 1 0 19 200.0 2.2110 2.5281 0.041351 725
10 44.0 49.0 24.0 2 0 30 150.0 1.8498 2.1150 0.017211 381
11 67.0 72.0 96.0 1 2 19 100.0 2.1743 2.4861 0.055917 985
12 58.0 63.0 48.0 0 2 30 125.0 1.4302 1.6353 0.030560 500
13 67.0 72.0 96.0 0 1 25 100.0 1.4815 1.6940 0.038458 901
14 67.0 72.0 96.0 1 0 19 125.0 1.6153 1.8469 0.041855 938
15 54.0 59.0 72.0 0 2 30 200.0 3.8077 4.3537 0.070136 719
16 67.0 72.0 96.0 0 0 19 200.0 1.9789 2.2627 0.051028 869
17 67.0 72.0 96.0 0 2 19 200.0 3.3044 3.7783 0.083705 917
18 44.0 49.0 24.0 2 0 19 150.0 1.1511 1.3161 0.010745 363
19 44.0 49.0 24.0 0 2 19 125.0 0.6381 0.7297 0.005972 266
20 58.0 63.0 48.0 1 1 19 200.0 2.0486 2.3424 0.043481 533
21 44.0 49.0 24.0 1 1 20 125.0 0.9013 1.0306 0.008424 320
22 44.0 49.0 24.0 1 2 25 175.0 2.0994 2.4004 0.019511 352
23 44.0 49.0 24.0 1 0 20 100.0 0.5623 0.6429 0.005264 295
24 58.0 63.0 48.0 0 1 20 175.0 1.2414 1.4194 0.026581 466
25 38.0 43.0 0.0 0 1 25 100.0 0.3916 0.4478 0.001942 37
26 54.0 59.0 72.0 0 1 30 100.0 1.2443 1.4227 0.023487 691
27 67.0 72.0 96.0 0 0 30 150.0 2.0666 2.3630 0.053225 885
28 54.0 59.0 72.0 1 0 25 125.0 1.5891 1.8169 0.029896 734
29 54.0 59.0 72.0 2 0 25 200.0 4.7268 5.4046 0.086309 809
30 67.0 72.0 96.0 2 1 25 125.0 4.4622 5.1021 0.111303 1046
31 58.0 63.0 48.0 2 2 30 100.0 2.7992 3.2006 0.058928 643
32 58.0 63.0 48.0 1 1 20 175.0 1.9344 2.2118 0.041106 538
33 58.0 63.0 48.0 2 1 19 250.0 3.9599 4.5278 0.082322 606
34 58.0 63.0 48.0 1 1 19 250.0 2.5414 2.9058 0.053650 534
35 58.0 63.0 48.0 2 0 25 125.0 1.7754 2.0300 0.037794 590
36 44.0 49.0 24.0 2 0 25 175.0 1.9590 2.2400 0.018219 376
37 67.0 72.0 96.0 0 2 30 200.0 5.3103 6.0718 0.130975 935
38 54.0 59.0 72.0 0 0 25 200.0 1.9468 2.2260 0.036501 665
39 58.0 63.0 48.0 0 1 25 100.0 0.7617 0.8709 0.016395 469
40 38.0 43.0 0.0 0 2 25 200.0 1.1984 1.3703 0.005930 65
41 54.0 59.0 72.0 1 2 19 250.0 4.5799 5.2367 0.083744 774
42 67.0 72.0 96.0 1 2 19 125.0 2.6972 3.0840 0.068881 986
43 58.0 63.0 48.0 1 0 25 200.0 2.1751 2.4870 0.046102 521
44 38.0 43.0 0.0 0 2 19 200.0 0.8735 0.9988 0.004326 53
45 67.0 72.0 96.0 2 2 19 250.0 9.9526 11.3798 0.231001 1062
46 67.0 72.0 96.0 0 0 20 150.0 1.5063 1.7223 0.039088 873
47 44.0 49.0 24.0 0 2 25 125.0 0.8755 1.0011 0.008184 278
48 67.0 72.0 96.0 0 0 19 175.0 1.5953 1.8240 0.041347 868
49 54.0 59.0 72.0 1 1 19 200.0 2.8571 3.2668 0.053105 749
50 67.0 72.0 96.0 2 1 20 250.0 9.0215 10.3152 0.211935 1044
After the absolute risks have been generated, descriptive statistics by applying PROC
MEANS to the quantities Error_Ind, AbsRsk, One_AR_RR1 and One_AR_RR2 is performed. When
the mean and standard deviation for the variable "Error_Ind" is 0, implies that no
errors have not been found. Otherwise when the mean and std for "Error_Ind" is not 0,
implies that errors have been found. When errors are found, the # of records with errors
is the count asscociated with "AbsRsk" listed under NMiss (# of missing). Furthermore, a
listing file for erroronious records follows the PROC Means output. For example:
10:52 Wednesday, July 15, 2009
BrCa_MD_RAM, sas macro to project for BrCa absolute risk
Quick check for errornous records on input file
IF MEAN OF 'Error_Ind' EQUALS 0, ERROR FREE. ERROR LISTING BELOW WILL BE EMPTY.
IF MEAN OF 'Error_Ind' IS NOT 0, ERRORS EXISTS. CHECK ERROR LISTING BELOW.
(# of records with errors is the # listed under the NMiss column in the 'AbsRsk' line)
The MEANS Procedure
N
Variable Label Mean Std Dev N Miss
--------------------------------------------------------------------------------------------------
Error_Ind If mean not 0, implies ERROR in file -----> 0.00000 0.00000 50 0
Absolute_Risk Abs risk of BrCa in age interval [T1,T2) 0.04673 0.04672 50 0
One_AR_RR1 (1-AR)*RelRsk age lt 50 2.33432 1.87141 50 0
One_AR_RR2 (1-AR)*RelRsk age ge 50 2.66907 2.13977 50 0
--------------------------------------------------------------------------------------------------
BC_MD_example.sas, example sas program using sas macro BrCa_MD_RAM 4
10:52 Wednesday, July 15, 2009
BrCa_MD_RAM, sas macro to project for BrCa absolute risk
Error listing for the input file
Record % # # Age Body (1-ar)RR (1-ar)RR Patrn
# T1 T2 Dens Rel Biop 1st Wght Age<50 Age>50 AbsRsk #
No errors detected for initial age, projection age and relative risk covaraites
-------------------------------------------------------------------------------
Statistical issues should be addressed to: Dr. Mitchell Gail gailm@exchange.nih.gov
Technical details should be addressed to: Mr. David Pee peed@imsweb.com