* ############ * # READ-ME # * ############ * This STATA 11 do-file replicates findings in * "The State of the Labor Market for Registered Nurses." * To begin, you must download the CPS-MORG files from 2000 * to 2009, available online at * http://www.nber.org/morg/annual/ * and migrate them to your STATA working directory. * For convenience, a file "nursemorgs.dta" is created, from * which any latter analysis may be easily performed. * * This do-file was authored by Alan Benson (alanmb@mit.edu), * on June 21-30, 2010. cd "WORKING DIRECTORY NAME HERE" clear all set mem 1500m use morg00.dta for num 1/9: append using morg0X.dta set scheme s2mono egen popx3=total(weight), by(year) gen pop=popx3/3 gen cohort=year-age egen popx3_ageco=total(weight), by(age cohort) gen pop_ageco=popx3_ageco/3 drop popx3 popx3_ageco label define lbl_lfsr94 1 "E: Working" 2 "E: With Job, Not at Work" 3 "U: Layoff" 4 "U: Looking" 5 "Other" 6 "Disabled" 7 "Other" label values lfsr94 lbl_lfsr94 keep if lfsr94<=4 gen one_all=1 * Identify RNs gen rn=0 replace rn=1 if occ00==3130 & year>=2000 label define lbl_rn 0 "Not Nurse" 1 "RN" label value rn lbl_rn * Identify Healthcare Occupations from 2000 SOC Codes Major Groups 29 & 31 gen health=0 replace health=1 if year>=2000 & (occ00>=3000 & occ00<=3650) label var health "0 Not Health-Care Occ, 1 Health Care Occ" label define lbl_health 0 "Non-Healthcare Occ" 1 "Healthcare Occ" label value health lbl_health * Generate Counts by Group gen one_rn=0 replace one_rn=1 if rn==1 gen one_health=0 replace one_health=1 if health==1 * Center Weights (Mean of One) egen temp1=mean(weight) if lfsr>=1 & rn==1, by(year) gen wt_rn=weight/temp1 if lfsr>=1 & rn==1 egen temp2=mean(weight) if lfsr>=1 & health==1, by(year) gen wt_health=weight/temp2 if lfsr>=1 & health==1 egen temp3=mean(weight) if lfsr>=1, by(year) gen wt_all=weight/temp3 if lfsr>=1 for num 1/3: drop tempX save "nursemorgs.dta", replace * Table 1(i): Unemployment rates preserve gen ue_rn=. replace ue_rn=0 if lfsr94<=2 & rn==1 replace ue_rn=wt_rn if lfsr94>=3 & rn==1 gen ue_health=. replace ue_health=0 if lfsr94<=2 & health==1 replace ue_health=wt_health if lfsr94>=3 & health==1 gen ue_all=. replace ue_all=0 if lfsr94<=2 replace ue_all=wt_all if lfsr94>=3 collapse (mean) ue_rn ue_health ue_all (sum) one_rn one_health one_all, by(year) gen hi_rn=ue_rn+2*sqrt((ue_rn*(1-ue_rn))/one_rn) gen lo_rn=ue_rn-2*sqrt((ue_rn*(1-ue_rn))/one_rn) gen hi_health=ue_health+2*sqrt((ue_health*(1-ue_health))/one_health) gen lo_health=ue_health-2*sqrt((ue_health*(1-ue_health))/one_health) gen hi_all=ue_all+2*sqrt((ue_all*(1-ue_all))/one_all) gen lo_all=ue_all-2*sqrt((ue_all*(1-ue_all))/one_all) # delimit ; scatter ue_rn year, pstyle (p2)|| scatter ue_health year, pstyle (p2) || scatter ue_all year, pstyle (p2) || line ue_rn year, pstyle (p2) sort || line ue_health year, pstyle (p3) sort || line ue_all year, pstyle (p4) sort ; # delimit cr restore * Table 1(ii) FTEs Per Capita preserve gen fte_rn=((52*uhours*weight)/3)/2000 if rn==1 gen fte_health=((52*uhours*weight)/3)/2000 if health==1 gen fte_all=((52*uhours*weight)/3)/2000 collapse (sum) fte_rn fte_health fte_all wt_rn one_all (median) pop, by(year) rename fte_rn fterns rename fte_health ftehealth rename fte_all fteall gen ratio_rn=fterns/pop gen ratio_health=ftehealth/pop gen ratio_all=fteall/pop gen hi_rn=ratio_rn+2*sqrt((ratio_rn*(1-ratio_rn))/one_all) gen lo_rn=ratio_rn-2*sqrt((ratio_rn*(1-ratio_rn))/one_all) scatter ratio_rn year, pstyle(p1 p1 p1) sort || line ratio_rn hi_rn lo_rn year, pstyle(p1) lpattern(_ .) sort restore * Table 1(iii): LT 35 Hrs due to Slack Work preserve gen slack_rn=. replace slack_rn=0 if rn==1 replace slack_rn=wt_rn if reason94==1 & rn==1 gen slack_health=. replace slack_health=0 if health==1 replace slack_health=wt_health if reason94==1 & health==1 gen slack_all=0 replace slack_all=wt_all if reason94==1 collapse (mean) slack_rn slack_health slack_all (sum) one_rn one_health one_all, by(year) gen hi_rn=slack_rn+2*sqrt((slack_rn*(1-slack_rn))/one_rn) gen lo_rn=slack_rn-2*sqrt((slack_rn*(1-slack_rn))/one_rn) gen hi_health=slack_health+2*sqrt((slack_health*(1-slack_health))/one_health) gen lo_health=slack_health-2*sqrt((slack_health*(1-slack_health))/one_health) gen hi_all=slack_all+2*sqrt((slack_all*(1-slack_all))/one_all) gen lo_all=slack_all-2*sqrt((slack_all*(1-slack_all))/one_all) *# delimit ; *scatter slack_rn year, pstyle (p2)|| *scatter slack_health year, pstyle (p2)|| *scatter slack_all year, pstyle (p2)|| *line slack_rn lo_rn hi_rn year, pstyle (p2 p2 p2) sort || *line slack_health lo_health hi_health year, pstyle (p3 p3 p3) sort || *line slack_all lo_all hi_all year, pstyle (p4 p4 p4) sort *; *# delimit cr scatter slack_rn slack_health slack_all year, pstyle(p2 p3 p4) sort|| line slack_rn slack_health slack_all year, pstyle (p2 p3 p4) lpattern(longdash shortdash solid) sort restore * Table 2: Reason LT 35 Hrs/Week preserve label define lbl_reason94 1 "Slack Work" 2 "Seasonal" 3 "New Job Dur Wk" 4 "On Vacation" 5 "Illness" 6 "Holiday" 7 "Child Care" 8 "Other Family" 9 "Labor Dispute" 10 "Weather" 11 "School/Training" 12 "Civic/Mil Duty" 13 "Other" label values reason94 lbl_reason94 gen whylt35=. replace whylt35=1 if reason94==1 replace whylt35=2 if reason94==4 replace whylt35=3 if reason94==6 replace whylt35=4 if reason94==5 replace whylt35=5 if reason94==2 | reason94==3 | reason94>7 replace whylt35=. if reason94==. label define lbl_whylt35 1 "Slack Work" 2 "Vacation" 3 "Holiday" 4 "Illness" 5 "Other" label values whylt35 lbl_whylt35 gen period=0 replace period=1 if year>=2005 & year<=2008 replace period=2 if year==2009 label define lbl_period 0 "2000-2004" 1 "2005-2008" 2 "2009" label values period lbl_period gen temp=round(weight,1) tab2 whylt35 period [fw=temp], col nofreq restore * TEXT: Claim regarding young workers preserve keep if age>=20 & age<=29 gen ue_rn=. replace ue_rn=0 if lfsr94<=2 & rn==1 replace ue_rn=wt_rn if lfsr94>=3 & rn==1 gen ue_health=. replace ue_health=0 if lfsr94<=2 & health==1 replace ue_health=wt_health if lfsr94>=3 & health==1 gen ue_all=. replace ue_all=0 if lfsr94<=2 replace ue_all=wt_all if lfsr94>=3 collapse (mean) ue_rn ue_health ue_all (sum) one_rn one_health one_all, by(year) tab year, sum(ue_rn) mean tab year, sum(ue_all) mean gen hi_rn=ue_rn+2*sqrt((ue_rn*(1-ue_rn))/one_rn) gen lo_rn=ue_rn-2*sqrt((ue_rn*(1-ue_rn))/one_rn) gen hi_health=ue_health+2*sqrt((ue_health*(1-ue_health))/one_health) gen lo_health=ue_health-2*sqrt((ue_health*(1-ue_health))/one_health) gen hi_all=ue_all+2*sqrt((ue_all*(1-ue_all))/one_all) gen lo_all=ue_all-2*sqrt((ue_all*(1-ue_all))/one_all) # delimit ; scatter ue_rn year, pstyle (p2)|| scatter ue_health year, pstyle (p2) || scatter ue_all year, pstyle (p2) || line ue_rn year, pstyle (p2) sort || line ue_health year, pstyle (p3) sort || line ue_all year, pstyle (p4) sort ; # delimit cr restore * TEXT: On Layoff preserve gen lay_rn=. replace lay_rn=0 if lfsr94<=2 & rn==1 replace lay_rn=wt_rn if lfsr94==3 & rn==1 gen lay_health=. replace lay_health=0 if lfsr94<=2 & health==1 replace lay_health=wt_health if lfsr94==3 & health==1 gen lay_all=. replace lay_all=0 if lfsr94<=2 replace lay_all=wt_all if lfsr94==3 sum lay_rn if year==2009 sum lay_rn if year<2009 sum lay_all if year==2009 sum lay_all if year<2009 restore * Table 3: PT/FT Categories preserve replace uhours=. if uhours==99 gen hourscat=. replace hourscat=1 if uhourse>=0 & uhourse<=19 replace hourscat=2 if uhourse>=20 & uhourse<=29 replace hourscat=3 if uhourse>30 & uhourse<=34 replace hourscat=4 if uhourse>35 & uhourse<=39 replace hourscat=5 if uhourse==40 replace hourscat=6 if uhourse>=41 & uhourse<=49 replace hourscat=7 if uhourse>50 & uhourse<=59 replace hourscat=8 if uhourse>=60 gen period=1 replace period=2 if year>=2005 & year<=2008 replace period=3 if year==2009 label define lbl_period 1 "2000-2004" 2 "2005-2008" 3 "2009" label values period lbl_period label define lbl_hourscat 1 "0-19" 2 "20-29" 3 "30-34" 4 "35-39" 5 "40" 6 "41-49" 7 "50-59" 8 "60+" label values hourscat lbl_hourscat gen temp=round(weight,1) tab2 hourscat period [fw=temp], col nofreq restore * Table 4(i): Median Age preserve gen age_rn=age if rn==1 gen age_health=age if health==1 gen age_all=age collapse (median) p50_age_rn=age_rn p50_age_health=age_health p50_age_all=age_all (p25) p25_age_rn=age_rn p25_age_health=age_health p25_age_all=age_all (p75) p75_age_rn=age_rn p75_age_health=age_health p75_age_all=age_all (sum) one_rn one_health one_all, by(year) # delimit ; scatter p50_age_rn year, pstyle (p2)|| scatter p50_age_health year, pstyle (p2) || scatter p50_age_all year, pstyle (p2) || line p50_age_rn year, pstyle (p1 p1 p1) sort || line p50_age_health year, pstyle (p3 p3 p3) sort || line p50_age_al year, pstyle (p4 p4 p4) sort ; # delimit cr restore * Table 4(ii): Age distribution change in RNs from 2008 to 2009 preserve gen age_rn=age if rn==1 gen age_health=age if health==1 gen age_all=age keep if year==2009 | year==2000 collapse (sum) wt_rn, by(age year) gen pdf_rn=wt_rn/4068 if year==2009 replace pdf_rn=wt_rn/3040 if year==2000 line pdf_rn age if year==2000, pstyle(p2) sort || line pdf_rn age if year==2009, pstyle(p3) sort restore * Table 5: Demographics preserve gen male=2-sex gen noncit=. replace noncit=0 if prcitshp>=1 & prcitshp<=4 replace noncit=1*wt_all if prcitshp==5 gen nonwhite=. replace nonwhite=wt_all if race>1 replace nonwhite=0 if race==1 *gen married=. *replace married=1 if marital<4 *replace married=0 if marital>=4 gen rn_male=2-sex if rn==1 gen rn_noncit=. replace rn_noncit=0 if prcitshp>=1 & prcitshp<=4 & rn==1 replace rn_noncit=wt_rn if prcitshp==5 & rn==1 gen rn_nonwhite=. replace rn_nonwhite=wt_rn if race>1 & rn==1 replace rn_nonwhite=0 if race==1 & rn==1 gen rn_young=. replace rn_young=wt_rn if age<=34 & rn==1 replace rn_young=0 if age>=35 & rn==1 gen rn_forborn=. replace rn_forborn=wt_rn if penat!=57 & rn==1 replace rn_forborn=0 if penat==57 & rn==1 *gen rn_married=. *replace rn_married=1 if marital<4 & rn==1 *replace rn_married=0 if marital>=4 & rn==1 collapse (mean) male noncit nonwhite rn_male rn_noncit rn_nonwhite rn_young rn_forborn, by(year) # delimit ; scatter rn_male year, pstyle(p1) || scatter rn_noncit year, pstyle(p1) || scatter rn_young year, pstyle(p1) || scatter rn_forborn year, pstyle(p1) || scatter rn_nonwhite year, pstyle(p1) || line rn_male year, lpattern(l) pstyle(p1) || line rn_noncit year, lpattern(l) pstyle(p2) || line rn_young year, lpattern(l) pstyle(p3) || line rn_forborn year, lpattern(l) pstyle(p4) || line rn_nonwhite year, lpattern(l) pstyle(p5) ; # delimit cr restore * Table 7: Compensation Profiles preserve gen age_xrn=age*rn gen agesq=age^2 gen agesq_xrn=agesq*rn gen female=sex-1 gen female_xrn=female*rn gen realwage=earnhre replace realwage=earnhre/100 if year==2009 replace realwage=(0.99600*earnhre)/100 if year==2008 replace realwage=(1.03385*earnhre)/100 if year==2007 replace realwage=(1.06280*earnhre)/100 if year==2006 replace realwage=(1.08937*earnhre)/100 if year==2005 replace realwage=(1.12640*earnhre)/100 if year==2004 replace realwage=(1.16358*earnhre)/100 if year==2003 replace realwage=(1.18568*earnhre)/100 if year==2002 replace realwage=(1.21414*earnhre)/100 if year==2001 replace realwage=(1.23357*earnhre)/100 if year==2000 replace realwage=. if earnhre==0 | earnhre==9999 gen rw_malernasso=realwage if female==0 & rn==1 & (ihigrdc==14 | ihigrdc==15) gen rw_malernbach=realwage if female==0 & rn==1 & (ihigrdc==16) gen rw_malerngrad=realwage if female==0 & rn==1 & (ihigrdc>16) gen rw_maleallasso=realwage if female==0 & (ihigrdc==14 | ihigrdc==15) gen rw_maleallbach=realwage if female==0 & (ihigrdc==16) gen rw_maleallgrad=realwage if female==0 & (ihigrdc>16) gen rw_femrnasso=realwage if female==1 & rn==1 & (ihigrdc==14 | ihigrdc==15) gen rw_femrnbach=realwage if female==1 & rn==1 & (ihigrdc==16) gen rw_femrngrad=realwage if female==1 & rn==1 & (ihigrdc>16) gen rw_femallasso=realwage if female==1 & (ihigrdc==14 | ihigrdc==15) gen rw_femallbach=realwage if female==1 & (ihigrdc==16) gen rw_femallgrad=realwage if female==1 & (ihigrdc>16) qreg rw_malernasso age agesq, nolog predict yhat_malernasso if female==0 & rn==1 & (ihigrdc==14 | ihigrdc==15) qreg rw_malernbach age agesq, nolog predict yhat_malernbach if female==0 & rn==1 & (ihigrdc==16) qreg rw_malerngrad age agesq, nolog predict yhat_malerngrad if female==0 & rn==1 & (ihigrdc>16) qreg rw_maleallasso age agesq, nolog predict yhat_maleallasso if female==0 & (ihigrdc==14 | ihigrdc==15) qreg rw_maleallbach age agesq, nolog predict yhat_maleallbach if female==0 & (ihigrdc==16) qreg rw_maleallgrad age agesq, nolog predict yhat_maleallgrad if female==0 & (ihigrdc>16) qreg rw_femrnasso age agesq, nolog predict yhat_femrnasso if female==1 & rn==1 & (ihigrdc==14 | ihigrdc==15) qreg rw_femrnbach age agesq, nolog predict yhat_femrnbach if female==1 & rn==1 & (ihigrdc==16) qreg rw_femrngrad age agesq, nolog predict yhat_femrngrad if female==1 & rn==1 & (ihigrdc>16) qreg rw_femallasso age agesq, nolog predict yhat_femallasso if female==1 & (ihigrdc==14 | ihigrdc==15) qreg rw_femallbach age agesq, nolog predict yhat_femallbach if female==1 & (ihigrdc==16) qreg rw_femallgrad age agesq, nolog predict yhat_femallgrad if female==1 & (ihigrdc>16) *CHOW TESTS gen femxage=female*age gen femxagesq=female*agesq qreg realwage female age agesq femxage femxagesq if (ihigrdc==14 | ihigrdc==15) & rn==1, nolog test femxage=femxagesq=0 qreg realwage female age agesq femxage femxagesq if (ihigrdc==16) & rn==1, nolog test femxage=femxagesq=0 qreg realwage female age agesq femxage femxagesq if (ihigrdc>16) & rn==1, nolog test femxage=femxagesq=0 collapse (median) rw_malernasso rw_malernbach rw_malerngrad rw_maleallasso rw_maleallbach rw_maleallgrad rw_femrnasso rw_femrnbach rw_femrngrad rw_femallasso rw_femallbach rw_femallgrad yhat_malernasso yhat_malernbach yhat_malerngrad yhat_maleallasso yhat_maleallbach yhat_maleallgrad yhat_femrnasso yhat_femrnbach yhat_femrngrad yhat_femallasso yhat_femallbach yhat_femallgrad, by(age) scatter rw_femrnasso rw_malernasso rw_femallasso rw_maleallasso age if age<=70, pstyle(p1 p1 p1 p1) msymbol(o oh o oh) sort || line yhat_femrnasso yhat_malernasso yhat_femallasso yhat_maleallasso age if age<=70, pstyle(p1 p1 p1 p1) sort scatter rw_femrnbach rw_malernbach rw_femallbach rw_maleallbach age if age<=70 & rw_malernbach<50, pstyle(p1 p1 p1 p1) msymbol(o oh o oh) sort || line yhat_femrnbach yhat_malernbach yhat_femallbach yhat_maleallbach age if age<=70, pstyle(p1 p1 p1 p1) sort scatter rw_femrngrad rw_malerngrad rw_femallgrad rw_maleallgrad age if age<=70, pstyle(p1 p1 p1 p1) msymbol(o oh o oh) sort || line yhat_femrngrad yhat_malerngrad yhat_femallgrad yhat_maleallgrad age if age<=70, pstyle(p1 p1 p1 p1) sort keep if (age==25 | age==35 | age==45 | age==55) gen prem_maleasso=yhat_malernasso/yhat_maleallasso gen prem_malebach=yhat_malernbach/yhat_maleallbach gen prem_malegrad=yhat_malerngrad/yhat_maleallgrad gen prem_maleasso=yhat_malernasso/yhat_maleallasso gen prem_malebach=yhat_malernbach/yhat_maleallbach gen prem_malegrad=yhat_malerngrad/yhat_maleallgrad browse restore * Table 8: Compensation Tabulation preserve gen age_xrn=age*rn gen agesq=age^2 gen agesq_xrn=agesq*rn gen female=sex-1 gen female_xrn=female*rn gen realwage=earnhre replace realwage=earnhre/100 if year==2009 replace realwage=(0.99600*earnhre)/100 if year==2008 replace realwage=(1.03385*earnhre)/100 if year==2007 replace realwage=(1.06280*earnhre)/100 if year==2006 replace realwage=(1.08937*earnhre)/100 if year==2005 replace realwage=(1.12640*earnhre)/100 if year==2004 replace realwage=(1.16358*earnhre)/100 if year==2003 replace realwage=(1.18568*earnhre)/100 if year==2002 replace realwage=(1.21414*earnhre)/100 if year==2001 replace realwage=(1.23357*earnhre)/100 if year==2000 replace realwage=. if earnhre==0 | earnhre==9999 gen rw_malernasso=realwage if female==0 & rn==1 & (ihigrdc==14 | ihigrdc==15) gen rw_malernbach=realwage if female==0 & rn==1 & (ihigrdc==16) gen rw_malerngrad=realwage if female==0 & rn==1 & (ihigrdc>16) gen rw_maleallasso=realwage if female==0 & (ihigrdc==14 | ihigrdc==15) gen rw_maleallbach=realwage if female==0 & (ihigrdc==16) gen rw_maleallgrad=realwage if female==0 & (ihigrdc>16) gen rw_femrnasso=realwage if female==1 & rn==1 & (ihigrdc==14 | ihigrdc==15) gen rw_femrnbach=realwage if female==1 & rn==1 & (ihigrdc==16) gen rw_femrngrad=realwage if female==1 & rn==1 & (ihigrdc>16) gen rw_femallasso=realwage if female==1 & (ihigrdc==14 | ihigrdc==15) gen rw_femallbach=realwage if female==1 & (ihigrdc==16) gen rw_femallgrad=realwage if female==1 & (ihigrdc>16) *CALCULATE GREATEST SEs qreg rw_malernasso age agesq, nolog lincom 35*age+1225*agesq+_cons lincom 45*age+2025*agesq+_cons lincom 55*age+3025*agesq+_cons qreg rw_maleallasso age agesq, nolog lincom 35*age+1225*agesq+_cons lincom 45*age+2025*agesq+_cons lincom 55*age+3025*agesq+_cons qreg rw_malernbach age agesq, nolog lincom 35*age+1225*agesq+_cons lincom 45*age+2025*agesq+_cons lincom 55*age+3025*agesq+_cons qreg rw_maleallbach age agesq, nolog lincom 35*age+1225*agesq+_cons lincom 45*age+2025*agesq+_cons lincom 55*age+3025*agesq+_cons qreg rw_malerngrad age agesq, nolog lincom 35*age+1225*agesq+_cons lincom 45*age+2025*agesq+_cons lincom 55*age+3025*agesq+_cons qreg rw_maleallgrad age agesq, nolog lincom 35*age+1225*agesq+_cons lincom 45*age+2025*agesq+_cons lincom 55*age+3025*agesq+_cons qreg rw_femrnasso age agesq, nolog lincom 35*age+1225*agesq+_cons lincom 45*age+2025*agesq+_cons lincom 55*age+3025*agesq+_cons qreg rw_femallasso age agesq, nolog lincom 35*age+1225*agesq+_cons lincom 45*age+2025*agesq+_cons lincom 55*age+3025*agesq+_cons qreg rw_femrnbach age agesq, nolog lincom 35*age+1225*agesq+_cons lincom 45*age+2025*agesq+_cons lincom 55*age+3025*agesq+_cons qreg rw_femallbach age agesq, nolog lincom 35*age+1225*agesq+_cons lincom 45*age+2025*agesq+_cons lincom 55*age+3025*agesq+_cons qreg rw_femrngrad age agesq, nolog lincom 35*age+1225*agesq+_cons lincom 45*age+2025*agesq+_cons lincom 55*age+3025*agesq+_cons qreg rw_femallgrad age agesq, nolog lincom 35*age+1225*agesq+_cons lincom 45*age+2025*agesq+_cons lincom 55*age+3025*agesq+_cons * SECTION II: Forecast preserve replace uhours=. if uhours==99 *age 25-75 at some point in sample keep if cohort>=1925 & cohort<=1985 egen rnsx3=total(weight) if rn==1, by(age cohort) gen rnhours=(rnsx3*uhours*52)/3 gen rnftes=rnhours/2000 gen weight_rn=weight if rn==1 collapse (median) rnftes pop_ageco (sum) weight_rn, by(age cohort) gen share=rnftes/pop_ageco gen lnshare=log(rnftes/pop_ageco) anova lnshare cohort age [aw=weight_rn] regress * Steps for reproduction are as follows: * Population data is taken from 2020 Census "Middle-Range Projections." * Cohort is calculated by 2010-AGE. * Share of FTE RNs at each age are estimated using the model. * This share is then multiplied by projected population. * This column is now the projected number of RNs at each age. * This column is summed to reach an estimated total number of RNs. * Column is then divided by total estimated number of RNs. * This column is now the "PDF" graphed in Table 10. restore * Table 9: Cohort and Age Effects preserve clear all use forecast.dta rename v1 cohort rename v2 cohort_coeff rename v3 age rename v4 age_coeff reg cohort_coeff cohort if cohort>=1965 predict cocohat if cohort>=1965 line cohort_coeff cohort, lstyle(p1) || scatter cocohat cohort if cohort>=1985, msymbol(oh) || line cocohat cohort if cohort>=1965, lstyle(.) line age_coeff age, lstyle(p1) restore * Table 10: RN Age Profile Projection preserve gen age_rn=age if rn==1 gen age_health=age if health==1 gen age_all=age keep if year==2009 | year==2000 collapse (sum) wt_rn, by(age year) gen pdf_rn=wt_rn/4068 if year==2009 replace pdf_rn=wt_rn/3040 if year==2000 append using "/mnt/san0/alanmb/94 Nurse Inst/Forecast/forecast20002020.dta" line pdf_rn age if year==2000, pstyle(p1) lpattern(dot) sort || line pdf_rn age if year==2009, pstyle(p3) lpattern(_) sort || line pdf_rn age if year==2020 & age<=75, pstyle(p4) lpattern(solid) sort restore