/* Baseline values */ brisk = (( base * cf1 * cr * ef * ed) / ( bw * lt * cf2)) * sf;

/* Treatment values */ risk1 = (( treat1 * cf1 * cr * ef * ed) / ( bw * lt * cf2)) * sf;

risk2 = (( treat2 * cf1 * cr * ef * ed) / ( bw * lt * cf2)) * sf; run;

/*****************************************************************************/ /* Sum up the risks over the pollutants by reach. */ /* Keep the reach statictics */ /*****************************************************************************/

proc sql;

create table sumrsk as select reachnmb, sum( brisk) as rsk_ b , sum( risk1) as rsk_ 1, 95 95 sum( risk2) as rsk_ 2 from canc2 group by reachnmb order by reachnmb; quit;

/*****************************************************************************/ /* Print out average lifetime risk */ /*****************************************************************************/

proc means data= sumrsk; title3 ' Average Lifetime Cancer Risk'; quit;

data canc2a; merge canc2 sumrsk; by reachnmb;

lt = 70; /* lifetime*/

/* calc cancer cases */ canc_ b = ( brisk * pop) / lt; canc_ 1 = ( risk1 * pop) / lt; canc_ 2 = ( risk2 * pop) / lt;

if dropobs = 1 then do; canc_ b = 0; canc_ 1 = 0; canc_ 2 = 0; end;

totpop = pop;

format brisk risk1 risk2 e12.;

label canc_ b = ' Cancer cases ( BL)' canc_ 1 = ' Cancer cases ( Opt 1)' canc_ 2 = ' Cancer cases ( Opt 2)' totpop = ' Total Exposed Population';

if canc_ b > 0.65 then delete; /* Drop large cancer cases */

/*****************************************************************************/ /* NOTE: The code above used to read ' if canc_ b > 1 then delete' Changed on */ /* April 10, 2002 by Kunal Sharma. This was done to ensure that two */ /* records that were previosuly being dropped are still excluded after */ /* populations have been reduced based on the number of intake structures */ /* used by each public water supply system. */ /*****************************************************************************/ /*****************************************************************************/ /* NOTE: The sample weight and canc_ b fixes affect only the estimates for */ 96 96 /* CAS = 62759, which is Nitrosodimethylamine, N, a highly cancerous */ /* material when taken orally with water. However, the results when using */ /* the extreme sample weights and large cancer case obs are not */ /* realistic. */ /*****************************************************************************/

run;

/*****************************************************************************/ /* Determine the exposed population and sample weight */ /*****************************************************************************/

proc sql;

create table smplpop as select reachnmb, avg( totpop) as pop, avg( smplwt) as samplwt from canc2a group by reachnmb order by reachnmb; quit;

proc means data= canc2a sum; weight smplwt; var canc_ b canc_ 1 canc_ 2; title3 ' Cancer Case estimates'; quit;

proc means data= smplpop sum; weight samplwt; var pop; title3 ' Cancer Exposed Ohio Population'; quit;

/*****************************************************************************/ /* Calculate decrease in cancer cases under the options and the monetized */ /* benefit based on the value of a statistical life ( in $ 2001) */ /* */ /* mid value of statistical life in $ 2001 is $ 6.5 million */ /* */ /* KUNAL SHARMA ( 03.20.02)  Mid Value Has Changed. See Below. */ /* STUART SMITH ( 07.11.02)  Mid Value Changed to $ 2001 */ /*****************************************************************************/

data cancdiff; set canc2a;

diff1 = canc_ b  canc_ 1; diff2 = canc_ b  canc_ 2;

b1_ lw = diff1* 2500000; b1_ hg = diff1* 13600000; mid1 = diff1* 6500000; 97 97 b2_ lw = diff2* 2500000; b2_ hg = diff2* 13600000; mid2 = diff2* 6500000;

run;

proc means sum; weight smplwt; var diff1 diff2 mid1 mid2; title3 ' Monetized Benefits ($ 2001)'; label diff1 = ' Avoided Cases ( Opt1)' diff2 = ' Avoided Cases ( Opt2)' mid1 = ' Mid Benefits ( Opt1)' mid2 = ' Mid Benefits ( Opt2)'; quit;

proc sort; by casno; quit;

proc means sum; weight smplwt; by casno; var diff1 diff2 mid1 mid2; title3 ' Monetized Benefits ($ 2001) by Pollutant'; label diff1 = ' Avoided Cases ( Opt1)' diff2 = ' Avoided Cases ( Opt2)' mid1 = ' Mid Benefits ( Opt1)' mid2 = ' Mid Benefits ( Opt2)'; quit;

proc sql; create table bychems as select casno, sum( diff1) as diff1a, sum( diff2) as diff2a, sum( b1_ lw) as ben1low, sum( b1_ hg) as ben1hg, sum( b2_ lw) as ben2low, sum( b2_ hg) as ben2hg, sum( mid1) as midpt1, sum( mid2) as midpt2 from cancdiff group by casno order by casno;

create table bychemn as select casno, sum( diff1* smplwt) as diff1a, sum( diff2* smplwt) as diff2a, sum( b1_ lw* smplwt) as ben1low, sum( b1_ hg* smplwt) as ben1hg, sum( b2_ lw* smplwt) as ben2low, sum( b2_ hg* smplwt) as ben2hg, sum( mid1* smplwt) as midpt1, sum( mid2* smplwt) as midpt2 from cancdiff group by casno order by casno; quit;

proc print data= bychemn; var casno diff1a diff2a midpt1 midpt2; label casno = ' Chemical CAS Number' 98 98 diff1a = ' Avoided Cases ( opt1)' diff2a = ' Avoided Cases ( opt2)' midpt1 = ' Midpoint Benefits ( opt1)' midpt2 = ' Midpoint Benefits ( opt2)'; title3 ' Benefits by Chemical Casno ($ 2001)'; quit;

/*****************************************************************************/ /* END MAIN PROGRAM CODE */ /*****************************************************************************/ 99 99 Program Output 100 100 MPM Ohio CS Benefits ( Opt1= Final No GMs, Opt2= none) 29NOV02 Drinking Water Cancer ( Sub 6) 13: 03 Friday, November 29, 2002 Average Lifetime Cancer Risk The MEANS Procedure Variable N Mean Std Dev Minimum Maximum                                                                                reachnmb 269 4742847484 447144365 4100001001 5140101002 rsk_ b 269 6.1656191E 7 5.0390421E 6 2.752697E 17 0.000073563 rsk_ 1 269 6.1656173E 7 5.0390418E 6 2.752697E 17 0.000073563 rsk_ 2 269 0 0 0 0                                                                                MPM Ohio CS Benefits ( Opt1= Final No GMs, Opt2= none) 29NOV02 Drinking Water Cancer ( Sub 6) 13: 03 Friday, November 29, 2002 Cancer Case estimates The MEANS Procedure Variable Label Sum                                                  canc_ b Cancer cases ( BL) 0.1026421 canc_ 1 Cancer cases ( Opt 1) 0.1026420 canc_ 2 Cancer cases ( Opt 2) 0                                                  MPM Ohio CS Benefits ( Opt1= Final No GMs, Opt2= none) 29NOV02 Drinking Water Cancer ( Sub 6) 13: 03 Friday, November 29, 2002 Cancer Exposed Ohio Population The MEANS Procedure Analysis Variable : pop Sum              7655812.34              MPM Ohio CS Benefits ( Opt1= Final No GMs, Opt2= none) 29NOV02 Drinking Water Cancer ( Sub 6) 13: 03 Friday, November 29, 2002 Monetized Benefits ($ 2001)

The MEANS Procedure Variable Label Sum                                                  diff1 Avoided Cases ( Opt1) 1.0413375E 7 diff2 Avoided Cases ( Opt2) 0.1026421 mid1 Mid Benefits ( Opt1) 0.6768694 mid2 Mid Benefits ( Opt2) 667173.76                                                  MPM Ohio CS Benefits ( Opt1= Final No GMs, Opt2= none) 29NOV02 Drinking Water Cancer ( Sub 6) 13: 03 Friday, November 29, 2002 Monetized Benefits ($ 2001) by Pollutant  CASNO= 123911

The MEANS Procedure Variable Label Sum                                                  diff1 Avoided Cases ( Opt1) 6.9683791E 8 diff2 Avoided Cases ( Opt2) 0.000012583 mid1 Mid Benefits ( Opt1) 0.4529446 mid2 Mid Benefits ( Opt2) 81.7865005                                                   CASNO= 62533

Variable Label Sum 101 101                                                  diff1 Avoided Cases ( Opt1) 1.8162008E 8 diff2 Avoided Cases ( Opt2) 1.2854277E 7 mid1 Mid Benefits ( Opt1) 0.1180531 mid2 Mid Benefits ( Opt2) 0.8355280                                                   CASNO= 62759

Variable Label Sum                                                  diff1 Avoided Cases ( Opt1) 0 diff2 Avoided Cases ( Opt2) 0.1026288 mid1 Mid Benefits ( Opt1) 0 mid2 Mid Benefits ( Opt2) 667087.46                                                   CASNO= 75003

Variable Label Sum                                                  diff1 Avoided Cases ( Opt1) 1.8720088E 9 diff2 Avoided Cases ( Opt2) 2.517909E 7 mid1 Mid Benefits ( Opt1) 0.0121681 mid2 Mid Benefits ( Opt2) 1.6366409                                                   CASNO= 78591

Variable Label Sum                                                  diff1 Avoided Cases ( Opt1) 1.3666778E 9 diff2 Avoided Cases ( Opt2) 4.5410785E 8 mid1 Mid Benefits ( Opt1) 0.0088834 mid2 Mid Benefits ( Opt2) 0.2951701                                                  MPM Ohio CS Benefits ( Opt1= Final No GMs, Opt2= none) 29NOV02 Drinking Water Cancer ( Sub 6) 13: 03 Friday, November 29, 2002 Monetized Benefits ($ 2001) by Pollutant  CASNO= 86306

The MEANS Procedure Variable Label Sum                                                  diff1 Avoided Cases ( Opt1) 1.3049262E 8 diff2 Avoided Cases ( Opt2) 2.6770383E 7 mid1 Mid Benefits ( Opt1) 0.0848202 mid2 Mid Benefits ( Opt2) 1.7400749                                                  MPM Ohio CS Benefits ( Opt1= Final No GMs, Opt2= none) 29NOV02 Drinking Water Cancer ( Sub 6) 13: 03 Friday, November 29, 2002 Benefits by Chemical Casno ($ 2001)

Obs CASNO diff1a diff2a midpt1 midpt2 1 123911 6.9684E 8 0.00001 0.45294 81.79 2 62533 1.8162E 8 0.00000 0.11805 0.84 3 62759 0 0.10263 0.00000 667087.46 4 75003 1.872E 9 0.00000 0.01217 1.64 5 78591 1.3667E 9 0.00000 0.00888 0.30 6 86306 1.3049E 8 0.00000 0.08482 1.74 102 102 Systemic Risk from Fish Consumption 103 103 " Create Datasets ( Sub1). sas" Generates a data set of pollutant loading events for each Ohio RF1 reach receiving MP& M discharges. See Estimating Ohio MP& M Discharge Loadings for program code. 104 104 " Human Health AWQC ( Sub 2). sas" Calculates in stream pollutant concentrations and generates a data set of pollutant concentrations for each RF1 reach. See Cancer from Fish Consumption for program code and output data sets. 105 105 " Systemic Cancer ( Sub 5). sas" Uses the data set of pollutant concentrations for each RF1 reach with pollutant specific reference doses to determine systemic risk. 106 106 /*****************************************************************************/ /* PROGRAM DOCUMENTATION */ /*****************************************************************************/ /* Program: Systemic Cancer ( Sub 5). sas */ /* Author: Stuart Smith */ /* Date: 04/ 21/ 2000 */ /* Updated: 11/ 12/ 2002 */ /*

*/ /* This program calculates systemic hazard scores for fish consumption. */ /*****************************************************************************/

/*****************************************************************************/ /* SET TITLE FOR SUBROUTINE */ /*****************************************************************************/

title2 ' Systemic Cancer ( Sub 5)';

/*****************************************************************************/ /* BEGIN MAIN PROGRAM CODE */ /*****************************************************************************/

/*****************************************************************************/ /* COUNTY LEVEL FISHING LICENSE DATA */ /*****************************************************************************/ /* Load fishing license data here. */ /* Sum over the types by county. */ /* Sum over the counties containing a ohio reach. */

/* Final data set contains reaches with the total possible number of */ /* affected anglers. This number will be multiplied by the ratio */ /* of reach length to total reach miles in affected counties to obtain */ /* an estimate of the number of affected anglers. */ /*****************************************************************************/

data licens; set ohio. fish_ lic;

fw_ lic = sum( fw_ res, fw_ reso, fw_ sres, fw_ smres, fw_ dres, trout, fw_ life, fw_ hunt1, fw_ 2hunt, fw_ hunts, fw_ hunt2, fw_ salt1, fw_ trout); sw_ lic = sum( fw_ salt1, sw_ res, sw_ dres);

if fw_ lic=. then fw_ lic= 0; if sw_ lic=. then sw_ lic= 0; cntyfip = fips; 107 107 keep cntyfip fw_ lic sw_ lic; run;

proc sort nodupkey data= licens; by cntyfip; quit;

/*****************************************************************************/ /* DETERMINE COUNTIES AFFECTED BY REACH */ /*****************************************************************************/

data facs; set ohio. fac_ info; run;

proc sort data= facs; by siteid; quit;

data cnty; set facs;

cntyfip1= stco1; cntyfip2= stco2; cntyfip3= stco3; cntyfip4= stco4; cntyfip5= stco5; cntyfip6= stco6; cntyfip7= stco7; cntyfip8= stco8;

keep reachnmb cntyfip1 cntyfip8; run;

proc sort nodupkey data= cnty; by reachnmb; quit;

proc transpose data= cnty out= cnty2; by reachnmb; var cntyfip1 cntyfip8; quit;

data cnty3; set cnty2; cntyfip = col1/ 1; if cntyfip=. then delete; keep reachnmb cntyfip; run;

proc sort data= cnty3; by cntyfip; quit;

/*****************************************************************************/ /* OBTAIN REACH MILES BY COUNTY */ /*****************************************************************************/

data rchmile; set ohio. us_ rchmi; cntyfip= fips; keep countymi cntyfip; run;

proc sort data= rchmile; by cntyfip; 108 108 /*****************************************************************************/ /* PULL TOGETHER OUR REACHES WITH ASSOCIATED COUNTIES */ /*****************************************************************************/

data tot_ mile; merge cnty3 rchmile; by cntyfip;

if reachnmb=. then delete; run;

proc sort data= tot_ mile; by reachnmb cntyfip; quit;

/*****************************************************************************/ /* SUM REACH MILES OVER COUNTIES CONTAINING THE SAME REACH */ /* FINISHED DATA SET CONTAINS TOTAL NUMBER OF REACH MILES IN */ /* COUNTIES CONTAINING A GIVEN REACH. BRING IN THE FISHING */ /* LICNESE DATA BY COUNTY. */ /*****************************************************************************/

proc sql;

create table miles as select tot_ mile. reachnmb, sum( countymi) as denom, min( segl) as leng, sum( fw_ lic) as fwlictot, sum( sw_ lic) as swlictot from tot_ mile, facs, licens where tot_ mile. reachnmb = facs. reachnmb and tot_ mile. cntyfip = licens. cntyfip group by tot_ mile. reachnmb order by tot_ mile. reachnmb; quit;

proc sort data= miles; by reachnmb; quit;

/*****************************************************************************/ /* Merge in Fishing Advisory Data with County mile data */ /*****************************************************************************/

proc sort data= ohio. fishadv1; by reachnmb; quit;

data miles2; merge miles ohio. fishadv1; by reachnmb;

/* Hard Wire Statewide Advisories */ if st = ' MI' or st = ' NJ' or st = ' RI' or st = ' MS' then advisory = ' yes';

/* Multiplier for 20% reduction in fishermen due to advisory */ if advisory = ' yes' or advisory = ' A yes' then advmult = 0.80; else advmult = 1.00; run; 109 109 /*****************************************************************************/ /* ESTIMATE SPORT AND SUBSISTANCE FISHING POPULATIONS */ /*****************************************************************************/

data pops; set miles2; by reachnmb; if first. reachnmb;

/* If missing the percentage of water miles for the given reach, use */ /* mean vale of 6% ( 0.06) */ /* Average family size is assumed to be 2.62 persons */ /* Subsistance population assumed to be 5% ( 0.05) of the sport pop. */

if leng=. then fwspt = fwlictot* 0.06* 2.62* advmult; else fwspt = fwlictot*( leng/ denom)* 2.62* advmult; fwsub = 0.05* fwspt;

if leng=. then swspt = swlictot* 0.06* 2.62* advmult; else swspt = swlictot*( leng/ denom)* 2.62* advmult; swsub = 0.05* swspt;

fwsptpop = round( fwspt); fwsubpop = round( fwsub); swsptpop = round( swspt); swsubpop = round( swsub);

keep reachnmb fwsptpop fwsubpop swsptpop swsubpop; run;

proc sort data= pops; by reachnmb; quit; proc sort data= rundat. cnc_ hh; by reachnmb; quit;

/*****************************************************************************/ /* MERGE CONCENTRATION DATA BY REACH WITH THE NUMBER OF SPORT AND */ /* SUBSISTENCE ANGLERS */ /*****************************************************************************/

data canc; merge rundat. cnc_ hh pops; by reachnmb;

if cnc_ base = . or cnc_ base = 0 then delete; if fwsptpop=. then delete; run;

proc sort data= canc; by reachnmb casno event_ wt; quit;

/*****************************************************************************/ /* BRING IN SLOPE FACTOR, REFERENCE DOSE, AND BIOCONCENTRATION FROM CHEMDATA */ /*****************************************************************************/ 110 110 proc sql;

create table canc1 as select reachnmb, canc. casno, cnc_ base as base, cnc_ trt1 as treat1, cnc_ trt2 as treat2, fwsptpop, fwsubpop, swsptpop, swsubpop, slope_ fa as sf, referenc as rfd, bioconce as bcfval, event_ wt as weight, liver, kidney, eyes, gastro, bodywght, central, mort, other from canc, ohio. chemdata where canc. casno = chemdata. casno order by reachnmb, canc. casno, weight; quit;

/*****************************************************************************/ /* ESTIMATE SYSTEMIC EQUATIONS AND CALCULATE CANCER RISK DUE TO FISH */ /* CONSUMPTION */ /*****************************************************************************/

data canc2; set canc1; if bcfval and rfd;

/* DEFINE CONSTANTS */

cf1 = 0.001; /* conversion milligrams per microgram */ cf2 = 365; /* conversion 365 days per year */ cr1 = 0.007; /* consumption rate 1 child : 7.27 ( rec.) grams/ day */ cr2 = 0.017; /* consumption rate 2 adult: 17.5 ( rec.) grams/ day */ cr3 = 0.059; /* consumption rate 3 child: 59.16 ( sub.) grams/ day*/ cr4 = 0.142; /* consumption rate 4 adult: 142.4 ( sub.) grams/ day*/ ef = 365; /* exposure frequency: 365 days per year */ ed1 = 18; /* exposure duration 1 child: 18 years ( rec.) */ ed2 = 52; /* exposure duration 2 adult: 52 years ( rec.) */ ed3 = 18; /* exposure duration 3 child: 18 years ( sub.) */ ed4 = 52; /* exposure duration 4 adult: 52 years ( sub.) */ bw1 = 30; /* body weight 1 child: 30 kg */ bw2 = 70; /* body weight 2 adult: 70 kg */ lt = 70; /* lifetime: 70 years */

