*---------------------------------------------------------------------* * This program creates a set of tables containing estimates of * * poverty based on a set of 13 alternative measure that combine * * various methods for calculating poverty thresholds and for * * defining family income. The program requires access to the 2000 * * public use experimental poverty measures data file created by the * * Bureau of the Census. This file can be matched to the March 2001 * * CPS annual public use file (use the larger SCHIP Data File)using * common identifiers contained on each file. * The results contained in the tabulations created by * * may differ slightly from those published on the Census Bureau's * * website because the computations were made using the public use * * data file which reflects the effects of applying disclosure * * avoidance measures. These differences are very small. * *---------------------------------------------------------------------*; /****** POVERTY REFERENCE YEAR ********/ %LET POVREFYR = 00; /**** sas library where file is located ****/ /**** replace with your lib name ****/ libname poverty "M:\SHARED\COMMON\johncoder\ResearchFile2000"; /****** file name of the public use sas data set ****/ %LET PUFILE = poverty.povpu&POVREFYR; /** do proc print for this number of records **/ %LET NUMTOPRT = 25; proc format; value agefmt1_ 0 - 17 = 'Under 18 years' 18 - 64 = '18 to 64 years' 65 - high = '65 year old and over'; value racefmt 1 = 'White' 2 = 'Black' 3 = 'American Indian or Alaska Native' 4 = 'Asian or Pacific Islander'; value $hispx '01'-'07' = 'Hispanic' other = 'Not Hispanic'; value $kindfmt '1' = 'In a married couple family' '2' = 'In a single family with male family reference person' '3' = 'In a single family with female family reference person'; value $regfmt '1' = 'Northeast' '2' = 'Midwest' '3' = 'South' '4' = 'West'; value $typefmt '1' = 'Primary family' '2' = 'Nonfamily householder' '3' = 'Related subfamily' '4' = 'Unrelated subfamily' '5' = 'Secondary individual (unrelated to householder)'; value $martfmt '1' - '2' = 'Married, spouse present present' '3' = 'Married, spouse absent' '4' = 'Widowed' '5' - '6' = 'Divorced or separated' '7' = 'Never married'; value agefmt2_ 0 - 2 = 'Under 3 years' 3 - 5 = '3 to 5 years' 6 - 11 = '6 to 11 years' 12 - 17 = '12 to 17 years' 18 - 21 = '18 to 21 years' 22 - 44 = '22 to 44 years' 45 - 54 = '45 to 54 years' 55 - 59 = '55 to 59 years' 60 - 64 = '60 to 64 years' 65 - 74 = '65 to 74 years' 75 - high = '75 years old and over'; value sexfmt 1 = 'Male' 2 = 'Female'; value fpersonr 1 = '1 person' 2 = '2 persons' 3 = '3 persons' 4 = '4 persons' 5 = '5 persons' 6 = '6 persons' 7 - high = '7 or persons or more' ; value adwk 0 = 'No workers present in family' 1 = 'One or more workers present in family'; value hinstatx 0 = 'Not covered by health insurance' 1 = 'Has private health insurance coverage' 2 = 'Has public health insurance coverage'; value $fheadfmt '0' = 'Not the family reference person' '1' = 'Family reference person'; data &pufile; set &pufile; adwk = 0; if fworkers gt 0 then adwk=1; agecat=put(a_age, $agefmt1_.); run; ods trace on; title 'PERSON POVERTY STATUS FOR ALTERNATIVE DEFINITIONS by SELECTED CHARACTERISTICS' ; proc freq data = &PUFILE; weight marsupwt; tables poor1-poor13 poor1-poor13*agecat poor1-poor13*adwk poor1-poor13*a_race poor1-poor13*hinstat poor1-poor13*a_reorgn ftype*poor1-poor13*fkind poor1-poor13*hg_reg; format hinstat hinstatx. a_reorgn $hispx. hg_reg $regfmt. a_race racefmt. a_age agefmt2_. fkind $kindfmt. ftype $typefmt. adwk adwk.; run ; title ''; proc template; define table Base.Freq.CrosstabFreqs; define header crosstabs; style=Header; end; end; run; proc template; link Base.Freq.OneWayFreqs to Base.Freq.OneWayList / notes = "One-Way Frequency table"; define table Base.Freq.OneWayList; notes "Parent for One-Way Frequency table and LIST table"; dynamic page needlines plabel varlabel lw varjust gluef gluep; column Line FVariable FListVariable Variable Frequency TestFrequency Percent TestPercent CumFrequency CumPercent; header h1; translate _val_=._ into ""; define h1; text varlabel; space = 1; split = ""; spill_margin; highlight; end; define Line; header = "Line"; format_ndec = 0; format_width = lw; just = c; style = RowHeader; id; end; define FVariable; just = varjust; parent = Base.Freq.FVariable; end; define FListVariable; just = varjust; parent = Base.Freq.FVariable; id = OFF; end; define Variable; parent = Base.Freq.Variable; end; define Frequency; glue = gluef; parent = Base.Freq.Frequency; format =comma10.0; end; define TestFrequency; header = "; Test ;Frequency;"; glue = 4; parent = Base.Freq.Frequency; end; define Percent; glue = gluep; parent = Base.Freq.Percent; end; define TestPercent; header = "; Test; Percent;"; glue = 3; parent = Base.Freq.Percent; end; define CumFrequency; header = ";Cumulative; Frequency;"; glue = 4; parent = Base.Freq.Frequency; format=comma10.0; end; define CumPercent; header = ";Cumulative; Percent;"; parent = Base.Freq.Percent; end; required_space = needlines; print_headers = plabel; newpage = page; underline; use_name; end; run; proc template; define column Base.Freq.Frequency; notes "Parent for FREQ Frequency columns"; header = "Frequency"; format = comma.0; just = c; end; run; proc template; define column Base.Freq.Levels; notes "Parent for FREQ Number of Levels columns"; header = "Levels"; format = comma.0; end; run; proc template; define table Base.Freq.NLevels; notes "NLEVELS table"; column TableVar TableVarLabel Nlevels NMissLevels NNonMissLevels; header h1; translate _val_=._ into ""; define h1; text "Number of Variable Levels"; space = 1; spill_margin; end; define TableVar; header = "Variable"; just = l; style = RowHeader; id; end; define TableVarLabel; header = "Label"; just = l; end; define NLevels; parent = Base.Freq.Levels; end; define NMissLevels; header = "Missing Levels"; parent = Base.Freq.Levels; end; define NNonMissLevels; header = "Nonmissing Levels"; parent = Base.Freq.Levels; end; underline; end; proc freq data = &PUFILE; tables poor1*hg_reg; run; style = comma10.2; end; run; proc freq data=&PUFILE; tables poor1; run; *--------------------------------------------------------------------------------------* * the code below computes the alternative income definitions and poverty * * thresholds and computes the 13 alternative poverty variables contained in the * * variables poor1-poor13 on the public use file. this code is commented but can * * be used as needed for your research. please direct any questions to * * * *--------------------------------------------------------------------------------------*; /************************ start poverty computation code ****************************** array xpoor[13] xpoor1-xpoor13; def001 = ftotval; def002 = def001 - ffica + (fcapgain - fcaploss) - ffedtax - fsttax + feitc + f_mv_fs + (fhoussub * 12) + fmvfsl + fmvrsl + fengval; def003 = def001 - ffica + (fcapgain - fcaploss) - ffedtax - fsttax + feitc + f_mv_fs + fmvfsl + fmvrsl + fengval; def004 = def003 - combexpc + fmrcap - newmoop; def005 = def003 - combexpc + fmrcap; def006 = def003 - combexpc + fmrcap - newmoop + mooplin1; def007 = def003 - combexpc + fmrcapce - newmoop; def008 = def003 - combexpc + fmrcapce; def009 = def003 - combexpc + fmrcapce - newmoop + mooplin2; label def001 = 'cps money income' def002 = 'definition 1 less taxes plus capital gains plus noncash benefits' def003 = 'definition 2 without including housing subsidy' def004 = 'definition 3 less child care expenses and moop plus capped housing subsidy' def005 = 'definition 3 less child care expenses plus capped housing subsidy' def006 = 'definition 3 less child care expenses and moop plus capped housing subsidy and moopln1' def007 = 'definition 3 less child care expenses and moop plus capped housing subsidy' def008 = 'definition 3 less child care expenses plus capped housing subsidy' def009 = 'definition 3 less child care expenses and moop plus capped housing subsidy and moopln2'; label nl1 = '3-parameter thresholds updated using CPI-U with geographic price adjustments applied' nl2 = 'nl1 without geographic price adjustments applied' nl3 = '3-parameter thresholds updated using CEX with geographic price adjustments applied' nl4 = '3-parameter thresholds (moop in thresholds), updated using CEX with geographic price adjustments applied' nl5 = '3-parameter thresholds (moop in thresholds), updated using CEX with geographic price adjustments applied' nl6 = 'nl4 without geographic price adjustments applied' nl7 = 'nl5 without geographic price adjustments applied' nl8 = 'nl3 without geographic price adjustments applied'; do i = 1 to 13; xpoor(i) = 0; end; if ftotval lt fpovcut then xpoor1 = 1; if def004 lt nl1 then xpoor2 = 1; if def005 lt nl4 then xpoor3 = 1; if def006 lt nl4 then xpoor4 = 1; if def004 lt nl2 then xpoor5 = 1; if def005 lt nl6 then xpoor6 = 1; if def006 lt nl6 then xpoor7 = 1; if def007 lt nl3 then xpoor8 = 1; if def008 lt nl5 then xpoor9 = 1; if def009 lt nl5 then xpoor10 = 1; if def007 lt nl8 then xpoor11 = 1; if def008 lt nl7 then xpoor12 = 1; if def009 lt nl7 then xpoor13 = 1; label xpoor1 = 'official poverty' xpoor2 = 'msi-cpi-ga' xpoor3 = 'mit-cpi-ga' xpoor4 = 'cmb-cpi-ga' xpoor5 = 'msi-cpi-nga' xpoor6 = 'mit-cpi-nga' xxpoor7 = 'cmb-cpi-nga' xpoor8 = 'msi-ce-ga' xpoor9 = 'mit-ce-ga' xpoor10 = 'cmb-ce-ga' xpoor11 = 'msi-ce-nga' xpoor12 = 'mit-ce-nga' xpoor13 = 'cmb-ce-nga'; ******************** end poverty computation code *************/ run;