/* CALCULATE SYSTEMIC EFFECTS */

/* base values */ bsptrisk = ((( base * cf1 * cr1 * bcfval * ef * ed1) / ( bw1 * lt * cf2)) + (( base * cf1 * cr2 * bcfval * ef * ed2) / ( bw2 * lt * cf2))) / rfd;

bsubrisk = ((( base * cf1 * cr3 * bcfval * ef * ed3) / ( bw1 * lt * cf2)) + (( base * cf1 * cr4 * bcfval * ef * ed4) / ( bw2 * lt * cf2))) / rfd;

/* treatment values */ sptrisk1 = ((( treat1 * cf1 * cr1 * bcfval * ef * ed1) / ( bw1 * lt * cf2)) + (( treat1 * cf1 * cr2 * bcfval * ef * ed2) / ( bw2 * lt * cf2))) / rfd; 111 111 subrisk1 = ((( treat1 * cf1 * cr3 * bcfval * ef * ed3) / ( bw1 * lt * cf2)) + (( treat1 * cf1 * cr4 * bcfval * ef * ed4) / ( bw2 * lt * cf2))) / rfd;

sptrisk2 = ((( treat2 * cf1 * cr1 * bcfval * ef * ed1) / ( bw1 * lt * cf2)) + (( treat2 * cf1 * cr2 * bcfval * ef * ed2) / ( bw2 * lt * cf2))) / rfd;

subrisk2 = ((( treat2 * cf1 * cr3 * bcfval * ef * ed3) / ( bw1 * lt * cf2)) + (( treat2 * cf1 * cr4 * bcfval * ef * ed4) / ( bw2 * lt * cf2))) / rfd;

sptpop = fwsptpop + swsptpop; subpop = fwsubpop + swsubpop;

format bsptrisk bsubrisk sptrisk1 subrisk1 sptrisk2 subrisk2 e12.; run;

data canc3; set canc2;

type1 = " Liver"; type2=" Kidney"; type3=" Eyes"; type4=" Gastrointenstinal"; type5=" Body weight"; type6=" Central Nervous System"; type7=" Mortality"; type8=" Other Systemic health";

array cats[ 8] liver kidney eyes gastro bodywght central mort other; array cat_ text[ 8] type1 type2 type3 type4 type5 type6 type7 type8;

do i = 1 to 8; spthaz_ b = bsptrisk* cats[ i]; subhaz_ b = bsubrisk* cats[ i]; spthaz_ 1 = sptrisk1* cats[ i]; subhaz_ 1 = subrisk1* cats[ i]; spthaz_ 2 = sptrisk2* cats[ i]; subhaz_ 2 = subrisk2* cats[ i]; hlth_ cat = cat_ text[ i]; output; end; run;

/*****************************************************************************/ /* Sum hazard scores by reach and event_ wt ( summing over all pollutants) */ /*****************************************************************************/

proc sql;

create table hazard_ a as select reachnmb, min( sptpop) as sptpopl, min( subpop) as subpopl, weight as wght, hlth_ cat, sum( spthaz_ b) as spthaz_ b, sum( subhaz_ b) as subhaz_ b, sum( spthaz_ 1) as spthaz_ 1, sum( subhaz_ 1) as subhaz_ 1, sum( spthaz_ 2) as spthaz_ 2, sum( subhaz_ 2) as subhaz_ 2 from canc3 group by reachnmb, weight, hlth_ cat order by reachnmb, wght, hlth_ cat; 112 112 create table hazard as select reachnmb, min( sptpopl) as sptpopl, min( subpopl) as subpopl, wght, max( spthaz_ b) as spthaz_ b, max( subhaz_ b) as subhaz_ b, max( spthaz_ 1) as spthaz_ 1, max( subhaz_ 1) as subhaz_ 1, max( spthaz_ 2) as spthaz_ 2, max( subhaz_ 2) as subhaz_ 2 from hazard_ a group by reachnmb, wght order by reachnmb, wght; quit;

data haz1; set hazard; format spthaz_ b subhaz_ b spthaz_ 1 subhaz_ 1 spthaz_ 2 subhaz_ 2 e12.; run;

/*****************************************************************************/ /* Keep hazard ratios for use in creating report tables */ /*****************************************************************************/

data rundat. hazrats; set haz1; run;

data overb; set haz1;

if spthaz_ b> 1 then sptb = 1; else sptb= 0; if subhaz_ b> 1 then subb = 1; else subb= 0; if spthaz_ 1> 1 then spt1 = 1; else spt1= 0; if subhaz_ 1> 1 then sub1 = 1; else sub1= 0; if spthaz_ 2> 1 then spt2 = 1; else spt2= 0; if subhaz_ 2> 1 then sub2 = 1; else sub2= 0; run;

proc means sum data= overb; weight wght; var sptb subb spt1 sub1 spt2 sub2 sptpopl subpopl; title3 ' Number of Ohio Reaches with Ratios > 1'; label sptb = ' Sport ( BL)' subb = ' Subsistence ( BL)' spt1 = ' Sport ( Opt 1)' sub1 = ' Subsistence ( Opt 1)' spt2 = ' Sport ( Opt 2)' sub2 = ' Subsistence ( Opt 2)' sptpopl = ' Exposed Sport Population' subpopl = ' Exposed Subsistence Population'; quit;

/*****************************************************************************/ /* END MAIN PROGRAM CODE */ 113 113 /*****************************************************************************/ 114 114 Program Output 115 115 MPM Ohio CS Benefits ( Opt1= Final No GMs, Opt2= none) 29NOV02 Systemic Cancer ( Sub 5) 10: 29 Friday, November 29, 2002 Number of Ohio Reaches with Ratios > 1 The MEANS Procedure Variable Label Sum                                                            sptb Sport ( BL) 1.0000000 subb Subsistence ( BL) 2.0000000 spt1 Sport ( Opt 1) 1.0000000 sub1 Subsistence ( Opt 1) 2.0000000 spt2 Sport ( Opt 2) 0 sub2 Subsistence ( Opt 2) 0 sptpopl Exposed Sport Population 119376.00 subpopl Exposed Subsistence Population 5970.00                                                            116 116 Systemic Risk from Drinking Water 117 117 " Create Revised Datasets for Brad  Final ( No GMs). sas" Generates a data set of pollutant loadings discharged to Ohio RF1 reaches from direct dischargers and POTWs ( with removals) for the water quality modeling program. See Cancer from Drinking Water for program code. 118 118 Water Quality Modeling Pollutant in stream concentrations on RF1 reaches containing drinking water intakes downstream from MP& M facilities and POTWs are estimated for six carcinogens not covered by EPA drinking water criteria. The water quality model used is the Risk Screening Environmental Indicators developed for the EPA OPPT ( http:// www. epa. gov/ opptintr/ env_ ind/ index. html). See DCN 37554. 119 119 " Systemic Cancer Assoc DW ( Sub 14). sas" Data from the water quality modeling is used to estimate systemic risk using pollutant specific reference doses. The overall hazard ratio for each RF1 reach is then estimated. 120 120 /*****************************************************************************/ /* PROGRAM DOCUMENTATION */ /*****************************************************************************/ /* Program: Systemic Cancer Assoc DW ( Sub 14). sas */ /* Author: Stuart Smith */ /* Date: 05/ 04/ 2000 */ /* Updated: 11/ 12/ 2002 */ /*

*/ /* This program calculates systemic hazard scores for drinking water */ /* consumption. Only reaches with intakes on them are evaluated. Downstream */ /* reaches are not included in the analysis. */ /*****************************************************************************/

/*****************************************************************************/ /* SET TITLE FOR SUBROUTINE */ /*****************************************************************************/

title2 ' Systemic Cancer Associated with DW ( Sub 14)';

/*****************************************************************************/ /* BEGIN MAIN PROGRAM CODE */ /*****************************************************************************/

/*****************************************************************************/ /* Load concentrations estimated using mean flow from decay model. */ /*****************************************************************************/

data brad; set rundat.& dwset; if intakect > 0;

weight = 1;

keep reachnmb intakect casno baseconc t1conc t2conc weight dwpop siteid; run;

proc sort data= brad; by reachnmb casno; quit;

/*****************************************************************************/ /* BRING IN SLOPE FACTOR, REFERENCE DOSE, AND BIOCONCENTRATION FROM CHEMDATA*/ /*****************************************************************************/

proc sql;

create table canc1 as 121 121 select reachnmb, brad. casno, baseconc as base, t1conc as treat1, t2conc as treat2, dwpop, slope_ fa as sf, referenc as rfd, bioconce as bcfval, weight, liver, kidney, eyes, gastro, bodywght, central, mort, other from brad, ohio. chemdata where brad. casno = chemdata. casno order by reachnmb, brad. casno, weight; quit;

/*****************************************************************************/ /* ESTIMATE SYSTEMIC EQUATIONS AND CALCULATE CANCER RISK DUE TO FISH */ /* CONSUMPTION */ /*****************************************************************************/

data canc2; set canc1; if rfd;

/* DEFINE CONSTANTS */

cf1 = 0.001; /* conversion milligrams per microgram */ cf2 = 365; /* conversion: day per year */ cr = 1.24; /* consumption rate: liters of water per day */ ef = 350; /* exposure frequency: 350 days per year */ ed = 70; /* exposure duration: 70 years */ bw = 70; /* body weight: 70 kg */ lt = 70; /* lifetime: 70 years */

/* CALCULATE SYSTEMIC EFFECTS */

/* Baseline values */ brisk = (( base * cf1 * cr * ef * ed) / ( bw * lt * cf2)) / rfd;

/* Treatment values */ risk1 = (( treat1 * cf1 * cr * ef * ed) / ( bw * lt * cf2)) / rfd;

risk2 = (( treat2 * cf1 * cr * ef * ed) / ( bw * lt * cf2)) / rfd;

totpop = dwpop;

format brisk risk1 risk2 e12.; run;

data canc3; set canc2;

type1 = " Liver"; type2=" Kidney"; type3=" Eyes"; type4=" Gastrointenstinal"; type5=" Body weight"; type6=" Central Nervous System"; type7=" Mortality"; type8=" Other Systemic health";

array cats[ 8] liver kidney eyes gastro bodywght central mort other; array cat_ text[ 8] type1 type2 type3 type4 type5 type6 type7 type8; 122 122 do i = 1 to 8; hazdb = brisk* cats[ i]; hazd1 = risk1* cats[ i]; hazd2 = risk2* cats[ i]; hlth_ cat = cat_ text[ i]; output; end; run;

/*****************************************************************************/ /* Sum hazard scores by reach and event_ wt ( summing over all pollutants) */ /*****************************************************************************/

proc sql;

create table hazard_ a as select reachnmb, avg( totpop) as pop, weight as wght, hlth_ cat, sum( hazdb) as haz_ b, sum( hazd1) as haz_ 1, sum( hazd2) as haz_ 2 from canc3 group by reachnmb, weight, hlth_ cat order by reachnmb, wght;

create table hazard as select reachnmb, min( pop) as pop, min( wght) as wght, max( haz_ b) as haz_ b, max( haz_ 1) as haz_ 1, max( haz_ 2) as haz_ 2 from hazard_ a group by reachnmb, wght order by reachnmb, wght; quit;

data haz1; set hazard; format haz_ b haz_ 1 haz_ 2 e12.; run;

/*****************************************************************************/ /* Keep hazard ratios */ /*****************************************************************************/

data rundat. dwhazrat; set haz1; run;

data overb; set haz1;

if haz_ b> 1 then ovrb = 1; else ovrb= 0; if haz_ 1> 1 then ovr1 = 1; else ovr1= 0; 123 123 if haz_ 2> 1 then ovr2 = 1; else ovr2= 0; run;

proc means sum data= overb; weight wght; var ovrb ovr1 ovr2; title3 ' Number of Ohio Reaches with Ratios > 1'; label ovrb = ' Baseline ( BL)' ovr1 = ' Option 1 ( Opt1)' ovr2 = ' Option 2 ( Opt2)'; quit;

/*****************************************************************************/ /* END MAIN PROGRAM CODE */ /*****************************************************************************/ 124 124 Program Output 125 125 MPM Ohio CS Benefits ( Opt1= Final No GMs, Opt2= none) 29NOV02 Systemic Cancer Associated with DW ( Sub 14) 10: 29 Friday, November 29, 2002 Number of Ohio Reaches with Ratios > 1 The MEANS Procedure Variable Label Sum                                             ovrb Baseline ( BL) 1.0000000 ovr1 Option 1 ( Opt1) 1.0000000 ovr2 Option 2 ( Opt2) 1.0000000                                             126 126 Lead Benefits for Adults 127 127 " Cancer fish ( Sub 4). sas" From the data set of pollutant concentrations for each RF1 reach, observations for in stream lead concentrations are outputed into a separate data set. See Cancer from Fish Consumption for program code. 128 128 " Lead Benefits ( Sub 12). sas" Using data from the lead specific data set, changes in blood lead levels are estimated and benefits calculated for reductions in cases of hypertension, CHD, brain infarctions, and mortality for recreational fishermen and their families. 129 129 /*****************************************************************************/ /* PROGRAM DOCUMENTATION */ /*****************************************************************************/ /* Program: Lead Benefits ( Sub 12)  New Output. sas */ /* Author: Abt Associates, Inc. Stuart Smith */ /* Date: 07/ 05/ 2000 */ /* Updated: 11/ 12/ 2002 */ /*

*/ /* This program estimates benefits from reduced consumption of fish tissue */ /* containing lead. Reductions in MP& M facility lead loadings result in */ /* lower probabilties of lead related illnesses. */ /*****************************************************************************/

/*****************************************************************************/ /* SET TITLE FOR SUBROUTINE */ /*****************************************************************************/

title2 ' Lead Related Benefits Recreational ( Sub 12)';

/*****************************************************************************/ /* BEGIN MAIN PROGRAM CODE */ /*****************************************************************************/

data lead; set rundat. lead;

/*****************************************************************************/ /* Combine the exposed populations recreational populations, fresh and */ /* saltwater */ /*****************************************************************************/

exppop = fwsptpop + swsptpop;

/*****************************************************************************/ /* Calculate the blood lead levels under the baseline and post compliance */ /* scenarios */ /*****************************************************************************/

PbB0m = 4.55; /* Typical PbB conc. in absence of fish cons. for men */ PbB0f = 3.45; /* Typical PbB conc. in absence of fish cons. for women */ bcf = 49; /* Bioconcentration factor for lead L/ KG */ bksf = 0.4; /* Biokinetic slope factor for lead */ ingm = 17.5; /* Average daily fish consumption ( g/ day) males age 15 44 */ ingf = 17.5; /* Average daily fish consumption ( g/ day) females age 15 44 */ ingm2 = 17.5; /* Average daily fish consumption ( g/ day) males over age 45 */ 130 130 ingf2 = 17.5; /* Average daily fish consumption ( g/ day) females over age 45*/ af = 0.03; /* Absorbtion factor */ ef = 365; /* Exposure Frequency */ at = 365; /* Average timing, or duration of exposure in days */ cf = 0.001; /* Conversion factor kg/ g */

/* Uses ingestion for males ages 15 44 */ PbB_ bm = PbB0m + (( cnc_ base* bcf* ingm* af* bksf* ef* cf)/ at); PbB_ 1m = PbB0m + (( cnc_ trt1* bcf* ingm* af* bksf* ef* cf)/ at); PbB_ 2m = PbB0m + (( cnc_ trt2* bcf* ingm* af* bksf* ef* cf)/ at);

/* Uses ingestion for males ages 45 and older */ PbB_ bme = PbB0m + (( cnc_ base* bcf* ingm2* af* bksf* ef* cf)/ at); PbB_ 1me = PbB0m + (( cnc_ trt1* bcf* ingm2* af* bksf* ef* cf)/ at); PbB_ 2me = PbB0m + (( cnc_ trt2* bcf* ingm2* af* bksf* ef* cf)/ at);

/* Uses ingestion for females ages 15 44 */ PbB_ bf = PbB0f + (( cnc_ base* bcf* ingf* af* bksf* ef* cf)/ at); PbB_ 1f = PbB0f + (( cnc_ trt1* bcf* ingf* af* bksf* ef* cf)/ at); PbB_ 2f = PbB0f + (( cnc_ trt2* bcf* ingf* af* bksf* ef* cf)/ at);

/* Uses ingestion for females ages 45 and older */ PbB_ bfe = PbB0f + (( cnc_ base* bcf* ingf2* af* bksf* ef* cf)/ at); PbB_ 1fe = PbB0f + (( cnc_ trt1* bcf* ingf2* af* bksf* ef* cf)/ at); PbB_ 2fe = PbB0f + (( cnc_ trt2* bcf* ingf2* af* bksf* ef* cf)/ at);

drop fwsptpop fwsubpop swsptpop swsubpop; run;

data men; set lead;

/* Set up some constants */ /* All percentages based on the 2000 Census numbers */

pctmale = 0.319518; /* Percentage of U. S. Pop. who are male, age 20 74 */ pctm4054 = 0.098405; /* Percentage of U. S. Pop. who are male, age 40 54 */ pctm4059 = 0.118945; /* Percentage of U. S. Pop. who are male, age 40 59 */ pctm4574 = 0.12933; /* Percentage of U. S. Pop. who are male, age 45 74 */ pctm5564 = 0.03829; /* Percentage of U. S. Pop. who are male, age 55 64 */ pctm6064 = 0.01775; /* Percentage of U. S. Pop. who are male, age 60 64 */ pctm6574 = 0.031427; /* Percentage of U. S. Pop. who are male, age 65 74 */

bbpm4054 = 79.9; /* Mean diastolic bp from NHANES III, males, age 40 54 */ bbpm4059 = 80.0; /* Mean diastolic bp from NHANES III, males, age 40 59 */ bbpm4574 = 78.8; /* Mean diastolic bp from NHANES III, males, age 45 74 */ bbpm5564 = 79.0; /* Mean diastolic bp from NHANES III, males, age 55 64 */ bbpm6064 = 77.8; /* Mean diastolic bp from NHANES III, males age 60 64 */ bbpm6574 = 76.4; /* Mean diastolic bp from NHANES III, males age 65 74 */

/*****************************************************************************/ /* Begin Benefits for Males */ 131 131 /*****************************************************************************/

/*****************************************************************************/ /* Calculate the change in the probability of hypertension */ /*****************************************************************************/

pr_ hyp1 = ( 1/( 1 + exp( 2.744  0.793* log( PbB_ bm))))  ( 1/( 1 + exp( 2.744  0.793* log( PbB_ 1m))));

pr_ hyp2 = ( 1/( 1 + exp( 2.744  0.793* log( PbB_ bm))))  ( 1/( 1 + exp( 2.744  0.793* log( PbB_ 2m))));

ben_ hyp1 = pr_ hyp1 * exppop * pctmale * 1141; ben_ hyp2 = pr_ hyp2 * exppop * pctmale * 1141; hyppop = exppop * pctmale; hyp_ red1 = pr_ hyp1 * exppop * pctmale; hyp_ red2 = pr_ hyp2 * exppop * pctmale;

/*****************************************************************************/ /* Calculate Benefits from Changes in CHD, non fatal cases only, which */ /* are 2/ 3 of the cases */ /*****************************************************************************/

dbpm1 = 1.4 * log( PbB_ bm/ PbB_ 1m); /* Change in bp under option 1 */ dbpm2 = 1.4 * log( PbB_ bm/ PbB_ 2m); /* Change in bp under option 2 */

dbpm1e = 1.4 * log( PbB_ bme/ PbB_ 1me); /* Change in bp under option 1 */ dbpm2e = 1.4 * log( PbB_ bme/ PbB_ 2me); /* Change in bp under option 2 */

/* Ages 40 59, change in the 10 year prob of occ. */ d1m4059 = bbpm4059  dbpm1; d2m4059 = bbpm4059  dbpm2;

pr1_ 4059 = ( 1/( 1 + exp( 4.996  0.030365* bbpm4059)))  ( 1/( 1 + exp( 4.996  0.030365* d1m4059)));

pr2_ 4059 = ( 1/( 1 + exp( 4.996  0.030365* bbpm4059)))  ( 1/( 1 + exp( 4.996  0.030365* d2m4059)));

/* Ages 60 64, change in the 2 year prob of occ. */ d1m6064 = bbpm6064  dbpm1e; d2m6064 = bbpm6064  dbpm2e;

pr1_ 6064 = ( 1/( 1 + exp( 5.19676  0.02351* bbpm6064)))  ( 1/( 1 + exp( 5.19676  0.02351* d1m6064)));

pr2_ 6064 = ( 1/( 1 + exp( 5.19676  0.02351* bbpm6064)))  ( 1/( 1 + exp( 5.19676  0.02351* d2m6064)));

/* Ages 65 74, change in the 2 year prob of occ. */ d1m6574 = bbpm6574  dbpm1e; d2m6574 = bbpm6574  dbpm2e; 132 132 pr1_ 6574 = ( 1/( 1 + exp( 4.90723  0.02031* bbpm6574)))  ( 1/( 1 + exp( 4.90723  0.02031* d1m6574)));

pr2_ 6574 = ( 1/( 1 + exp( 4.90723  0.02031* bbpm6574)))  ( 1/( 1 + exp( 4.90723  0.02031* d2m6574)));

b14059 = ( pr1_ 4059 * exppop * pctm4059 * 76347 * 0.66)/ 10; b24059 = ( pr2_ 4059 * exppop * pctm4059 * 76347 * 0.66)/ 10; b16064 = ( pr1_ 6064 * exppop * pctm6064 * 76347 * 0.66)/ 2; b26064 = ( pr2_ 6064 * exppop * pctm6064 * 76347 * 0.66)/ 2; b16574 = ( pr1_ 6574 * exppop * pctm6574 * 76347 * 0.66)/ 2; b26574 = ( pr2_ 6574 * exppop * pctm6574 * 76347 * 0.66)/ 2;

/*****************************************************************************/ /* Number of reduced cases */ /* */ /* Multiply by the 2/ 3 (. 66) and divide by the years of */ /* occurance associated with the probability to get cases */ /* for one year. */ /*****************************************************************************/

r14059 = ( pr1_ 4059 * exppop * pctm4059 * 0.66)/ 10; r24059 = ( pr2_ 4059 * exppop * pctm4059 * 0.66)/ 10; r16064 = ( pr1_ 6064 * exppop * pctm6064 * 0.66)/ 2; r26064 = ( pr2_ 6064 * exppop * pctm6064 * 0.66)/ 2; r16574 = ( pr1_ 6574 * exppop * pctm6574 * 0.66)/ 2; r26574 = ( pr2_ 6574 * exppop * pctm6574 * 0.66)/ 2;

/*****************************************************************************/ /* Calculate the exposed populations at each age group */ /*****************************************************************************/

popm4059 = exppop * pctm4059; popm6064 = exppop * pctm6064; popm6574 = exppop * pctm6574;

/*****************************************************************************/ /* Calculate Benefits from Reduced Cerebrovascular Accidents and Brain */ /* Infarctions, affects men aged 45 74 */ /* Non fatal only, which is 70% of all cases */ /*****************************************************************************/

/* Ages 45 74, change in the 2 year prob of occ. */ d1m4574 = bbpm4574  dbpm1e; d2m4574 = bbpm4574  dbpm2e;

pr1_ cba = ( 1/( 1 + exp( 8.58889  0.04066* bbpm4574)))  ( 1/( 1 + exp( 8.58889  0.04066* d1m4574)));

pr2_ cba = ( 1/( 1 + exp( 8.58889  0.04066* bbpm4574)))  ( 1/( 1 + exp( 8.58889  0.04066* d2m4574))); 133 133 pr1_ bi = ( 1/( 1 + exp( 9.9516  0.04840* bbpm4574)))  ( 1/( 1 + exp( 9.9516  0.04840* d1m4574)));

pr2_ bi = ( 1/( 1 + exp( 9.9516  0.04840* bbpm4574)))  ( 1/( 1 + exp( 9.9516  0.04840* d2m4574)));

/*****************************************************************************/ /* Number of reduced cases */ /* */ /* Multiply by the 70% (. 7) and divide by the years of */ /* occurance associated with the probability to get cases for one year. */ /*****************************************************************************/

b1_ cba = ( pr1_ cba * exppop * pctm4574 * 335135 * 0.7)/ 2; b2_ cba = ( pr2_ cba * exppop * pctm4574 * 335135 * 0.7)/ 2; b1_ bi = ( pr1_ bi * exppop * pctm4574 * 335135 * 0.7)/ 2; b2_ bi = ( pr2_ bi * exppop * pctm4574 * 335135 * 0.7)/ 2;

r1_ cba = ( pr1_ cba * exppop * pctm4574 * 0.7)/ 2; r2_ cba = ( pr2_ cba * exppop * pctm4574 * 0.7)/ 2; r1_ bi = ( pr1_ bi * exppop * pctm4574 * 0.7)/ 2; r2_ bi = ( pr2_ bi * exppop * pctm4574 * 0.7)/ 2;

/* Calculate the exposed population*/ popm4574 = exppop * pctm4574;

/*****************************************************************************/ /* Calculate Benefits from Premature Mortality */ /*****************************************************************************/

/* Ages 40 54, change in the 12 year prob of death */ d1m4054 = bbpm4054  dbpm1; d2m4054 = bbpm4054  dbpm2;

m1_ 4054 = ( 1/( 1 + exp( 5.3158  0.03516* bbpm4054)))  ( 1/( 1 + exp( 5.3158  0.03516* d1m4054)));

m2_ 4054 = ( 1/( 1 + exp( 5.3158  0.03516* bbpm4054)))  ( 1/( 1 + exp( 5.3158  0.03516* d2m4054)));

/* Ages 55 64, change in the 2 year prob of death */ d1m5564 = bbpm5564  dbpm1e; d2m5564 = bbpm5564  dbpm2e;

m1_ 5564 = ( 1/( 1 + exp( 4.89528  0.01866* bbpm5564)))  ( 1/( 1 + exp( 4.89528  0.01866* d1m5564)));

m2_ 5564 = ( 1/( 1 + exp( 4.89528  0.01866* bbpm5564)))  ( 1/( 1 + exp( 4.89528  0.01866* d2m5564))); 134 134 /* Ages 65 74, change in the 2 year prob of death */ d1m6574 = bbpm6574  dbpm1e; d2m6574 = bbpm6574  dbpm2e;

m1_ 6574 = ( 1/( 1 + exp( 3.05723  0.00547* bbpm6574)))  ( 1/( 1 + exp( 3.05723  0.00547* d1m6574)));

m2_ 6574 = ( 1/( 1 + exp( 3.05723  0.00547* bbpm6574)))  ( 1/( 1 + exp( 3.05723  0.00547* d2m6574)));

/*****************************************************************************/ /* Number of reduced cases and Benefits */ /*

*/ /* Divide by the years of occurance associated with the probability to get */ /* cases for one year. */ /*****************************************************************************/

m14054l = ( m1_ 4054 * exppop * pctm4054 * 2500000)/ 12; m24054l = ( m2_ 4054 * exppop * pctm4054 * 2500000)/ 12; m14054h = ( m1_ 4054 * exppop * pctm4054 * 13600000)/ 12; m24054h = ( m2_ 4054 * exppop * pctm4054 * 13600000)/ 12; mid40541 = ( m1_ 4054 * exppop * pctm4054 * 6500000)/ 12; mid40542 = ( m2_ 4054 * exppop * pctm4054 * 6500000)/ 12;

m15564l = ( m1_ 5564 * exppop * pctm5564 * 2500000)/ 2; m25564l = ( m2_ 5564 * exppop * pctm5564 * 2500000)/ 2; m15564h = ( m1_ 5564 * exppop * pctm5564 * 13600000)/ 2; m25564h = ( m2_ 5564 * exppop * pctm5564 * 13600000)/ 2; mid55641 = ( m1_ 5564 * exppop * pctm5564 * 6500000)/ 2; mid55642 = ( m2_ 5564 * exppop * pctm5564 * 6500000)/ 2;

m16574l = ( m1_ 6574 * exppop * pctm6574 * 2500000)/ 2; m26574l = ( m2_ 6574 * exppop * pctm6574 * 2500000)/ 2; m16574h = ( m1_ 6574 * exppop * pctm6574 * 13600000)/ 2; m26574h = ( m2_ 6574 * exppop * pctm6574 * 13600000)/ 2; mid65741 = ( m1_ 6574 * exppop * pctm6574 * 6500000)/ 2; mid65742 = ( m2_ 6574 * exppop * pctm6574 * 6500000)/ 2;

r14054l = ( m1_ 4054 * exppop * pctm4054)/ 12; r24054l = ( m2_ 4054 * exppop * pctm4054)/ 12; r14054h = ( m1_ 4054 * exppop * pctm4054)/ 12; r24054h = ( m2_ 4054 * exppop * pctm4054)/ 12; r15564l = ( m1_ 5564 * exppop * pctm5564)/ 2; r25564l = ( m2_ 5564 * exppop * pctm5564)/ 2; r15564h = ( m1_ 5564 * exppop * pctm5564)/ 2; r25564h = ( m2_ 5564 * exppop * pctm5564)/ 2; r16574l = ( m1_ 6574 * exppop * pctm6574)/ 2; r26574l = ( m2_ 6574 * exppop * pctm6574)/ 2; r16574h = ( m1_ 6574 * exppop * pctm6574)/ 2; r26574h = ( m2_ 6574 * exppop * pctm6574)/ 2; 135 135 /* Calculate the exposed populations */ popm4054 = exppop * pctm4054; popm5564 = exppop * pctm5564; run;

data women; set lead;

/* Set up some constants */ /* All percentages based on the 2000 Census numbers */ pctfem = 0.511735; /* Percentage of U. S. Pop. who are female */ pctf4574 = 0.143282; /* Percentage of U. S. Pop. who are female, age 45 74 */

bbpf4574 = 74.8; /* Mean diastolic bp from NHANES III, females age 45 74 */

/*****************************************************************************/ /* Begin Benefits for Females */ /*****************************************************************************/

/*****************************************************************************/ /* No dose response function for female hypertension */ /*****************************************************************************/

/*****************************************************************************/ /* Calculate Benefits from Changes in CHD, non fatal cases only which */ /* are 2/ 3 of the cases */ /*****************************************************************************/

dbpf1 = ( 0.6 * 1.4) * log( PbB_ bfe/ PbB_ 1fe); /* Change in bp under option 1 */ dbpf2 = ( 0.6 * 1.4) * log( PbB_ bfe/ PbB_ 2fe); /* Change in bp under option 2 */

/* Ages 45 74, change in the 2 year prob of occ. */ d1f4574 = bbpf4574  dbpf1; d2f4574 = bbpf4574  dbpf2;

pr1_ 4574 = ( 1/( 1 + exp( 6.9401  0.03072* bbpf4574)))  ( 1/( 1 + exp( 6.9401  0.03072* d1f4574)));

pr2_ 4574 = ( 1/( 1 + exp( 6.9401  0.03072* bbpf4574)))  ( 1/( 1 + exp( 6.9401  0.03072* d2f4574)));

b1fchd = ( pr1_ 4574 * exppop * pctf4574 * 76347 * 0.66)/ 2; b2fchd = ( pr2_ 4574 * exppop * pctf4574 * 76347 * 0.66)/ 2;

red_ chd1 = ( pr1_ 4574 * exppop * pctf4574 * 0.66)/ 2; red_ chd2 = ( pr2_ 4574 * exppop * pctf4574 * 0.66)/ 2;

popf4574 = exppop * pctf4574;

/*****************************************************************************/ 136 136 /* Calculate Benefits from Reduced Cerebrovascular Accidents and Brain */ /* Infarctions, affects women aged 45 74 */ /* Non fatal only which is 70% of all cases */ /*****************************************************************************/

/* Ages 45 74, change in the 2 year prob of occ. */

pr1f_ bi = ( 1/( 1 + exp( 10.6716  0.0544* bbpf4574)))  ( 1/( 1 + exp( 10.6716  0.0544* d1f4574)));

pr2f_ bi = ( 1/( 1 + exp( 10.6716  0.0544* bbpf4574)))  ( 1/( 1 + exp( 10.6716  0.0544* d2f4574)));

pr1f_ cba = ( 1/( 1 + exp( 9.07737  0.04287* bbpf4574)))  ( 1/( 1 + exp( 9.07737  0.04287* d1f4574)));

pr2f_ cba = ( 1/( 1 + exp( 9.07737  0.04287* bbpf4574)))  ( 1/( 1 + exp( 9.07737  0.04287* d2f4574)));

b1f_ cba = ( pr1f_ cba * exppop * pctf4574 * 251351 * 0.7)/ 2; b2f_ cba = ( pr2f_ cba * exppop * pctf4574 * 251351 * 0.7)/ 2; b1f_ bi = ( pr1f_ bi * exppop * pctf4574 * 251351 * 0.7)/ 2; b2f_ bi = ( pr2f_ bi * exppop * pctf4574 * 251351 * 0.7)/ 2;

r1f_ cba = ( pr1f_ cba * exppop * pctf4574 * 0.7)/ 2; r2f_ cba = ( pr2f_ cba * exppop * pctf4574 * 0.7)/ 2; r1f_ bi = ( pr1f_ bi * exppop * pctf4574 * 0.7)/ 2; r2f_ bi = ( pr2f_ bi * exppop * pctf4574 * 0.7)/ 2;

/* Calculate Benefits from Premature Mortality */

/* Ages 45 74, change in the 2 year prob of death */

m1_ 4574 = ( 1/( 1 + exp( 5.40374  0.01511* bbpf4574)))  ( 1/( 1 + exp( 5.40374  0.01511* d1f4574)));

m2_ 4574 = ( 1/( 1 + exp( 5.40374  0.01511* bbpf4574)))  ( 1/( 1 + exp( 5.40374  0.01511* d2f4574)));

m14574l = ( m1_ 4574 * exppop * pctf4574 * 2500000)/ 2; m24574l = ( m2_ 4574 * exppop * pctf4574 * 2500000)/ 2; m14574h = ( m1_ 4574 * exppop * pctf4574 * 13600000)/ 2; m24574h = ( m2_ 4574 * exppop * pctf4574 * 13600000)/ 2; mid45741 = ( m1_ 4574 * exppop * pctf4574 * 6500000)/ 2; mid45742 = ( m2_ 4574 * exppop * pctf4574 * 6500000)/ 2;

r14574l = ( m1_ 4574 * exppop * pctf4574)/ 2; r24574l = ( m2_ 4574 * exppop * pctf4574)/ 2; r14574h = ( m1_ 4574 * exppop * pctf4574)/ 2; r24574h = ( m2_ 4574 * exppop * pctf4574)/ 2; run; 137 137 /* Sum benefits and cases and print out results */

proc means sum data= men; weight event_ wt; var ben_ hyp1 ben_ hyp2 hyppop b14059 b24059 b16064 b26064 b16574 b26574 popm4059 popm6064 popm6574 b1_ cba b2_ cba b1_ bi b2_ bi popm4574 m14054l m14054h m24054l m24054h m15564l m15564h m25564l m25564h m16574l m16574h m26574l m26574h mid40541 mid40542 mid55641 mid55642 mid65741 mid65742 popm4054 popm5564 hyp_ red1 hyp_ red2 r14059 r24059 r16064 r26064 r16574 r26574 r1_ cba r2_ cba r1_ bi r2_ bi r14054l r24054l r15564l r25564l r16574l r26574l; output out = rundat. msptwght( drop = _ type_ _ freq_) sum = ben_ hyp1 ben_ hyp2 hyppop b14059 b24059 b16064 b26064 b16574 b26574 popm4059 popm6064 popm6574 b1_ cba b2_ cba b1_ bi b2_ bi popm4574 m14054l m14054h m24054l m24054h m15564l m15564h m25564l m25564h m16574l m16574h m26574l m26574h mid40541 mid40542 mid55641 mid55642 mid65741 mid65742 popm4054 popm5564 hyp_ red1 hyp_ red2 r14059 r24059 r16064 r26064 r16574 r26574 r1_ cba r2_ cba r1_ bi r2_ bi r14054l r24054l r15564l r25564l r16574l r26574l; title3 ' Mens Lead Related Benefits ($ 2001)'; quit;

/*****************************************************************************/ /* Macro for building an output table of lead benefits for males */ /*****************************************************************************/

% macro maleleadtable( tbl_ in=, tbl_ out=); data rundat.& tbl_ out ( keep= gender categ agecat type case1 ben1l ben1m ben1h case2 ben2l ben2m ben2h); set rundat.& tbl_ in;

length gender $ 50 categ $ 50 agecat $ 50 type $ 50;

array _ hyper[ 4] ben_ hyp1 ben_ hyp2 hyp_ red1 hyp_ red2; array _ chd[ 12] b14059 b24059 b16064 b26064 b16574 b26574 r14059 r24059 r16064 r26064 r16574 r26574; array _ cba[ 4] b1_ cba b2_ cba r1_ cba r2_ cba; array _ bi[ 4] b1_ bi b2_ bi r1_ bi r2_ bi; 138 138 array _ mort[ 24] m14054l mid40541 m14054h m24054l mid40542 m24054h m15564l mid55641 m15564h m25564l mid55642 m25564h m16574l mid65741 m16574h m26574l mid65742 m26574h r14054l r24054l r15564l r25564l r16574l r26574l; array ben[ 6] ben1l ben1m ben1h ben2l ben2m ben2h; array cases[ 2] case1 case2;

do i = 1 to 9; if i = 1 then do; ben[ 1] = _ hyper[ 1]; ben[ 2] = _ hyper[ 1]; ben[ 3] = _ hyper[ 1]; ben[ 4] = _ hyper[ 2]; ben[ 5] = _ hyper[ 2]; ben[ 6] = _ hyper[ 2]; cases[ 1] = _ hyper[ 3]; cases[ 2] = _ hyper[ 4]; categ = " Hypertension"; agecat = " All"; type = " Sport"; gender = " Male"; output; end; if i = 2 then do; ben[ 1] = _ chd[ 1]; ben[ 2] = _ chd[ 1]; ben[ 3] = _ chd[ 1]; ben[ 4] = _ chd[ 2]; ben[ 5] = _ chd[ 2]; ben[ 6] = _ chd[ 2]; cases[ 1] = _ chd[ 7]; cases[ 2] = _ chd[ 8]; categ = " CHD"; agecat = " Age 40 59"; type = " Sport"; gender = " Male"; output; end; if i = 3 then do; ben[ 1] = _ chd[ 3]; ben[ 2] = _ chd[ 3]; ben[ 3] = _ chd[ 3]; ben[ 4] = _ chd[ 4]; ben[ 5] = _ chd[ 4]; ben[ 6] = _ chd[ 4]; cases[ 1] = _ chd[ 9]; cases[ 2] = _ chd[ 10]; categ = " CHD"; agecat = " Age 60 64"; type = " Sport"; gender = " Male"; output; end; if i = 4 then do; ben[ 1] = _ chd[ 5]; ben[ 2] = _ chd[ 5]; ben[ 3] = _ chd[ 5]; ben[ 4] = _ chd[ 6]; ben[ 5] = _ chd[ 6]; ben[ 6] = _ chd[ 6]; cases[ 1] = _ chd[ 11]; cases[ 2] = _ chd[ 12]; categ = " CHD"; agecat = " Age 65 74"; type = " Sport"; gender = " Male"; output; end; if i = 5 then do; ben[ 1] = _ cba[ 1]; ben[ 2] = _ cba[ 1]; ben[ 3] = _ cba[ 1]; 139 139 ben[ 4] = _ cba[ 2]; ben[ 5] = _ cba[ 2]; ben[ 6] = _ cba[ 2]; cases[ 1] = _ cba[ 3]; cases[ 2] = _ cba[ 4]; categ = " CBA"; agecat = " All"; type = " Sport"; gender = " Male"; output; end; if i = 6 then do; ben[ 1] = _ bi[ 1]; ben[ 2] = _ bi[ 1]; ben[ 3] = _ bi[ 1]; ben[ 4] = _ bi[ 2]; ben[ 5] = _ bi[ 2]; ben[ 6] = _ bi[ 2]; cases[ 1] = _ bi[ 3]; cases[ 2] = _ bi[ 4]; categ = " BI"; agecat = " All"; type = " Sport"; gender = " Male"; output; end; if i = 7 then do; ben[ 1] = _ mort[ 1]; ben[ 2] = _ mort[ 2]; ben[ 3] = _ mort[ 3]; ben[ 4] = _ mort[ 4]; ben[ 5] = _ mort[ 5]; ben[ 6] = _ mort[ 6]; cases[ 1] = _ mort[ 19]; cases[ 2] = _ mort[ 20]; categ = " Mortality"; agecat = " Age 40 54"; type = " Sport"; gender = " Male"; output; end; if i = 8 then do; ben[ 1] = _ mort[ 7]; ben[ 2] = _ mort[ 8]; ben[ 3] = _ mort[ 9]; ben[ 4] = _ mort[ 10]; ben[ 5] = _ mort[ 11]; ben[ 6] = _ mort[ 12]; cases[ 1] = _ mort[ 21]; cases[ 2] = _ mort[ 22]; categ = " Mortality"; agecat = " Age 55 64"; type = " Sport"; gender = " Male"; output; end; if i = 9 then do; ben[ 1] = _ mort[ 13]; ben[ 2] = _ mort[ 14]; ben[ 3] = _ mort[ 15]; ben[ 4] = _ mort[ 16]; ben[ 5] = _ mort[ 17]; ben[ 6] = _ mort[ 18]; cases[ 1] = _ mort[ 23]; cases[ 2] = _ mort[ 24]; categ = " Mortality"; agecat = " Age 65 74"; type = " Sport"; gender = " Male"; output; end; end; run; % mend; 140 140 /*****************************************************************************/ /* Call macro to build male benefits table */ /*****************************************************************************/

% maleleadtable( tbl_ in= msptwght, tbl_ out= tblmswgt);

proc means sum data= women; weight event_ wt; var b1fchd b2fchd popf4574 b1f_ cba b2f_ cba b1f_ bi b2f_ bi m14574l m14574h m24574l m24574h mid45741 mid45742 red_ chd1 red_ chd2 r1f_ cba r2f_ cba r1f_ bi r2f_ bi r14574l r14574h r24574l r24574h; output out = rundat. fsptwght( drop = _ type_ _ freq_) sum = b1fchd b2fchd popf4574 b1f_ cba b2f_ cba b1f_ bi b2f_ bi m14574l m14574h m24574l m24574h mid45741 mid45742 red_ chd1 red_ chd2 r1f_ cba r2f_ cba r1f_ bi r2f_ bi r14574l r14574h r24574l r24574h; title3 ' Female Lead Related Benefits ($ 2001)'; quit;

/*****************************************************************************/ /* Macro for building an output table of lead benefits for females */ /*****************************************************************************/

% macro femaleleadtable( tbl_ in=, tbl_ out=); data rundat.& tbl_ out ( keep= gender categ agecat type case1 ben1l ben1m ben1h case2 ben2l ben2m ben2h); set rundat.& tbl_ in;

length gender $ 50 categ $ 50 agecat $ 50 type $ 50;

array _ chd[ 4] b1fchd b2fchd red_ chd1 red_ chd2; array _ cba[ 4] b1f_ cba b2f_ cba r1f_ cba r2f_ cba; array _ bi[ 4] b1f_ bi b2f_ bi r1f_ bi r2f_ bi; array _ mort[ 8] m14574l mid45741 m14574h m24574l mid45742 m24574h r14574l r24574l; array ben[ 6] ben1l ben1m ben1h ben2l ben2m ben2h; array cases[ 2] case1 case2;

do i = 1 to 4; if i = 1 then do; ben[ 1] = _ chd[ 1]; ben[ 2] = _ chd[ 1]; ben[ 3] = _ chd[ 1]; ben[ 4] = _ chd[ 2]; ben[ 5] = _ chd[ 2]; ben[ 6] = _ chd[ 2]; cases[ 1] = _ chd[ 3]; cases[ 2] = _ chd[ 4]; categ = " CHD"; agecat = " All"; type = " Sport"; gender = " Female"; 141 141 output; end; if i = 2 then do; ben[ 1] = _ cba[ 1]; ben[ 2] = _ cba[ 1]; ben[ 3] = _ cba[ 1]; ben[ 4] = _ cba[ 2]; ben[ 5] = _ cba[ 2]; ben[ 6] = _ cba[ 2]; cases[ 1] = _ cba[ 3]; cases[ 2] = _ cba[ 4]; categ = " CBA"; agecat = " All"; type = " Sport"; gender = " Female"; output; end; if i = 3 then do; ben[ 1] = _ bi[ 1]; ben[ 2] = _ bi[ 1]; ben[ 3] = _ bi[ 1]; ben[ 4] = _ bi[ 2]; ben[ 5] = _ bi[ 2]; ben[ 6] = _ bi[ 2]; cases[ 1] = _ bi[ 3]; cases[ 2] = _ bi[ 4]; categ = " BI"; agecat = " All"; type = " Sport"; gender = " Female"; output; end; if i = 4 then do; ben[ 1] = _ mort[ 1]; ben[ 2] = _ mort[ 2]; ben[ 3] = _ mort[ 3]; ben[ 4] = _ mort[ 4]; ben[ 5] = _ mort[ 5]; ben[ 6] = _ mort[ 6]; cases[ 1] = _ mort[ 7]; cases[ 2] = _ mort[ 8]; categ = " Mortality"; agecat = " Age 45 74"; type = " Sport"; gender = " Female"; output; end; end; run; % mend;

/*****************************************************************************/ /* Call macro to build female benefits table */ /*****************************************************************************/

% femaleleadtable( tbl_ in= fsptwght, tbl_ out= tblfswgt);

data rundat. tblspt_ w; set rundat. tblmswgt rundat. tblfswgt; run;

proc means sum data= men; var event_ wt; title3 ' Number of Affected Ohio Reaches'; quit;

proc sql; 142 142 create table malepop as select sum( exppop) as tpops, sum( exppop* pctmale) as pm2074s, sum( exppop* pctm4574) as pm4574s, sum( exppop* event_ wt) as tpopn, sum( exppop* pctmale* event_ wt) as pm2074n, sum( exppop* pctm4574* event_ wt) as pm4574n from men;

create table fempop as select sum( exppop) as tpops, sum( exppop* pctf4574) as pf4574s, sum( exppop* event_ wt) as tpopn, sum( exppop* pctf4574* event_ wt) as pf4574n from women; quit;

proc print data= malepop; var tpopn pm2074n pm4574n; label tpopn = ' Total Exposed Pop ( male + fem)' pm2074n = ' Exposed Males Age 20 74' pm4574n = ' Exposed Males Age 45 74'; title3 ' Exposed Population  Males'; quit;

proc print data= fempop; var tpopn pf4574n; label tpopn = ' Total Exposed Pop ( male + fem)' pf4574n = ' Exposed Females Age 45 74'; title3 ' Exposed Population  Females'; quit;

/*****************************************************************************/ /* END MAIN PROGRAM CODE */ /*****************************************************************************/ 143 143 Program Output 144 144 MPM Ohio CS Benefits ( Opt1= Final No GMs, Opt2= none) 29NOV02 Lead Related Benefits Recreational ( Sub 12) 10: 29 Friday, November 29, 2002 Mens Lead Related Benefits ($ 2001)

The MEANS Procedure Variable Sum                          ben_ hyp1 8051.38 ben_ hyp2 31925.96 hyppop 3096.13 b14059 315.1183523 b24059 1241.20 b16064 88.5661310 b26064 348.8973914 b16574 137.0295229 b26574 539.8708025 popm4059 1152.58 popm6064 171.9975000 popm6574 304.5276300 b1_ cba 732.2457604 b2_ cba 2882.76 b1_ bi 412.4025971 b2_ bi 1623.13 popm4574 1253.21 m14054l 13137.06 m14054h 71465.63 m24054l 51737.80 m24054h 281453.61 m15564l 7158.29 m15564h 38941.09 m25564l 28203.77 m25564h 153428.50 m16574l 3499.00 m16574h 19034.55 m26574l 13792.26 m26574h 75029.88 mid40541 34156.37 mid40542 134518.27 mid55641 18611.55 mid55642 73329.80 mid65741 9097.39 mid65742 35859.87 popm4054 953.5444500 popm5564 371.0301000 hyp_ red1 7.0564250 hyp_ red2 27.9806808 r14059 0.0041274 r24059 0.0162573 r16064 0.0011600 r26064 0.0045699 r16574 0.0017948 r26574 0.0070713 r1_ cba 0.0021849 r2_ cba 0.0086018 r1_ bi 0.0012306 r2_ bi 0.0048432 r14054l 0.0052548 r24054l 0.0206951 r15564l 0.0028633 r25564l 0.0112815 r16574l 0.0013996 r26574l 0.0055169                          MPM Ohio CS Benefits ( Opt1= Final No GMs, Opt2= none) 29NOV02 Lead Related Benefits Recreational ( Sub 12) 10: 29 Friday, November 29, 2002 Female Lead Related Benefits ($ 2001)

The MEANS Procedure 145 145 Variable Sum                          b1fchd 213.5946775 b2fchd 838.7782252 popf4574 1388.40 b1f_ cba 308.6889590 b2f_ cba 1211.80 b1f_ bi 188.8955856 b2f_ bi 741.3050500 m14574l 7477.51 m14574h 40677.67 m24574l 29376.11 m24574h 159806.04 mid45741 19441.53 mid45742 76377.88 red_ chd1 0.0027977 red_ chd2 0.0109864 r1f_ cba 0.0012281 r2f_ cba 0.0048212 r1f_ bi 0.000751521 r2f_ bi 0.0029493 r14574l 0.0029910 r14574h 0.0029910 r24574l 0.0117504 r24574h 0.0117504                          MPM Ohio CS Benefits ( Opt1= Final No GMs, Opt2= none) 29NOV02 Lead Related Benefits Recreational ( Sub 12) 10: 29 Friday, November 29, 2002 Number of Affected Ohio Reaches The MEANS Procedure Analysis Variable : EVENT_ WT Sum              4.0000000              MPM Ohio CS Benefits ( Opt1= Final No GMs, Opt2= none) 29NOV02 Lead Related Benefits Recreational ( Sub 12) 10: 29 Friday, November 29, 2002 Exposed Population  Males Obs tpopn pm2074n pm4574n 1 9690 3096.13 1253.21 MPM Ohio CS Benefits ( Opt1= Final No GMs, Opt2= none) 29NOV02 Lead Related Benefits Recreational ( Sub 12) 10: 29 Friday, November 29, 2002 Exposed Population  Females Obs tpopn pf4574n 1 9690 1388.40 146 146 " Subsistence Lead Benefits ( Sub 17). sas" Using data from the lead specific data set, changes in blood lead levels are estimated and benefits calculated for reductions in cases of hypertension, CHD, brain infarctions, and mortality for subsistence fishermen and their families. 147 147 /*****************************************************************************/ /* PROGRAM DOCUMENTATION */ /*****************************************************************************/ /* Program: Subsistence Lead Benefits ( Sub 17)  New Output. sas */ /* Author: Abt Associates, Inc. Stuart Smith */ /* Date: 07/ 11/ 2000 */ /* Updated: 08/ 27/ 2002 */ /*

*/ /* This program estimates benefits from reduced consumption of fish tissue */ /* containing lead. Reductions in MP& M facility lead loadings result in lower*/ /* probabilties of lead related illnesses. */ /*****************************************************************************/

/*****************************************************************************/ /* SET TITLE FOR SUBROUTINE */ /*****************************************************************************/

title2 ' Subsistence Lead Related Benefits ( Sub 17)';

/*****************************************************************************/ /* Set pathname macro for excel benefits spreadsheet */ /* Maps to the results libname set in the main program */ /*****************************************************************************/

% let tbl_ path = % sysfunc( pathname( results));

/*****************************************************************************/ /* BEGIN MAIN PROGRAM CODE */ /*****************************************************************************/

data lead; set rundat. lead;

/*****************************************************************************/ /* Combine the exposed populations for subsistence; fresh and saltwater. */ /*****************************************************************************/

exppop = fwsubpop + swsubpop;

/*****************************************************************************/ /* Calculate the blood lead levels under the baseline and post compliance */ /* scenarios */ /*****************************************************************************/

PbB0m = 5.40; /* Typical PbB conc. in absence of fish cons. for men */ PbB0f = 4.12; /* Typical PbB conc. in absence of fish cons. for women */ 148 148 bcf = 49; /* Bioconcentration factor for lead L/ KG */ bksf = 0.4; /* Biokinetic slope factor for lead */ ingm = 142.4; /* Average daily fish consumption ( g/ day) males age 15 44 */ ingf = 142.4; /* Average daily fish consumption ( g/ day) females age 15 44 */ ingm2 = 142.4; /* Average daily fish consumption ( g/ day) males over age 45 */ ingf2 = 142.4; /* Average daily fish consumption ( g/ day) females over age 45*/ af = 0.03; /* Absorbtion factor */ ef = 365; /* Exposure Frequency */ at = 365; /* Average timing, or duration of exposure in days */ cf = 0.001; /* Conversion factor kg/ g */

/* Uses ingestion for males ages 15 44 */ PbB_ bm = PbB0m + (( cnc_ base* bcf* ingm* af* bksf* ef* cf)/ at); PbB_ 1m = PbB0m + (( cnc_ trt1* bcf* ingm* af* bksf* ef* cf)/ at); PbB_ 2m = PbB0m + (( cnc_ trt2* bcf* ingm* af* bksf* ef* cf)/ at);

/* Uses ingestion for males over age 45 */ PbB_ bme = PbB0m + (( cnc_ base* bcf* ingm2* af* bksf* ef* cf)/ at); PbB_ 1me = PbB0m + (( cnc_ trt1* bcf* ingm2* af* bksf* ef* cf)/ at); PbB_ 2me = PbB0m + (( cnc_ trt2* bcf* ingm2* af* bksf* ef* cf)/ at);

/* Uses ingestion for females ages 15 44 */ PbB_ bf = PbB0f + (( cnc_ base* bcf* ingf* af* bksf* ef* cf)/ at); PbB_ 1f = PbB0f + (( cnc_ trt1* bcf* ingf* af* bksf* ef* cf)/ at); PbB_ 2f = PbB0f + (( cnc_ trt2* bcf* ingf* af* bksf* ef* cf)/ at);

/* Uses ingestion for females over age 45 */ PbB_ bfe = PbB0f + (( cnc_ base* bcf* ingf2* af* bksf* ef* cf)/ at); PbB_ 1fe = PbB0f + (( cnc_ trt1* bcf* ingf2* af* bksf* ef* cf)/ at); PbB_ 2fe = PbB0f + (( cnc_ trt2* bcf* ingf2* af* bksf* ef* cf)/ at);

drop fwsptpop fwsubpop swsptpop swsubpop; run;

/* Print reaches in the lead dataset */ proc print; var reachnmb PbB_ bm PbB_ 1m PbB_ 2m cnc_ base cnc_ trt1 cnc_ trt2 exppop event_ wt; quit;

data men; set lead;

/* Set up some constants */ /* All percentages based on the 2000 Census numbers */

pctmale = 0.319518; /* Percentage of U. S. Pop. who are male, age 20 74 */ pctm4054 = 0.098405; /* Percentage of U. S. Pop. who are male, age 40 54 */ pctm4059 = 0.118945; /* Percentage of U. S. Pop. who are male, age 40 59 */ pctm4574 = 0.12933; /* Percentage of U. S. Pop. who are male, age 45 74 */ pctm5564 = 0.03829; /* Percentage of U. S. Pop. who are male, age 55 64 */ 149 149 pctm6064 = 0.01775; /* Percentage of U. S. Pop. who are male, age 60 64 */ pctm6574 = 0.031427; /* Percentage of U. S. Pop. who are male, age 65 74 */

bbpm4054 = 81.9; /* Mean diastolic bp from NHANES III, males, age 40 54 */ bbpm4059 = 81.8; /* Mean diastolic bp from NHANES III, males, age 40 59 */ bbpm4574 = 81.1; /* Mean diastolic bp from NHANES III, males, age 45 74 */ bbpm5564 = 80.6; /* Mean diastolic bp from NHANES III, males, age 55 64 */ bbpm6064 = 79.5; /* Mean diastolic bp from NHANES III, males age 60 64 */ bbpm6574 = 79.5; /* Mean diastolic bp from NHANES III, males age 65 74 */

/*****************************************************************************/ /* Begin Benefits for Males */ /*****************************************************************************/

/*****************************************************************************/ /* Calculate the change in the probability of hypertension */ /*****************************************************************************/

pr_ hyp1 = ( 1/( 1 + exp( 2.744  0.793* log( PbB_ bm))))  ( 1/( 1 + exp( 2.744  0.793* log( PbB_ 1m))));

pr_ hyp2 = ( 1/( 1 + exp( 2.744  0.793* log( PbB_ bm))))  ( 1/( 1 + exp( 2.744  0.793* log( PbB_ 2m))));

ben_ hyp1 = pr_ hyp1 * exppop * pctmale * 1141; ben_ hyp2 = pr_ hyp2 * exppop * pctmale * 1141; hyppop = exppop * pctmale; hyp_ red1 = pr_ hyp1 * exppop * pctmale; hyp_ red2 = pr_ hyp2 * exppop * pctmale;

/*****************************************************************************/ /* Calculate Benefits from Changes in CHD, non fatal cases only which */ /* are 2/ 3 of the cases */ /*****************************************************************************/

dbpm1 = 1.4 * log( PbB_ bm/ PbB_ 1m); /* Change in bp under option 1 */ dbpm2 = 1.4 * log( PbB_ bm/ PbB_ 2m); /* Change in bp under option 2 */

dbpm1e = 1.4 * log( PbB_ bme/ PbB_ 1me); /* Change in bp under option 1 */ dbpm2e = 1.4 * log( PbB_ bme/ PbB_ 2me); /* Change in bp under option 2 */

/* Ages 40 59, change in the 10 year prob of occ. */ d1m4059 = bbpm4059  dbpm1; d2m4059 = bbpm4059  dbpm2;

pr1_ 4059 = ( 1/( 1 + exp( 4.996  0.030365* bbpm4059)))  ( 1/( 1 + exp( 4.996  0.030365* d1m4059)));

pr2_ 4059 = ( 1/( 1 + exp( 4.996  0.030365* bbpm4059)))  ( 1/( 1 + exp( 4.996  0.030365* d2m4059)));

/* Ages 60 64, change in the 2 year prob of occ. */ 150 150 d1m6064 = bbpm6064  dbpm1e; d2m6064 = bbpm6064  dbpm2e;

pr1_ 6064 = ( 1/( 1 + exp( 5.19676  0.02351* bbpm6064)))  ( 1/( 1 + exp( 5.19676  0.02351* d1m6064)));

pr2_ 6064 = ( 1/( 1 + exp( 5.19676  0.02351* bbpm6064)))  ( 1/( 1 + exp( 5.19676  0.02351* d2m6064)));

/* Ages 65 74, change in the 2 year prob of occ. */ d1m6574 = bbpm6574  dbpm1e; d2m6574 = bbpm6574  dbpm2e;

pr1_ 6574 = ( 1/( 1 + exp( 4.90723  0.02031* bbpm6574)))  ( 1/( 1 + exp( 4.90723  0.02031* d1m6574)));

pr2_ 6574 = ( 1/( 1 + exp( 4.90723  0.02031* bbpm6574)))  ( 1/( 1 + exp( 4.90723  0.02031* d2m6574)));

b14059 = ( pr1_ 4059 * exppop * pctm4059 * 76347 * 0.66)/ 10; b24059 = ( pr2_ 4059 * exppop * pctm4059 * 76347 * 0.66)/ 10; b16064 = ( pr1_ 6064 * exppop * pctm6064 * 76347 * 0.66)/ 2; b26064 = ( pr2_ 6064 * exppop * pctm6064 * 76347 * 0.66)/ 2; b16574 = ( pr1_ 6574 * exppop * pctm6574 * 76347 * 0.66)/ 2; b26574 = ( pr2_ 6574 * exppop * pctm6574 * 76347 * 0.66)/ 2;

/* Number of reduced cases */ r14059 = ( pr1_ 4059 * exppop * pctm4059 * 0.66)/ 10; r24059 = ( pr2_ 4059 * exppop * pctm4059 * 0.66)/ 10; r16064 = ( pr1_ 6064 * exppop * pctm6064 * 0.66)/ 2; r26064 = ( pr2_ 6064 * exppop * pctm6064 * 0.66)/ 2; r16574 = ( pr1_ 6574 * exppop * pctm6574 * 0.66)/ 2; r26574 = ( pr2_ 6574 * exppop * pctm6574 * 0.66)/ 2;

popm4059 = exppop * pctm4059; popm6064 = exppop * pctm6064; popm6574 = exppop * pctm6574;

/*****************************************************************************/ /* Calculate Benefits from Reduced Cerebrovascular Accidents and Brain */ /* Infarctions, affects men aged 45 74 */ /* Non fatal only which is 70% of all cases */ /*****************************************************************************/

/* Ages 45 74, change in the 2 year prob of occ. */ d1m4574 = bbpm4574  dbpm1e; d2m4574 = bbpm4574  dbpm2e;

pr1_ cba = ( 1/( 1 + exp( 8.58889  0.04066* bbpm4574)))  ( 1/( 1 + exp( 8.58889  0.04066* d1m4574)));

pr2_ cba = ( 1/( 1 + exp( 8.58889  0.04066* bbpm4574)))  151 151 ( 1/( 1 + exp( 8.58889  0.04066* d2m4574)));

pr1_ bi = ( 1/( 1 + exp( 9.9516  0.04840* bbpm4574)))  ( 1/( 1 + exp( 9.9516  0.04840* d1m4574)));

pr2_ bi = ( 1/( 1 + exp( 9.9516  0.04840* bbpm4574)))  ( 1/( 1 + exp( 9.9516  0.04840* d2m4574)));

b1_ cba = ( pr1_ cba * exppop * pctm4574 * 335135 * 0.7)/ 2; b2_ cba = ( pr2_ cba * exppop * pctm4574 * 335135 * 0.7)/ 2; b1_ bi = ( pr1_ bi * exppop * pctm4574 * 335135 * 0.7)/ 2; b2_ bi = ( pr2_ bi * exppop * pctm4574 * 335135 * 0.7)/ 2;

r1_ cba = ( pr1_ cba * exppop * pctm4574 * 0.7)/ 2; r2_ cba = ( pr2_ cba * exppop * pctm4574 * 0.7)/ 2; r1_ bi = ( pr1_ bi * exppop * pctm4574 * 0.7)/ 2; r2_ bi = ( pr2_ bi * exppop * pctm4574 * 0.7)/ 2;

popm4574 = exppop * pctm4574;

/*****************************************************************************/ /* Calculate Benefits from Premature Mortality */ /*****************************************************************************/

/* Ages 40 54, change in the 12 year prob of death */ d1m4054 = bbpm4054  dbpm1; d2m4054 = bbpm4054  dbpm2;

m1_ 4054 = ( 1/( 1 + exp( 5.3158  0.03516* bbpm4054)))  ( 1/( 1 + exp( 5.3158  0.03516* d1m4054)));

m2_ 4054 = ( 1/( 1 + exp( 5.3158  0.03516* bbpm4054)))  ( 1/( 1 + exp( 5.3158  0.03516* d2m4054)));

/* Ages 55 64, change in the 2 year prob of death */ d1m5564 = bbpm5564  dbpm1e; d2m5564 = bbpm5564  dbpm2e;

m1_ 5564 = ( 1/( 1 + exp( 4.89528  0.01866* bbpm5564)))  ( 1/( 1 + exp( 4.89528  0.01866* d1m5564)));

m2_ 5564 = ( 1/( 1 + exp( 4.89528  0.01866* bbpm5564)))  ( 1/( 1 + exp( 4.89528  0.01866* d2m5564)));

/* Ages 65 74, change in the 2 year prob of death */ d1m6574 = bbpm6574  dbpm1e; d2m6574 = bbpm6574  dbpm2e;

m1_ 6574 = ( 1/( 1 + exp( 3.05723  0.00547* bbpm6574)))  ( 1/( 1 + exp( 3.05723  0.00547* d1m6574)));

m2_ 6574 = ( 1/( 1 + exp( 3.05723  0.00547* bbpm6574)))  152 152 ( 1/( 1 + exp( 3.05723  0.00547* d2m6574)));

m14054l = ( m1_ 4054 * exppop * pctm4054 * 2500000)/ 12; m24054l = ( m2_ 4054 * exppop * pctm4054 * 2500000)/ 12; m14054h = ( m1_ 4054 * exppop * pctm4054 * 13600000)/ 12; m24054h = ( m2_ 4054 * exppop * pctm4054 * 13600000)/ 12; mid40541 = ( m1_ 4054 * exppop * pctm4054 * 6500000)/ 12; mid40542 = ( m2_ 4054 * exppop * pctm4054 * 6500000)/ 12;

m15564l = ( m1_ 5564 * exppop * pctm5564 * 2500000)/ 2; m25564l = ( m2_ 5564 * exppop * pctm5564 * 2500000)/ 2; m15564h = ( m1_ 5564 * exppop * pctm5564 * 13600000)/ 2; m25564h = ( m2_ 5564 * exppop * pctm5564 * 13600000)/ 2; mid55641 = ( m1_ 5564 * exppop * pctm5564 * 6500000)/ 2; mid55642 = ( m2_ 5564 * exppop * pctm5564 * 6500000)/ 2;

m16574l = ( m1_ 6574 * exppop * pctm6574 * 2500000)/ 2; m26574l = ( m2_ 6574 * exppop * pctm6574 * 2500000)/ 2; m16574h = ( m1_ 6574 * exppop * pctm6574 * 13600000)/ 2; m26574h = ( m2_ 6574 * exppop * pctm6574 * 13600000)/ 2; mid65741 = ( m1_ 6574 * exppop * pctm6574 * 6500000)/ 2; mid65742 = ( m2_ 6574 * exppop * pctm6574 * 6500000)/ 2;

r14054l = ( m1_ 4054 * exppop * pctm4054)/ 12; r24054l = ( m2_ 4054 * exppop * pctm4054)/ 12; r14054h = ( m1_ 4054 * exppop * pctm4054)/ 12; r24054h = ( m2_ 4054 * exppop * pctm4054)/ 12; r15564l = ( m1_ 5564 * exppop * pctm5564)/ 2; r25564l = ( m2_ 5564 * exppop * pctm5564)/ 2; r15564h = ( m1_ 5564 * exppop * pctm5564)/ 2; r25564h = ( m2_ 5564 * exppop * pctm5564)/ 2; r16574l = ( m1_ 6574 * exppop * pctm6574)/ 2; r26574l = ( m2_ 6574 * exppop * pctm6574)/ 2; r16574h = ( m1_ 6574 * exppop * pctm6574)/ 2; r26574h = ( m2_ 6574 * exppop * pctm6574)/ 2;

popm4054 = exppop * pctm4054; popm5564 = exppop * pctm5564; run;

data women; set lead;

/* Set up some constants */ /* All percentages based on the 2000 Census numbers */ pctfem = 0.511735; /* Percentage of U. S. Pop. who are female */ pctf4574 = 0.143282; /* Percentage of U. S. Pop. who are female, age 45 74 */

bbpf4574 = 76.5; /* Mean diastolic bp from NHANES III, females age 45 74 */ 153 153 /*****************************************************************************/ /* Begin Benefits for Females */ /*****************************************************************************/

/*****************************************************************************/ /* No dose response function for female hypertension */ /*****************************************************************************/

/*****************************************************************************/ /* Calculate Benefits from Changes in CHD, non fatal cases only which */ /* are 2/ 3 of the cases */ /*****************************************************************************/

dbpf1 = ( 0.6 * 1.4) * log( PbB_ bfe/ PbB_ 1fe); /* Change in bp under option 1 */ dbpf2 = ( 0.6 * 1.4) * log( PbB_ bfe/ PbB_ 2fe); /* Change in bp under option 2 */

/* Ages 45 74, change in the 2 year prob of occ. */ d1f4574 = bbpf4574  dbpf1; d2f4574 = bbpf4574  dbpf2;

pr1_ 4574 = ( 1/( 1 + exp( 6.9401  0.03072* bbpf4574)))  ( 1/( 1 + exp( 6.9401  0.03072* d1f4574)));

pr2_ 4574 = ( 1/( 1 + exp( 6.9401  0.03072* bbpf4574)))  ( 1/( 1 + exp( 6.9401  0.03072* d2f4574)));

b1fchd = ( pr1_ 4574 * exppop * pctf4574 * 76347 * 0.66)/ 2; b2fchd = ( pr2_ 4574 * exppop * pctf4574 * 76347 * 0.66)/ 2;

red_ chd1 = ( pr1_ 4574 * exppop * pctf4574 * 0.66)/ 2; red_ chd2 = ( pr2_ 4574 * exppop * pctf4574 * 0.66)/ 2;

popf4574 = exppop * pctf4574;

/*****************************************************************************/ /* Calculate Benefits from Reduced Cerebrovascular Accidents and Brain */ /* Infarctions, affects women aged 45 74 */ /* Non fatal only which is 70% of all cases */ /*****************************************************************************/

/* Ages 45 74, change in the 2 year prob of occ. */

pr1f_ bi = ( 1/( 1 + exp( 10.6716  0.0544* bbpf4574)))  ( 1/( 1 + exp( 10.6716  0.0544* d1f4574)));

pr2f_ bi = ( 1/( 1 + exp( 10.6716  0.0544* bbpf4574)))  ( 1/( 1 + exp( 10.6716  0.0544* d2f4574)));

pr1f_ cba = ( 1/( 1 + exp( 9.07737  0.04287* bbpf4574)))  ( 1/( 1 + exp( 9.07737  0.04287* d1f4574)));

pr2f_ cba = ( 1/( 1 + exp( 9.07737  0.04287* bbpf4574)))  154 154 ( 1/( 1 + exp( 9.07737  0.04287* d2f4574)));

b1f_ cba = ( pr1f_ cba * exppop * pctf4574 * 251351 * 0.7)/ 2; b2f_ cba = ( pr2f_ cba * exppop * pctf4574 * 251351 * 0.7)/ 2; b1f_ bi = ( pr1f_ bi * exppop * pctf4574 * 251351 * 0.7)/ 2; b2f_ bi = ( pr2f_ bi * exppop * pctf4574 * 251351 * 0.7)/ 2;

r1f_ cba = ( pr1f_ cba * exppop * pctf4574 * 0.7)/ 2; r2f_ cba = ( pr2f_ cba * exppop * pctf4574 * 0.7)/ 2; r1f_ bi = ( pr1f_ bi * exppop * pctf4574 * 0.7)/ 2; r2f_ bi = ( pr2f_ bi * exppop * pctf4574 * 0.7)/ 2;

/* Calculate Benefits from Premature Mortality */

/* Ages 45 74, change in the 2 year prob of death */

m1_ 4574 = ( 1/( 1 + exp( 5.40374  0.01511* bbpf4574)))  ( 1/( 1 + exp( 5.40374  0.01511* d1f4574)));

m2_ 4574 = ( 1/( 1 + exp( 5.40374  0.01511* bbpf4574)))  ( 1/( 1 + exp( 5.40374  0.01511* d2f4574)));

m14574l = ( m1_ 4574 * exppop * pctf4574 * 2500000)/ 2; m24574l = ( m2_ 4574 * exppop * pctf4574 * 2500000)/ 2; m14574h = ( m1_ 4574 * exppop * pctf4574 * 13600000)/ 2; m24574h = ( m2_ 4574 * exppop * pctf4574 * 13600000)/ 2; mid45741 = ( m1_ 4574 * exppop * pctf4574 * 6500000)/ 2; mid45742 = ( m2_ 4574 * exppop * pctf4574 * 6500000)/ 2;

r14574l = ( m1_ 4574 * exppop * pctf4574)/ 2; r24574l = ( m2_ 4574 * exppop * pctf4574)/ 2; r14574h = ( m1_ 4574 * exppop * pctf4574)/ 2; r24574h = ( m2_ 4574 * exppop * pctf4574)/ 2; run;

/*****************************************************************************/ /* Sum up benefits and reduced cases and print results */ /*****************************************************************************/

proc means sum data= men; weight event_ wt; var ben_ hyp1 ben_ hyp2 hyppop b14059 b24059 b16064 b26064 b16574 b26574 popm4059 popm6064 popm6574 b1_ cba b2_ cba b1_ bi b2_ bi popm4574 m14054l m14054h m24054l m24054h m15564l m15564h m25564l m25564h m16574l m16574h m26574l m26574h mid40541 mid40542 mid55641 mid55642 mid65741 mid65742 popm4054 popm5564 hyp_ red1 hyp_ red2 r14059 r24059 r16064 r26064 r16574 r26574 r1_ cba r2_ cba r1_ bi r2_ bi r14054l r24054l 155 155 r15564l r25564l r16574l r26574l; output out = rundat. msubwght( drop = _ type_ _ freq_) sum = ben_ hyp1 ben_ hyp2 hyppop b14059 b24059 b16064 b26064 b16574 b26574 popm4059 popm6064 popm6574 b1_ cba b2_ cba b1_ bi b2_ bi popm4574 m14054l m14054h m24054l m24054h m15564l m15564h m25564l m25564h m16574l m16574h m26574l m26574h mid40541 mid40542 mid55641 mid55642 mid65741 mid65742 popm4054 popm5564 hyp_ red1 hyp_ red2 r14059 r24059 r16064 r26064 r16574 r26574 r1_ cba r2_ cba r1_ bi r2_ bi r14054l r24054l r15564l r25564l r16574l r26574l; title3 ' Mens Lead Related Benefits ($ 2001)'; quit;

/*****************************************************************************/ /* Macro for building an output table of lead benefits for males */ /*****************************************************************************/

% macro maleleadtable( tbl_ in=, tbl_ out=); data rundat.& tbl_ out ( keep= gender categ agecat type case1 ben1l ben1m ben1h case2 ben2l ben2m ben2h); set rundat.& tbl_ in;

length gender $ 50 categ $ 50 agecat $ 50 type $ 50;

array _ hyper[ 4] ben_ hyp1 ben_ hyp2 hyp_ red1 hyp_ red2; array _ chd[ 12] b14059 b24059 b16064 b26064 b16574 b26574 r14059 r24059 r16064 r26064 r16574 r26574; array _ cba[ 4] b1_ cba b2_ cba r1_ cba r2_ cba; array _ bi[ 4] b1_ bi b2_ bi r1_ bi r2_ bi; array _ mort[ 24] m14054l mid40541 m14054h m24054l mid40542 m24054h m15564l mid55641 m15564h m25564l mid55642 m25564h m16574l mid65741 m16574h m26574l mid65742 m26574h r14054l r24054l r15564l r25564l r16574l r26574l; array ben[ 6] ben1l ben1m ben1h ben2l ben2m ben2h; array cases[ 2] case1 case2;

do i = 1 to 9; if i = 1 then do; ben[ 1] = _ hyper[ 1]; ben[ 2] = _ hyper[ 1]; ben[ 3] = _ hyper[ 1]; ben[ 4] = _ hyper[ 2]; ben[ 5] = _ hyper[ 2]; ben[ 6] = _ hyper[ 2]; cases[ 1] = _ hyper[ 3]; cases[ 2] = _ hyper[ 4]; categ = " Hypertension"; 156 156 agecat = " All"; type = " Sub"; gender = " Male"; output; end; if i = 2 then do; ben[ 1] = _ chd[ 1]; ben[ 2] = _ chd[ 1]; ben[ 3] = _ chd[ 1]; ben[ 4] = _ chd[ 2]; ben[ 5] = _ chd[ 2]; ben[ 6] = _ chd[ 2]; cases[ 1] = _ chd[ 7]; cases[ 2] = _ chd[ 8]; categ = " CHD"; agecat = " Age 40 59"; type = " Sub"; gender = " Male"; output; end; if i = 3 then do; ben[ 1] = _ chd[ 3]; ben[ 2] = _ chd[ 3]; ben[ 3] = _ chd[ 3]; ben[ 4] = _ chd[ 4]; ben[ 5] = _ chd[ 4]; ben[ 6] = _ chd[ 4]; cases[ 1] = _ chd[ 9]; cases[ 2] = _ chd[ 10]; categ = " CHD"; agecat = " Age 60 64"; type = " Sub"; gender = " Male"; output; end; if i = 4 then do; ben[ 1] = _ chd[ 5]; ben[ 2] = _ chd[ 5]; ben[ 3] = _ chd[ 5]; ben[ 4] = _ chd[ 6]; ben[ 5] = _ chd[ 6]; ben[ 6] = _ chd[ 6]; cases[ 1] = _ chd[ 11]; cases[ 2] = _ chd[ 12]; categ = " CHD"; agecat = " Age 65 74"; type = " Sub"; gender = " Male"; output; end; if i = 5 then do; ben[ 1] = _ cba[ 1]; ben[ 2] = _ cba[ 1]; ben[ 3] = _ cba[ 1]; ben[ 4] = _ cba[ 2]; ben[ 5] = _ cba[ 2]; ben[ 6] = _ cba[ 2]; cases[ 1] = _ cba[ 3]; cases[ 2] = _ cba[ 4]; categ = " CBA"; agecat = " All"; type = " Sub"; gender = " Male"; output; end; if i = 6 then do; ben[ 1] = _ bi[ 1]; ben[ 2] = _ bi[ 1]; ben[ 3] = _ bi[ 1]; ben[ 4] = _ bi[ 2]; ben[ 5] = _ bi[ 2]; ben[ 6] = _ bi[ 2]; cases[ 1] = _ bi[ 3]; cases[ 2] = _ bi[ 4]; categ = " BI"; agecat = " All"; type = " Sub"; 157 157 gender = " Male"; output; end; if i = 7 then do; ben[ 1] = _ mort[ 1]; ben[ 2] = _ mort[ 2]; ben[ 3] = _ mort[ 3]; ben[ 4] = _ mort[ 4]; ben[ 5] = _ mort[ 5]; ben[ 6] = _ mort[ 6]; cases[ 1] = _ mort[ 19]; cases[ 2] = _ mort[ 20]; categ = " Mortality"; agecat = " Age 40 54"; type = " Sub"; gender = " Male"; output; end; if i = 8 then do; ben[ 1] = _ mort[ 7]; ben[ 2] = _ mort[ 8]; ben[ 3] = _ mort[ 9]; ben[ 4] = _ mort[ 10]; ben[ 5] = _ mort[ 11]; ben[ 6] = _ mort[ 12]; cases[ 1] = _ mort[ 21]; cases[ 2] = _ mort[ 22]; categ = " Mortality"; agecat = " Age 55 64"; type = " Sub"; gender = " Male"; output; end; if i = 9 then do; ben[ 1] = _ mort[ 13]; ben[ 2] = _ mort[ 14]; ben[ 3] = _ mort[ 15]; ben[ 4] = _ mort[ 16]; ben[ 5] = _ mort[ 17]; ben[ 6] = _ mort[ 18]; cases[ 1] = _ mort[ 23]; cases[ 2] = _ mort[ 24]; categ = " Mortality"; agecat = " Age 65 74"; type = " Sub"; gender = " Male"; output; end; end; run; % mend;

/*****************************************************************************/ /* Call macro to build male benefits table */ /*****************************************************************************/

% maleleadtable( tbl_ in= msubwght, tbl_ out= tblmbwgt);

proc means sum data= women; weight event_ wt; var b1fchd b2fchd popf4574 b1f_ cba b2f_ cba b1f_ bi b2f_ bi m14574l m14574h m24574l m24574h mid45741 mid45742 red_ chd1 red_ chd2 r1f_ cba r2f_ cba r1f_ bi r2f_ bi r14574l r14574h r24574l r24574h; output out = rundat. fsubwght( drop = _ type_ _ freq_) sum = 158 158 b1fchd b2fchd popf4574 b1f_ cba b2f_ cba b1f_ bi b2f_ bi m14574l m14574h m24574l m24574h mid45741 mid45742 red_ chd1 red_ chd2 r1f_ cba r2f_ cba r1f_ bi r2f_ bi r14574l r14574h r24574l r24574h; title3 ' Female Lead Related Benefits ($ 2001)'; quit;

/*****************************************************************************/ /* Macro for building an output table of lead benefits for females */ /*****************************************************************************/

% macro femaleleadtable( tbl_ in=, tbl_ out=); data rundat.& tbl_ out ( keep= gender categ agecat type case1 ben1l ben1m ben1h case2 ben2l ben2m ben2h); set rundat.& tbl_ in;

length gender $ 50 categ $ 50 agecat $ 50 type $ 50;

array _ chd[ 4] b1fchd b2fchd red_ chd1 red_ chd2; array _ cba[ 4] b1f_ cba b2f_ cba r1f_ cba r2f_ cba; array _ bi[ 4] b1f_ bi b2f_ bi r1f_ bi r2f_ bi; array _ mort[ 8] m14574l mid45741 m14574h m24574l mid45742 m24574h r14574l r24574l; array ben[ 6] ben1l ben1m ben1h ben2l ben2m ben2h; array cases[ 2] case1 case2;

do i = 1 to 4; if i = 1 then do; ben[ 1] = _ chd[ 1]; ben[ 2] = _ chd[ 1]; ben[ 3] = _ chd[ 1]; ben[ 4] = _ chd[ 2]; ben[ 5] = _ chd[ 2]; ben[ 6] = _ chd[ 2]; cases[ 1] = _ chd[ 3]; cases[ 2] = _ chd[ 4]; categ = " CHD"; agecat = " All"; type = " Sub"; gender = " Female"; output; end; if i = 2 then do; ben[ 1] = _ cba[ 1]; ben[ 2] = _ cba[ 1]; ben[ 3] = _ cba[ 1]; ben[ 4] = _ cba[ 2]; ben[ 5] = _ cba[ 2]; ben[ 6] = _ cba[ 2]; cases[ 1] = _ cba[ 3]; cases[ 2] = _ cba[ 4]; categ = " CBA"; agecat = " All"; type = " Sub"; gender = " Female"; output; end; if i = 3 then do; ben[ 1] = _ bi[ 1]; ben[ 2] = _ bi[ 1]; ben[ 3] = _ bi[ 1]; ben[ 4] = _ bi[ 2]; ben[ 5] = _ bi[ 2]; ben[ 6] = _ bi[ 2]; 159 159 cases[ 1] = _ bi[ 3]; cases[ 2] = _ bi[ 4]; categ = " BI"; agecat = " All"; type = " Sub"; gender = " Female"; output; end; if i = 4 then do; ben[ 1] = _ mort[ 1]; ben[ 2] = _ mort[ 2]; ben[ 3] = _ mort[ 3]; ben[ 4] = _ mort[ 4]; ben[ 5] = _ mort[ 5]; ben[ 6] = _ mort[ 6]; cases[ 1] = _ mort[ 7]; cases[ 2] = _ mort[ 8]; categ = " Mortality"; agecat = " Age 45 74"; type = " Sub"; gender = " Female"; output; end; end; run; % mend;

/*****************************************************************************/ /* Call macro to build female benefits table */ /*****************************************************************************/

% femaleleadtable( tbl_ in= fsubwght, tbl_ out= tblfbwgt);

data rundat. tblsub_ w; set rundat. tblmbwgt rundat. tblfbwgt; run;

proc means sum data= men; var event_ wt; title3 ' Number of Affected Ohio Reaches'; quit;

proc sql;

create table malepop as select sum( exppop) as tpops, sum( exppop* pctmale) as pm2074s, sum( exppop* pctm4574) as pm4574s, sum( exppop* event_ wt) as tpopn, sum( exppop* pctmale* event_ wt) as pm2074n, sum( exppop* pctm4574* event_ wt) as pm4574n from men;

create table fempop as select sum( exppop) as tpops, sum( exppop* pctf4574) as pf4574s, sum( exppop* event_ wt) as tpopn, sum( exppop* pctf4574* event_ wt) as pf4574n 160 160 from women; quit;

proc print data= malepop; var tpopn pm2074n pm4574n; label tpopn = ' Total Exposed Pop ( male + fem)' pm2074n = ' Exposed Males Age 20 74' pm4574n = ' Exposed Males Age 45 74'; title3 ' Exposed Population  Males'; quit;

proc print data= fempop; var tpopn pf4574n; label tpopn = ' Total Exposed Pop ( male + fem)' pf4574n = ' Exposed Females Age 45 74'; title3 ' Exposed Population  Females'; quit;

data rundat. leadtblw; if _ n_ = 1 then do; do i = 1 to 13; set rundat. tblspt_ w point = i; output; set rundat. tblsub_ w point = i; output; end; end; run;

proc summary data= rundat. leadtblw nway; class gender categ; var case1 ben1l ben1m ben1h case2 ben2l ben2m ben2h; output out = rundat. leadsumw ( drop= _ type_ _ freq_) sum = case1 ben1l ben1m ben1h case2 ben2l ben2m ben2h; run;

proc summary data= rundat. leadtblw; var ben1l ben1m ben1h ben2l ben2m ben2h; output out = rundat. ldallw ( drop= _ type_ _ freq_) sum = ben1l ben1m ben1h ben2l ben2m ben2h; run;

/*****************************************************************************/ /* Generate a data set of lead benefits for export to excel */ /*****************************************************************************/

data exlleadw ( keep= titlecol col1 col10 label=" Adult Lead Benefits unweighted"); set rundat. leadsumw rundat. ldallw; 161 161 length titlecol $ 50 col1  col10 $ 128;

if _ n_ = 1 then do; titlecol = " Table: Adult Lead Benefits, Unweighted Estimates"; output; titlecol = & thetitle; output; titlecol = " "; output; col3 = " Option 1"; col7 = " Option 2"; output; col3 = " Reduced Cases"; col4 = " Low"; col5 = " Mid"; col6 = " High"; col7 = " Reduced Cases"; col8 = " Low"; col9 = " Mid"; col10 = " High"; output; end;

if _ n_ = 1 or _ n_ = 6 then do; col1 = gender; end;

if _ n_ = 10 then do; col1 = " Total"; end;

col2 = trim( categ); col3 = trim( case1); col4 = trim( ben1l); col5 = trim( ben1m); col6 = trim( ben1h); col7 = trim( case2); col8 = trim( ben2l); col9 = trim( ben2m); col10 = trim( ben2h); output; run;

/*****************************************************************************/ /* Export the lead benefits data set as an excel spreadsheet */ /*****************************************************************************/

proc export data = exlleadw outfile = "& tbl_ path\ Ohio Adult Lead. xls" dbms= excel2000 replace; run;

/*****************************************************************************/ /* END MAIN PROGRAM CODE */ /*****************************************************************************/ 162 162 Program Output 163 163 MPM Ohio CS Benefits ( Opt1= Final No GMs, Opt2= none) 29NOV02 Subsistence Lead Related Benefits ( Sub 17) 10: 29 Friday, November 29, 2002 Mens Lead Related Benefits ($ 2001)

The MEANS Procedure Variable Sum                          ben_ hyp1 2619.25 ben_ hyp2 10115.94 hyppop 154.6467120 b14059 88.3944989 b24059 336.6286642 b16064 24.6328686 b26064 93.8681953 b16574 38.9603563 b26574 148.5382645 popm4059 57.5693800 popm6064 8.5910000 popm6574 15.2106680 b1_ cba 214.3662977 b2_ cba 814.4805268 b1_ bi 122.7292504 b2_ bi 465.7184213 popm4574 62.5957200 m14054l 3729.13 m14054h 20286.45 m24054l 14192.98 m24054h 77209.79 m15564l 1974.45 m15564h 10741.01 m25564l 7529.40 m25564h 40959.94 m16574l 955.1394735 m16574h 5195.96 m26574l 3649.84 m26574h 19855.12 mid40541 9695.73 mid40542 36901.74 mid55641 5133.57 mid55642 19576.44 mid65741 2483.36 mid65742 9489.58 popm4054 47.6280200 popm5564 18.5323600 hyp_ red1 2.2955756 hyp_ red2 8.8658509 r14059 0.0011578 r24059 0.0044092 r16064 0.000322644 r26064 0.0012295 r16574 0.000510306 r26574 0.0019456 r1_ cba 0.000639642 r2_ cba 0.0024303 r1_ bi 0.000366208 r2_ bi 0.0013896 r14054l 0.0014917 r24054l 0.0056772 r15564l 0.000789780 r25564l 0.0030118 r16574l 0.000382056 r26574l 0.0014599                          MPM Ohio CS Benefits ( Opt1= Final No GMs, Opt2= none) 29NOV02 Subsistence Lead Related Benefits ( Sub 17) 10: 29 Friday, November 29, 2002 Female Lead Related Benefits ($ 2001)

The MEANS Procedure 164 164 Variable Sum                          b1fchd 56.5346293 b2fchd 215.0984925 popf4574 69.3484880 b1f_ cba 83.2902905 b2f_ cba 316.4422955 b1f_ bi 51.8872227 b2f_ bi 196.8717102 m14574l 1932.75 m14574h 10514.19 m24574l 7366.65 m24574h 40074.58 mid45741 5025.16 mid45742 19153.29 red_ chd1 0.000740496 red_ chd2 0.0028174 r1f_ cba 0.000331370 r2f_ cba 0.0012590 r1f_ bi 0.000206433 r2f_ bi 0.000783254 r14574l 0.000773102 r14574h 0.000773102 r24574l 0.0029467 r24574h 0.0029467                          MPM Ohio CS Benefits ( Opt1= Final No GMs, Opt2= none) 29NOV02 Subsistence Lead Related Benefits ( Sub 17) 10: 29 Friday, November 29, 2002 Number of Affected Ohio Reaches The MEANS Procedure Analysis Variable : EVENT_ WT Sum              4.0000000              MPM Ohio CS Benefits ( Opt1= Final No GMs, Opt2= none) 29NOV02 Subsistence Lead Related Benefits ( Sub 17) 10: 29 Friday, November 29, 2002 Exposed Population  Males Obs tpopn pm2074n pm4574n 1 484 154.647 62.5957 MPM Ohio CS Benefits ( Opt1= Final No GMs, Opt2= none) 29NOV02 Subsistence Lead Related Benefits ( Sub 17) 10: 29 Friday, November 29, 2002 Exposed Population  Females Obs tpopn pf4574n 1 484 69.3485 Contents of Ohio Adult Lead. xls titlecol col1 col2 col3 col4 col5 col6 Table: Adult Lead Benefits, Unweighted Estimates MPM Ohio CS Benefits ( Opt1= Final No GMs, Opt2= none)

Option 1 Reduced Cases Low Mid High Female BI $ 0.00 $ 240.78 $ 240.78 $ 240.78 CBA $ 0.00 $ 391.98 $ 391.98 $ 391.98 165 165 CHD $ 0.00 $ 270.13 $ 270.13 $ 270.13 Mortality $ 0.00 $ 9,410.27 $ 24,466.69 $ 51,191.85 BI $ 0.00 $ 535.13 $ 535.13 $ 535.13 Male CBA $ 0.00 $ 946.61 $ 946.61 $ 946.61 CHD $ 0.01 $ 692.70 $ 692.70 $ 692.70 Hypertensio n $ 9.35 $ 10,670.63 $ 10,670.63 $ 10,670.63 Mortality $ 0.01 $ 30,453.07 $ 79,177.98 $ 165,664.69 Total . $ 53,611.30 $ 117,392.64 $ 230,604.51 166 166 Lead Benefits for Children 167 167 " Cancer fish ( Sub 4). sas" From the data set of pollutant concentrations for each RF1 reach, observations for in stream lead concentrations are outputed into a separate data set. See Cancer from Fish Consumption for program code. 168 168 " NeoNatal Mortality Benefits ( Sub 15). sas" Using data from the lead specific data set, changes in blood lead levels for women of childbearing age are estimated. Reduced risk of neonatal mortality is calculated and monetized. 169 169 /*****************************************************************************/ /* PROGRAM DOCUMENTATION */ /*****************************************************************************/ /* Program: NeoNatal Mortality Benefits ( Sub 15). sas */ /* Author: Abt Associates, Inc. Stuart Smith */ /* Date: 07/ 11/ 2000 */ /* Updated: 11/ 12/ 2002 */ /*

*/ /* This program estimates benefits from reduced consumption of fish tissue */ /* containing lead. Reductions in MP& M facility lead loadings result in */ /* lower probabilties of neo natal mortality. */ /*****************************************************************************/

/*****************************************************************************/ /* SET TITLE FOR SUBROUTINE */ /*****************************************************************************/

title2 ' NeoNatal Mortality Lead Benefits ( Sub 15)';

/*****************************************************************************/ /* BEGIN MAIN PROGRAM CODE */ /*****************************************************************************/

data lead; set rundat. lead;

/*****************************************************************************/ /* Combine the exposed recreational and subsistence populations; fresh and */ /* salt water */ /*****************************************************************************/

sptpop = fwsptpop + swsptpop; subpop = fwsubpop + swsubpop;

/*****************************************************************************/ /* Calculate the blood lead levels under the baseline and post compliance */ /* scenarios */ /*****************************************************************************/

PbB0f = 2.05; /* Typical PbB conc. in absence of fish cons. for women */ /* Aged 15 45 */ bcf = 49; /* Bioconcentration factor for lead L/ KG */ bksf = 0.4; /* Biokinetic slope factor for lead */ ing = 14.5; /* Average daily fish consumption ( g/ day) recreational */ ing2 = 142.4; /* Average daily fish consumption ( g/ day) subsistence */ 170 170 af = 0.03; /* Absorbtion factor */ ef = 365; /* Exposure Frequency */ at = 365; /* Average timing, or duration of exposure in days */ cf = 0.001; /* Conversion factor kg/ g */

/* Recreational */ PbB_ bfr = ( PbB0f + ( cnc_ base* bcf* ing* af* bksf* ef* cf))/ at; PbB_ 1fr = ( PbB0f + ( cnc_ trt1* bcf* ing* af* bksf* ef* cf))/ at; PbB_ 2fr = ( PbB0f + ( cnc_ trt2* bcf* ing* af* bksf* ef* cf))/ at;

/* Subsistence */ PbB_ bfs = ( PbB0f + ( cnc_ base* bcf* ing2* af* bksf* ef* cf))/ at; PbB_ 1fs = ( PbB0f + ( cnc_ trt1* bcf* ing2* af* bksf* ef* cf))/ at; PbB_ 2fs = ( PbB0f + ( cnc_ trt2* bcf* ing2* af* bksf* ef* cf))/ at;

/* Changes in blood lead levels */ diff1r = PbB_ bfr  PbB_ 1fr; diff2r = PbB_ bfr  PbB_ 2fr;

diff1s = PbB_ bfs  PbB_ 1fs; diff2s = PbB_ bfs  PbB_ 2fs;

drop fwsptpop fwsubpop swsptpop swsubpop; run;

proc print; var reachnmb PbB_ bfr PbB_ 1fr PbB_ 2fr PbB_ bfs PbB_ 1fs PbB_ 2fs diff1r diff2r diff1s diff2s cnc_ base cnc_ trt1 cnc_ trt2 sptpop subpop event_ wt; quit;

data neo; set lead;

pctfem = 0.22531; /* Percentage of Women Aged 15 45 ( Childbearing Age) */ /* from the US census 2000 */ expspt = sptpop* pctfem; expsub = subpop* pctfem;

red1r = diff1r * sptpop * pctfem * 0.0001; red2r = diff2r * sptpop * pctfem * 0.0001;

red1s = diff1s * subpop * pctfem * 0.0001; red2s = diff2s * subpop * pctfem * 0.0001;

/*****************************************************************************/ /* Calculate benefits under the options and the monetized */ /* benefit based on the value of a statistical life ( in $ 2001) */ /* */ /* mid value of statistical life in $ 2001 is $ 6.5 million */ /* 171 171 */ /* KUNAL SHARMA ( 03.20.02)  Mid Value Has Changed. See Below. */ /* STUART SMITH ( 07.11.02)  Mid Value Changed to $ 2001 */ /*****************************************************************************/

ben1_ lr = red1r * 2500000; ben1_ hr = red1r * 13600000; ben2_ lr = red2r * 2500000; ben2_ hr = red2r * 13600000; mid1r = red1r * 6500000; mid2r = red2r * 6500000;

ben1_ ls = red1s * 2500000; ben1_ hs = red1s * 13600000; ben2_ ls = red2s * 2500000; ben2_ hs = red2s * 13600000; mid1s = red1s * 6500000; mid2s = red2s * 6500000;

tot1_ l = ben1_ lr + ben1_ ls; tot1_ h = ben1_ hr + ben1_ hs; tot2_ l = ben2_ lr + ben2_ ls; tot2_ h = ben2_ hr + ben2_ hs; mid1 = mid1r + mid1s; mid2 = mid2r + mid2s; run;

proc means sum data= neo; weight event_ wt; var red1r red2r red1s red2s ben1_ lr ben1_ ls ben1_ hr ben1_ hs ben2_ lr ben2_ ls ben2_ hr ben2_ hs tot1_ l tot1_ h tot2_ l tot2_ h mid1r mid1s mid2r mid2s mid1 mid2 expspt expsub; label red1r = ' Number of Reductions rec ( Opt 1)' red2r = ' Number of Reductions rec ( Opt 2)' red1s = ' Number of Reductions sub ( Opt 1)' red2s = ' Number of Reductions sub ( Opt 2)' ben1_ lr = ' Sport Low ( Opt1)' ben1_ ls = ' Sub Low ( Opt1)' ben1_ hr = ' Sport High ( Opt1)' ben1_ hs = ' Sub High ( Opt1)' ben2_ lr = ' Sport Low ( Opt2)' ben2_ ls = ' Sub Low ( Opt2)' ben2_ hr = ' Sport High ( Opt2)' ben2_ hs = ' Sub High ( Opt2)' tot1_ l = ' Total Benefits  Low ( Opt 1)' tot1_ h = ' Total Benefits  High ( Opt 1)' tot2_ l = ' Total Benefits  Low ( Opt 2)' tot2_ h = ' Total Benefits  High ( Opt 2)' mid1 = ' Mid Benefits ( Opt1)' mid2 = ' Mid Benefits ( Opt2)' expspt = ' Exposed Sport Pop ( 15 45yrs)' expsub = ' Exposed Sub Pop ( 15 45yrs)'; 172 172 output out = rundat. chld_ neo ( drop= _ type_ _ freq_) sum = red1r red2r red1s red2s ben1_ lr ben1_ ls ben1_ hr ben1_ hs ben2_ lr ben2_ ls ben2_ hr ben2_ hs tot1_ l tot1_ h tot2_ l tot2_ h mid1r mid1s mid2r mid2s mid1 mid2 expspt expsub; title3 ' Benefits ($ 2001)'; quit;

data rundat. neo_ tbl ( keep= gender categ type exppop case1 case2 benlow1 benlow2 benmid1 benmid2 benhigh1 benhigh2); set rundat. chld_ neo;

length gender $ 50 categ $ 50 type $ 50;

gender = " Children"; categ = " Neo Natal Mortality"; type = " Sport"; exppop = expspt; case1 = red1r; case2 = red2r; benlow1 = ben1_ lr; benlow2 = ben2_ lr; benmid1 = mid1r; benmid2 = mid2r; benhigh1 = ben1_ hr; benhigh2 = ben2_ hr; output;

gender = " Children"; categ = " Neo Natal Mortality"; type = " Sub"; exppop = expsub; case1 = red1s; case2 = red2s; benlow1 = ben1_ ls; benlow2 = ben2_ ls; benmid1 = mid1s; benmid2 = mid2s; benhigh1 = ben1_ hs; benhigh2 = ben2_ hs; output; run;

/*****************************************************************************/ /* END MAIN PROGRAM CODE */ /*****************************************************************************/ 173 173 Program Output 174 174 MPM Ohio CS Benefits ( Opt1= Final No GMs, Opt2= none) 29NOV02 NeoNatal Mortality Lead Benefits ( Sub 15) 10: 29 Friday, November 29, 2002 Benefits ($ 2001)

The MEANS Procedure Variable Label Sum                                                              red1r Number of Reductions rec ( Opt 1) 0.0167119 red2r Number of Reductions rec ( Opt 2) 0.0666803 red1s Number of Reductions sub ( Opt 1) 0.0082255 red2s Number of Reductions sub ( Opt 2) 0.0327312 ben1_ lr Sport Low ( Opt1) 41779.81 ben1_ ls Sub Low ( Opt1) 20563.87 ben1_ hr Sport High ( Opt1) 227282.17 ben1_ hs Sub High ( Opt1) 111867.47 ben2_ lr Sport Low ( Opt2) 166700.78 ben2_ ls Sub Low ( Opt2) 81827.97 ben2_ hr Sport High ( Opt2) 906852.27 ben2_ hs Sub High ( Opt2) 445144.15 tot1_ l Total Benefits  Low ( Opt 1) 62343.68 tot1_ h Total Benefits  High ( Opt 1) 339149.64 tot2_ l Total Benefits  Low ( Opt 2) 248528.75 tot2_ h Total Benefits  High ( Opt 2) 1351996.42 mid1r 108627.51 mid1s 53466.07 mid2r 433422.04 mid2s 212752.72 mid1 Mid Benefits ( Opt1) 162093.58 mid2 Mid Benefits ( Opt2) 646174.76 expspt Exposed Sport Pop ( 15 45yrs) 2183.25 expsub Exposed Sub Pop ( 15 45yrs) 109.0500400                                                              175 175 Integrated Exposure Uptake Biokinetic Model ( IEUBK) The model used a range of lead concentrations in fish tissue to estimate the corresponding blood lead level associated with a given lead concentration in the fish tissue. 176 176 " Gen4. txt" Output data set from the IEUBK model run. See DCN 37651. 177 177 " Create Lookup Table. sas" Takes the output file from the IEUBK model run and generates another SAS program which when run creates a format used to transform lead concentrations in fish tissue into blood lead levels. See DCN 37651 for program code. 178 178 " Cnc_ fmt3. sas" Creates a library format for transforming lead concentrations in fish tissue into blood lead levels. The overall hazard ratio for each RF1 reach is then estimated. See DCN 37651. 179 179 " Child Lead Benefits ( Sub 16). sas" Using data from the lead specific data set and results of the IEUBK lead model, child blood lead levels are estimated based on fish consumption in recreational and subsistence fishing families. 180 180 /*****************************************************************************/ /* PROGRAM DOCUMENTATION */ /*****************************************************************************/ /* Program: Child Lead Benefits ( Sub 16) 04 seven years. sas */ /* Author: Abt Associates, Inc. Stuart Smith */ /* Date: 06/ 12/ 2000 */ /* Updated: 11/ 12/ 2002 */ /*

*/ /* This program estimates benefits from reduced consumption of fish tissue */ /* containing lead. Reductions in MP& M facility lead loadings result in */ /* lower probabilties of lead related illnesses in children. */ /*****************************************************************************/

/*****************************************************************************/ /* SET TITLE FOR SUBROUTINE */ /*****************************************************************************/

title2 ' Child Lead Related Benefits ( Sub 16)';

/*****************************************************************************/ /* Set pathname macro for excel benefits spreadsheet */ /* Maps to the results libname set in the main program */ /*****************************************************************************/

% let tbl_ path = % sysfunc( pathname( results));

/*****************************************************************************/ /* BEGIN MAIN PROGRAM CODE */ /*****************************************************************************/

data lead; set rundat. lead;

/*****************************************************************************/ /* Combine the exposed populations, recreational and subsistence; fresh and */ /* salt water */ /*****************************************************************************/

expspt = fwsptpop + swsptpop; expsub = fwsubpop + swsubpop;

/*****************************************************************************/ /* Calculate the lead concentration in fish tissue available for intake */ /* = instream conc ( ug/ L)* biocon factor ( kg/ L)* ingestion rate( kg/ day) */ /*****************************************************************************/ 181 181 bcncspt = cnc_ base* 49* 0.00603; t1cncspt = cnc_ trt1* 49* 0.00603; t2cncspt = cnc_ trt2* 49* 0.00603;

bcncsub = cnc_ base* 49* 0.03033; t1cncsub = cnc_ trt1* 49* 0.03033; t2cncsub = cnc_ trt2* 49* 0.03033;

keep reachnmb expspt expsub bcncspt t1cncspt t2cncspt bcncsub t1cncsub t2cncsub event_ wt; run;

proc print; var reachnmb expspt expsub bcncspt t1cncspt t2cncspt bcncsub t1cncsub t2cncsub event_ wt; title3 ' Exposed Pops and Pb conc in fish tissue'; quit;

data lead2; set lead;

/*****************************************************************************/ /* Determine sport blood levels */ /* cnc_ fmt. is a special format which translates the concentration in the */ /* fish tissue into an index value for a lookup table of corresponding blood*/ /* lead levels */ /*****************************************************************************/

/*****************************************************************************/ /* The following codes uses special user defined formats to translate the */ /* concentration in fish tissue into a blood lead level. The IEUBK model was*/ /* run with several hundred concentrations in fish tissue resulting in a */ /* large file with blood lead levels for each concentration. The SAS format */ /* maps the concentration to the appropriate row in the blood lead level */ /* data set */ /* */ /* If the concentration cannot be mapped ( a return value of 9999) and it is */ /* larger than the smallest concentration value then it must be larger than */ /* the maximum in the set, so set it to at least the maximum ( found in row */ /* 2996). If it is not larger than 0.5, then use the blodd lead associated */ /* with a concentration of 0.5 which is found in row 1. */ /*****************************************************************************/

/* Get base pbp level */ lookup = input( put( round( bcncspt,. 1), cnc_ fmt.), 4.0); if lookup = 9999 then lookup = 1; if lookup = 9999 and bcncspt > 0.5 then lookup = 2996; set ohio. ubklook4 point = lookup; pb_ bspt = bloodPb;

/* Get t1 pbp level */ lookup = input( put( round( t1cncspt,. 1), cnc_ fmt.), 4.0); 182 182 if lookup = 9999 then lookup = 1; if lookup = 9999 and t1cncspt > 0.5 then lookup = 2996; set ohio. ubklook4 point = lookup; pb_ 1spt = bloodPb;

/* Get t2 pbp level */ lookup = input( put( round( t2cncspt,. 1), cnc_ fmt.), 4.0); if lookup = 9999 then lookup = 1; if lookup = 9999 and t2cncspt > 0.5 then lookup = 1; set ohio. ubklook4 point = lookup; pb_ 2spt = bloodPb;

/* Determine subsistence blood levels */ /* Get base pbp level */ lookup = input( put( round( bcncsub,. 1), cnc_ fmt.), 4.0); if lookup = 9999 then lookup = 1; if lookup = 9999 and bcncsub > 0.5 then lookup = 2996; set ohio. ubklook4 point = lookup; pb_ bsub = bloodPb;

/* Get t1 pbp level */ lookup = input( put( round( t1cncsub,. 1), cnc_ fmt.), 4.0); if lookup = 9999 then lookup = 1; if lookup = 9999 and t1cncsub > 0.5 then lookup = 2996; set ohio. ubklook4 point = lookup; pb_ 1sub = bloodPb;

/* Get t2 pbp level */ lookup = input( put( round( t2cncsub,. 1), cnc_ fmt.), 4.0); if lookup = 9999 then lookup = 1; if lookup = 9999 and t2cncsub > 0.5 then lookup = 2996; set ohio. ubklook4 point = lookup; pb_ 2sub = bloodPb;

run;

proc print; var reachnmb pb_ bspt pb_ 1spt pb_ 2spt pb_ bsub pb_ 1sub pb_ 2sub; title3 ' Blood lead levels'; quit;

data lead3; set lead2;

kidspct = 0.1177; /* Percent of kids aged 0 7, U. S. Census 2000 */

popspt = expspt* kidspct; popsub = expsub* kidspct;

GM1_ spt = pb_ bspt  pb_ 1spt; GM2_ spt = pb_ bspt  pb_ 2spt; 183 183 GM1_ sub = pb_ bsub  pb_ 1sub; GM2_ sub = pb_ bsub  pb_ 2sub;

/* Avoided lost IQ points */ avIQ1spt = ( GM1_ spt)* 0.25*( popspt/ 7); avIQ2spt = ( GM2_ spt)* 0.25*( popspt/ 7);

avIQ1sub = ( GM1_ sub)* 0.25*( popsub/ 7); avIQ2sub = ( GM2_ sub)* 0.25*( popsub/ 7);

IQ1_ spt = avIQ1spt * 9419; IQ2_ spt = avIQ2spt * 9419;

IQ1_ sub = avIQ1sub * 9419; IQ2_ sub = avIQ2sub * 9419;

/* Fewer children with IQ below 70 */

if GM1_ spt > 0 then do; num1spt = ( 70  ( 100 + 0.25* GM1_ spt))/ 15; sv701spt = 0.02275  cdf(' NORMAL', num1spt); b70_ 1spt = sv701spt * ( popspt/ 7) * 58012; end; else do; sv701spt = 0; b70_ 1spt = 0; end;

if GM2_ spt > 0 then do; num2spt = ( 70  ( 100 + 0.25* GM2_ spt))/ 15; sv702spt = 0.02275  cdf(' NORMAL', num2spt); b70_ 2spt = sv702spt * ( popspt/ 7) * 58012; end; else do; sv702spt = 0; b70_ 2spt = 0; end;

if GM1_ sub > 0 then do; num1sub = ( 70  ( 100 + 0.25* GM1_ sub))/ 15; sv701sub = 0.02275  cdf(' NORMAL', num1sub); b70_ 1sub = sv701sub * ( popsub/ 7) * 58012; end; else do; sv701sub = 0; b70_ 1sub = 0; end;

if GM2_ sub > 0 then do; num2sub = ( 70  ( 100 + 0.25* GM2_ sub))/ 15; sv702sub = 0.02275  cdf(' NORMAL', num2sub); b70_ 2sub = sv702sub * ( popsub/ 7) * 58012; 184 184 end; else do; sv702sub = 0; b70_ 2sub = 0; end;

/* Number of cases of IQ< 70 saved */

c70_ 1spt = sv701spt * ( popspt/ 7); c70_ 2spt = sv702spt * ( popspt/ 7); c70_ 1sub = sv701sub * ( popsub/ 7); c70_ 2sub = sv702sub * ( popsub/ 7);

check1 = pdf(' LOGNORMAL', 20, pb_ bspt, 2.09); check2 = pdf(' LOGNORMAL', 20, pb_ bsub, 2.09);

spt1_ 20=( pdf(' LOGNORMAL', 20, pb_ 1spt, 2.09)  check1)* 0.2*( popspt/ 7)* 16485; spt2_ 20=( pdf(' LOGNORMAL', 20, pb_ 2spt, 2.09)  check1)* 0.2*( popspt/ 7)* 16485; sub1_ 20=( pdf(' LOGNORMAL', 20, pb_ 1sub, 2.09)  check2)* 0.2*( popsub/ 7)* 16485; sub2_ 20=( pdf(' LOGNORMAL', 20, pb_ 2sub, 2.09)  check2)* 0.2*( popsub/ 7)* 16485;

red201sp=( pdf(' LOGNORMAL', 20, pb_ 1spt, 2.09)  check1)* 0.2*( popspt/ 7); red202sp=( pdf(' LOGNORMAL', 20, pb_ 2spt, 2.09)  check1)* 0.2*( popspt/ 7); red201sb=( pdf(' LOGNORMAL', 20, pb_ 1sub, 2.09)  check2)* 0.2*( popsub/ 7); red202sb=( pdf(' LOGNORMAL', 20, pb_ 2sub, 2.09)  check2)* 0.2*( popsub/ 7); run;

proc means sum data= lead3; weight event_ wt; var avIQ1spt avIQ1sub avIQ2spt avIQ2sub IQ1_ spt IQ1_ sub IQ2_ spt IQ2_ sub b70_ 1spt b70_ 1sub b70_ 2spt b70_ 2sub sv701spt sv702spt sv701sub sv702sub c70_ 1spt c70_ 2spt c70_ 1sub c70_ 2sub spt1_ 20 spt2_ 20 sub1_ 20 sub2_ 20 red201sp red202sp red201sb red202sb popspt popsub; output out = rundat. chld_ ld sum = avIQ1spt avIQ1sub avIQ2spt avIQ2sub IQ1_ spt IQ1_ sub IQ2_ spt IQ2_ sub b70_ 1spt b70_ 1sub b70_ 2spt b70_ 2sub sv701spt sv702spt sv701sub sv702sub c70_ 1spt c70_ 2spt c70_ 1sub c70_ 2sub spt1_ 20 spt2_ 20 sub1_ 20 sub2_ 20 red201sp red202sp red201sb red202sb popspt popsub; title3 ' Benefits ($ 2001)'; title4 ' Ingestion Rate: 17.46 ( rec), 50.14 ( sub)'; quit;

data rundat. chld_ tbl ( keep= gender categ type exppop case1 case2 benlow1 benlow2 benmid1 benmid2 benhigh1 benhigh2); 185 185 set rundat. chld_ ld;

length gender $ 50 categ $ 50 type $ 50;

array IQ[ 8] IQ1_ spt avIQ1spt IQ2_ spt avIQ2spt IQ1_ sub avIQ1sub IQ2_ sub avIQ2sub; array RD[ 8] b70_ 1spt c70_ 1spt b70_ 2spt c70_ 2spt b70_ 1sub c70_ 1sub b70_ 2sub c70_ 2sub; array PB[ 8] spt1_ 20 red201sp spt2_ 20 red202sp sub1_ 20 red201sb sub2_ 20 red202sb;

gender = " Children";

if _ n_ = 1 then do; do i = 1 to 6; if i = 1 then do; categ = " Avoided IQ Loss"; type = " Sport"; case1 = IQ[ 2]; case2 = IQ[ 4]; benlow1 = IQ[ 1]; benlow2 = IQ[ 3]; benmid1 = benlow1; benmid2 = benlow2; benhigh1 = benlow1; benhigh2 = benlow2; output; end; if i = 2 then do; categ = " Avoided IQ Loss"; type = " Sub"; case1 = IQ[ 6]; case2 = IQ[ 8]; benlow1 = IQ[ 5]; benlow2 = IQ[ 7]; benmid1 = benlow1; benmid2 = benlow2; benhigh1 = benlow1; benhigh2 = benlow2; output; end; if i = 3 then do; categ = " Reduced IQ < 70"; type = " Sport"; case1 = RD[ 2]; case2 = RD[ 4]; benlow1 = RD[ 1]; benlow2 = RD[ 3]; benmid1 = benlow1; benmid2 = benlow2; benhigh1 = benlow1; benhigh2 = benlow2; output; end; if i = 4 then do; categ = " Reduced IQ < 70"; type = " Sub"; case1 = RD[ 6]; case2 = RD[ 8]; benlow1 = RD[ 5]; benlow2 = RD[ 7]; benmid1 = benlow1; benmid2 = benlow2; benhigh1 = benlow1; benhigh2 = benlow2; output; end; if i = 5 then do; categ = " Reduced Pb > 20"; type = " Sport"; case1 = PB[ 2]; case2 = PB[ 4]; 186 186 benlow1 = PB[ 1]; benlow2 = PB[ 3]; benmid1 = benlow1; benmid2 = benlow2; benhigh1 = benlow1; benhigh2 = benlow2; output; end; if i = 6 then do; categ = " Reduced Pb > 20"; type = " Sub"; case1 = PB[ 6]; case2 = PB[ 8]; benlow1 = PB[ 5]; benlow2 = PB[ 7]; benmid1 = benlow1; benmid2 = benlow2; benhigh1 = benlow1; benhigh2 = benlow2; output; end; end; end; run;

data rundat. chld_ all; set rundat. neo_ tbl rundat. chld_ tbl; run;

proc summary data= rundat. chld_ all; var benlow1 benmid1 benhigh1 benlow2 benmid2 benhigh2; output out = rundat. chld_ tot ( drop= _ type_ _ freq_) sum = benlow1 benmid1 benhigh1 benlow2 benmid2 benhigh2; run;

/*****************************************************************************/ /* Generate data set for export to Excel */ /*****************************************************************************/

data exlchld ( keep= titlecol col1 col11 label=" Child Lead Benefits Unweighted"); set rundat. chld_ all rundat. chld_ tot; length titlecol $ 50 col1  col11 $ 128;

if _ n_ = 1 then do; titlecol = " Table: Child Lead Benefits, Unweighted Estimates"; output; titlecol = & thetitle; output; titlecol = " "; output; col4 = " Option 1"; col8 = " Option 2"; output; col2 = " Category"; col3 = " Type"; col4 = " Reduced Cases"; col5 = " Low"; col6 = " Mid"; col7 = " High"; col8 = " Reduced Cases"; col9 = " Low"; col10 = " Mid"; col11 = " High"; output; 187 187 end;

if _ n_ = 9 then col1 = " Total"; else col1 = gender;

col2 = trim( categ); col3 = trim( type); col4 = trim( case1); col5 = trim( benlow1); col6 = trim( benmid1); col7 = trim( benhigh1); col8 = trim( case2); col9 = trim( benlow2); col10 = trim( benmid2); col11 = trim( benhigh2); output; run;

/*****************************************************************************/ /* Export to Excel */ /*****************************************************************************/

proc export data = exlchld outfile = "& tbl_ path\ Ohio Child Lead. xls" dbms= excel2000 replace; run;

/*****************************************************************************/ /* END MAIN PROGRAM CODE */ /*****************************************************************************/ 188 188 Program Output 189 189 MPM Ohio CS Benefits ( Opt1= Final No GMs, Opt2= none) 29NOV02 Child Lead Related Benefits ( Sub 16) 10: 29 Friday, November 29, 2002 Benefits ($ 2001) Ingestion Rate: 17.46 ( rec), 50.14 ( sub)

The MEANS Procedure Variable Sum                          avIQ1spt 22.4754035 avIQ1sub 4.4843700 avIQ2spt 84.1069067 avIQ2sub 16.9590988 IQ1_ spt 211695.83 IQ1_ sub 42238.28 IQ2_ spt 792202.95 IQ2_ sub 159737.75 b70_ 1spt 4530.57 b70_ 1sub 814.2134707 b70_ 2spt 16570.68 b70_ 2sub 2845.30 sv701spt 0.0018329 sv702spt 0.0054442 sv701sub 0.0065726 sv702sub 0.0191398 c70_ 1spt 0.0780971 c70_ 2spt 0.2856423 c70_ 1sub 0.0140353 c70_ 2sub 0.0490468 spt1_ 20 0 spt2_ 20 1632.17 sub1_ 20 40.8671823 sub2_ 20 163.6446840 red201sp 0 red202sp 0.0990095 red201sb 0.0024791 red202sb 0.0099269 popspt 1140.51 popsub 56.9668000                          190 190 Contents of Ohio Child Lead. xls titlecol col1 col2 col3 col4 col5 col6 col7 Table: Child Lead Benefits, Unweighted Estimates MPM Ohio CS Benefits ( Opt1= Final No GMs, Opt2= none)

Option 1 Category Type Reduced Cases Low Mid High Children Neo Natal Mortality Sport 0.016711 9244 $ 41,779.81 $ 108,627.51 $ 227,282.17 Children Neo Natal Mortality Sub 0.008225 5491 $ 20,563.87 $ 53,466.07 $ 111,867.47 Children Avoided IQ Loss Sport 22.47540 35 $ 211,695.83 $ 211,695.83 $ 211,695.83 Children Avoided IQ Loss Sub 4.48437 $ 42,238.28 $ 42,238.28 $ 42,238.28 Children Reduced IQ < 70 Sport 0.078097 1099 $ 4,530.57 $ 4,530.57 $ 4,530.57 Children Reduced IQ < 70 Sub 0.014035 2594 $ 814.21 $ 814.21 $ 814.21 Children Reduced Pb > 20 Sport 0.042430 1945 $ 699.46 $ 699.46 $ 699.46 Children Reduced Pb > 20 Sub 0.002479 0526 $ 40.87 $ 40.87 $ 40.87 Total . $ 322,362.90 $ 422,112.80 $ 599,168.86 191 191 Recreational Benefits 192 192 " Human Health AWQC ( Sub 2). sas" The number of human health based AWQC exceedences for each RF1 reach are estimated and output to a data set. See Human Health Benefits Cancer from Fish Consumption for program code and output. 193 193 " Aquatic Life AWQC ( Sub 3). sas" The number of aquatic life based AWQC exceedences for each RF1 reach are estimated and output to a data set. 194 194 /*****************************************************************************/ /* PROGRAM DOCUMENTATION */ /*****************************************************************************/ /* Program: Aquatic Life AWQC ( Sub 3). sas */ /* Author: Stuart Smith */ /* Date: unknown */ /* Updated: 9/ 24/ 2002 */ /*

*/ /* ( 1) IDENTIFIES MP& M DISCHARGE REACHES IN WHICH POLLUTANT CONCENTRATIONS */ /* EXCEED THE AWQC VALUES FOR AQUATIC LIFE; */ /* ( 2) EXTRAPOLATES THE RESULTS TO THE POPULATION LEVEL BY USING */ /* DIFFERENTIAL WEIGHTING. */ /* THE TOTAL NUMBER OF EXCEEDENCE EVENTS IS THEN ESTIMATED BY SUMMING OVER */ /* THE RESULTS FROM THE FIRST AND SECOND RUN. */ /*****************************************************************************/

/*****************************************************************************/ /* SET TITLE FOR SUBROUTINE */ /*****************************************************************************/

title2 ' Output from Aquatic Life ( Sub 3)';

/*****************************************************************************/ /* BEGIN MAIN PROGRAM CODE */ /*****************************************************************************/

/*****************************************************************************/ /* DISCHARGE EVENTS, ASSOCIATED LOADINGS AND WEIGHTS HAVE BEEN CALCULATED BY */ /* ANOTHER PROGRAM. ALL UNIT CONVERSIONS HAVE OCCURRED. SEE " Create Datasets */ /* ( Sub 1). sas" FOR SPECIFIC PROGRAM INFORMATION. */ /*****************************************************************************/

/*****************************************************************************/ /* PULL TOGETHER THE EVENTS AND CHEMICAL SPECIFIC PARAMETERS */ /*****************************************************************************/

data rchs; set ohio. fac_ info; keep reachnmb segl mnflo svten acute chronic dcp wbtype surface drainage volume; run;

/* Sort by unique reach number and keep only one*/ proc sort nodupkey data= rchs; by reachnmb; quit; 195 195 /* Sort pollutant characteristics by chemical cas no*/ Proc sort data = ohio. chemdata; by casno; quit;

Proc sql; create table stream as select event_ ld. reachnmb, event_ ld. casno, evnt_ flo, base, treat1, treat2, event_ wt, segl, mnflo as mean_ flo, svten as flo7q10, acute as adf, chronic as cdf, dcp, wbtype, biodegre as decay, surface, drainage, volume from rundat. event_ ld, ohio. chemdata, rchs where event_ ld. casno = chemdata. casno and event_ ld. reachnmb = rchs. reachnmb order by reachnmb, casno; quit;

/*****************************************************************************/ /* FRESHWATER REACHES  CONCENTRATIONS AND AWQC EXCEEDENCES */ /*****************************************************************************/

/*****************************************************************************/ /* Calculate chemical concentrations in lakes */ /*****************************************************************************/

data Lake; set stream; if wbtype = ' lake'; if decay;

keep reachnmb casno base treat1 treat2 adf cdf restime decay event_ wt;

/* We have drainage area and surface area information */ if surface ^= . and drainage ^= . then do; num = drainage; /* Drainage area in sq. miles */ denom = surface* 0.0015625; /* Convert surface area from acres to sq. miles */ logdays = 4.077  ( 1.177* log10( num/ denom)); restime = 10** logdays; time1 = restime* 24; /* CONVERT HYDRAULIC TIME FROM DAYS INTO HOURS */ cnc_ aqcb = ( base/ evnt_ flo)/( 1+ time1* decay); cnc_ aqc1 = ( treat1/ evnt_ flo)/( 1+ time1* decay); cnc_ aqc2 = ( treat2/ evnt_ flo)/( 1+ time1* decay); good = 1; end;

/* Missing area measure( s), do end of pipe value */ else do; cnc_ aqcb = ( base/ evnt_ flo); cnc_ aqc1 = ( treat1/ evnt_ flo); cnc_ aqc2 = ( treat2/ evnt_ flo); end;

cnc_ aqab = cnc_ aqcb; cnc_ aqa1 = cnc_ aqc1; cnc_ aqa2 = cnc_ aqc2; 196 196 keep reachnmb casno cnc_ aqcb cnc_ aqc1 cnc_ aqc2 cnc_ aqab cnc_ aqa1 cnc_ aqa2 event_ wt; run;

/* Great Lakes  Lake Erie */ data BigLake; set stream; if wbtype = ' glake';

/* TEMPORARY FIX  Hard code CDF to 10 for lake erie reaches. Those that have a cdf ( all equal 4.85) are changed to 10. All others remain missing for now.

Stuart Smith 07.16.02 ( evnt_ flo* cdf) changed to ( evnt_ flo* 10) See below.

*/

if cdf ^=. then do; /* We have CDF, so use this*/ cnc_ aqcb = base/( evnt_ flo* 10); cnc_ aqc1 = treat1/( evnt_ flo* 10); cnc_ aqc2 = treat2/( evnt_ flo* 10); end; else if dcp^=. then do; benchld= 10000* 907.2; /* benchmark load is 10000 per year; 907.2 is coversion*/ /* factor from kg to ton */

cnc_ aqcb=(( base/ 10** 9)* 365* dcp)/ benchld; cnc_ aqc1=(( treat1/ 10** 9)* 365* dcp)/ benchld; cnc_ aqc2=(( treat2/ 10** 9)* 365* dcp)/ benchld; end; else do; cnc_ aqcb = .; cnc_ aqc1 = .; cnc_ aqc2 = .; end;

cnc_ aqab = cnc_ aqcb; cnc_ aqa1 = cnc_ aqc1; cnc_ aqa2 = cnc_ aqc2;

if cnc_ aqcb=. then delete;

keep reachnmb casno cnc_ aqcb cnc_ aqc1 cnc_ aqc2 cnc_ aqab cnc_ aqa1 cnc_ aqa2 event_ wt; run;

/*****************************************************************************/ /* Combine small and large lakes */ /*****************************************************************************/ 197 197 data freshwat; set BigLake Lake; run;

proc sort data= freshwat; by reachnmb casno; quit;

/*****************************************************************************/ /* Pull in estimated in stream concentrations using mean flow */ /* These values are calculated by the decay model outside of this analysis */ /*****************************************************************************/

data brad; set rundat. brdevnt2;

cnc_ aqcb = base; cnc_ aqc1 = treat1; cnc_ aqc2 = treat2;

cnc_ aqab = cnc_ aqcb; cnc_ aqa1 = cnc_ aqc1; cnc_ aqa2 = cnc_ aqc2;

if cnc_ aqcb=. then delete; event_ wt = weight;

keep reachnmb casno cnc_ aqcb cnc_ aqc1 cnc_ aqc2 cnc_ aqab cnc_ aqa1 cnc_ aqa2 event_ wt; run;

data freshwat2; merge brad freshwat; by reachnmb casno; run;

/*****************************************************************************/ /* Compare in stream pollutant concentrations with freshwater AWQCs for */ /* aquatic life. */ /*****************************************************************************/

proc sql; create table awqc1 as select reachnmb, freshwat2. casno, chemical, cnc_ aqcb, cnc_ aqc1, cnc_ aqc2, cnc_ aqab, cnc_ aqa1, cnc_ aqa2, faval__ i as faval, fcval__ i as fcval, event_ wt from freshwat2, ohio. chemdata where freshwat2. casno = chemdata. casno order by reachnmb, casno; quit;

data stream4; 198 198 set awqc1;

if cnc_ aqcb > fcval and fcval > 0 then chronicb = 1; if cnc_ aqc1 > fcval and fcval > 0 then chronic1 = 1; if cnc_ aqc2 > fcval and fcval > 0 then chronic2 = 1; if cnc_ aqcb > faval and faval > 0 then acuteb = 1; if cnc_ aqc1 > faval and faval > 0 then acute1 = 1; if cnc_ aqc2 > faval and faval > 0 then acute2 = 1;

keep reachnmb casno chemical chronicb chronic1 chronic2 acuteb acute1 acute2 event_ wt; run;

data allreach; set stream4; run;

/*****************************************************************************/ /* END FRESHWATER REACHES */ /*****************************************************************************/

proc sql;

/* Estimate AWQCs exceedance by chemicals on a sample and national basis*/ /* adjustment weight variable awt replaced with 1, not used in analysis */

create table chm_ awqc as select chemical, sum( chronicb) as crb, sum( chronic1) as cr1, sum( chronic2) as cr2, sum( acuteb) as acb, sum( acute1) as ac1, sum( acute2) as ac2, sum( chronicb* event_ wt* 1) as ntlbw, sum( chronic1* event_ wt* 1) as ntl1w, sum( chronic2* event_ wt* 1) as ntl2w, sum( acuteb* event_ wt* 1) as ntlbo, sum( acute1* event_ wt* 1) as ntl1o, sum( acute2* event_ wt* 1) as ntl2o, case when sum( chronicb) >= 1 then 1 else 0 end as chemcrb, case when sum( chronic1) >= 1 then 1 else 0 end as chemcr1, case when sum( chronic2) >= 1 then 1 else 0 end as chemcr2, case when sum( acuteb) >= 1 then 1 else 0 end as chemacb, case when sum( acute1) >= 1 then 1 else 0 end as chemac1, case when sum( acute2) >= 1 then 1 else 0 end as chemac2 from allreach where chronicb> 0 or acuteb> 0 group by chemical order by chemical;

/* Estimate aquatic life AWQC Exceedences by option/ reach */

create table aq_ life2 as select allreach. reachnmb, sum( chronicb) as test_ cb, sum( chronic1) as test_ c1, sum( chronic2) as test_ c2, sum ( acuteb) as test_ ab, sum( acute1) as test_ a1, sum ( acute2) as test_ a2, sum( chronicb* event_ wt* 1) as ntlb1, 199 199 sum( chronic1* event_ wt* 1) as ntnl11, sum( chronic2* event_ wt* 1) as ntnl21, sum( acuteb * event_ wt* 1) as ntlb2, sum( acute1* event_ wt* 1) as ntnl12, sum( acute2* event_ wt* 1) as ntnl22, case when sum( chronicb) >= 1 then 1 else 0 end as rchcrb, case when sum( chronic1) >= 1 then 1 else 0 end as rchcr1, case when sum( chronic2) >= 1 then 1 else 0 end as rchcr2, case when sum( acuteb) >= 1 then 1 else 0 end as rchacb, case when sum( acute1) >= 1 then 1 else 0 end as rchac1, case when sum( acute2) >= 1 then 1 else 0 end as rchac2, sum( event_ wt) as reachwt from allreach where chronicb> 0 or acuteb> 0 group by reachnmb order by reachnmb;

create table rch1 as select sum( distinct event_ wt) as wght1, reachnmb, chemical from allreach where chronicb > 0 group by reachnmb, chemical order by reachnmb, chemical;

create table chrnb as select max( wght1) as chrnc_ b, reachnmb from rch1 group by reachnmb order by reachnmb;

create table rch2 as select sum( distinct event_ wt) as wght2, reachnmb, chemical from allreach where acuteb > 0 group by reachnmb, chemical order by reachnmb, chemical;

create table actb as select max( wght2) as acutr_ b, reachnmb from rch2 group by reachnmb order by reachnmb;

create table rch3 as select sum( distinct event_ wt) as wght3, reachnmb, chemical from allreach where chronic1 > 0 group by reachnmb, chemical order by reachnmb, chemical; 200 200 create table chrn1 as select max( wght3) as chrnc_ 1, reachnmb from rch3 group by reachnmb order by reachnmb;

create table rch4 as select sum( distinct event_ wt) as wght4, reachnmb, chemical from allreach where acute1 > 0 group by reachnmb, chemical order by reachnmb, chemical;

create table act1 as select max( wght4) as acutr_ 1, reachnmb from rch4 group by reachnmb order by reachnmb;

create table rch5 as select sum( distinct event_ wt) as wght5, reachnmb, chemical from allreach where chronic2 > 0 group by reachnmb, chemical order by reachnmb, chemical;

create table chrn2 as select max( wght5) as chrnc_ 2, reachnmb from rch5 group by reachnmb order by reachnmb;

create table rch6 as select sum( distinct event_ wt) as wght6, reachnmb, chemical from allreach where acute2 > 0 group by reachnmb, chemical order by reachnmb, chemical;

create table act2 as select max( wght6) as acutr_ 2, reachnmb from rch6 group by reachnmb order by reachnmb;

create table rch7 as select sum( distinct event_ wt) as wght7, reachnmb, chemical from allreach 201 201 where chronicb > 0 or acuteb > 0 group by reachnmb, chemical order by reachnmb, chemical;

create table multi_ b as select max( wght7) as multi_ b, reachnmb from rch7 group by reachnmb order by reachnmb;

create table rch8 as select sum( distinct event_ wt) as wght8, reachnmb, chemical from allreach where chronic1 > 0 or acute1 > 0 group by reachnmb, chemical order by reachnmb, chemical;

create table multi_ 1 as select max( wght8) as multi_ 1, reachnmb from rch8 group by reachnmb order by reachnmb;

create table rch9 as select sum( distinct event_ wt) as wght9, reachnmb, chemical from allreach where chronic2 > 0 or acute2 > 0 group by reachnmb, chemical order by reachnmb, chemical;

create table multi_ 2 as select max( wght9) as multi_ 2, reachnmb from rch9 group by reachnmb order by reachnmb; quit;

data rchwts; merge chrnb actb chrn1 act1 chrn2 act2 multi_ b multi_ 1 multi_ 2; by reachnmb;

if chrnc_ b=. then chrnc_ b= 0; if chrnc_ 1=. then chrnc_ 1= 0; if chrnc_ 2=. then chrnc_ 2= 0; if acutr_ b=. then acutr_ b= 0; if acutr_ 1=. then acutr_ 1= 0; if acutr_ 2=. then acutr_ 2= 0; if multi_ b=. then multi_ b= 0; if multi_ 1=. then multi_ 1= 0; if multi_ 2=. then multi_ 2= 0; 202 202 run;

quit;

/* Save the affected reaches for the recreational benefits program*/

data rundat. rec_ al; set allreach; if chronicb > 0 or acuteb > 0;

drop reaches; run;

proc means sum data= aq_ life2; var ntlb1 ntnl11 ntnl21 ntlb2 ntnl12 ntnl22 rchcrb rchcr1 rchcr2 rchacb rchac1 rchac2; label reachnmb =' Reach ID' ntlb1 = ' Chronic AWQC Exeedences ( BL)' ntnl11 = ' Chronic AWQC Exeedences ( Opt 1)' ntnl21 = ' Chronic AWQC Exeedences ( Opt 2)' ntlb2 = ' Acute AWQC Exeedences ( Bl)' ntnl12 = ' Acute AWQC Exeedences ( Opt 1)' ntnl22 = ' Acute AWQC Exeedences ( Opt 2)' rchcrb = ' Number of Chronic reaches ( BL)' rchcr1 = ' Number of Chronic reaches ( Opt 1)' rchcr2 = ' Number of Chronic reaches ( Opt 2)' rchacb = ' Number of Acute reaches ( BL)' rchac1 = ' Number of Acute reaches ( Opt 1)' rchac2 = ' Number of Acute reaches ( Opt 2)';

title3 ' Aquatic Life AWQC Exceedences by Option';

proc means sum data= chm_ awqc; var ntlbw ntl1w ntl2w ntlbo ntl1o ntl2o chemcrb chemcr1 chemcr2 chemacb chemac1 chemac2; label ntlbw = ' Chronic AWQC Exeedences ( BL)' ntl1w = ' Chronic AWQC Exeedences ( Opt 1)' ntl2w = ' Chronic AWQC Exeedences ( Opt 2)' ntlbo = ' Acute AWQC Exeedences ( Bl)' ntl1o = ' Acute AWQC Exeedences ( Opt 1)' ntl2o = ' Acute AWQC Exeedences ( Opt 2)' chemcrb = ' Number of Chronic pol. ( BL)' chemcr1 = ' Number of Chronic pol. ( Opt 1)' chemcr2 = ' Number of Chronic pol. ( Opt 2)' chemacb = ' Number of Acute pol. ( BL)' chemac1 = ' Number of Acute pol. ( Opt 1)' chemac2 = ' Number of Acute pol. ( Opt 2)';

title3 ' AWQC Exceedances by Pollutant/ Option';