ATTACHMENT 2 2020 Programmers Guide-v2.pdf
PDF 5 MB Posted
- Attached to
- Microsimulation modeling and analytical support services Federal contract opportunity
- Solicitation number
- 12-3198-25-R-0002
About this file
This document is the 2020 Programmers Guide for the MATH SIPP+ Microsimulation Model, a comprehensive technical document detailing the methodology for simulating Supplemental Nutrition Assistance Program (SNAP), Temporary Assistance for Needy Families (TANF), and Supplemental Security Income (SSI) program participation and benefits. Developed for the U.S. Department of Agriculture's Food and Nutrition Service, the model uses the 2020 Survey of Income and Program Participation (SIPP) data to estimate program eligibility, participation, and benefit levels at both national and state levels. The guide provides a detailed, technical description of the model's development process, including data preparation, household and family variable creation, unit formation, eligibility simulation, participation calibration, and output generation, with extensive documentation on each step of the microsimulation methodology.
View the file
Other files for this federal contract opportunity
Show all 22
On GovTribe
Work with this file on GovTribe
- Download the original file
- Contacts named in this file
- Similar government files
- Ask GovTribe AI about this file
Text version
ATTACHMENT 2
Final report
February 2025
2020 MATH SIPP+ Microsimulation Model Programmer’s Guide, Technical Description, and Codebook
Nondiscrimination Statement ii
In accordance with Federal civil rights law and U.S. Department of Agriculture (USDA) civil rights regulations and policies, the USDA, its Agencies, offices, and employees, and institutions participating in or administering USDA programs are prohibited from discriminating based on race, color, national origin, religion, sex, disability, age, marital status, family/parental status, income derived from a public assistance program, political beliefs, or reprisal or retaliation for prior civil rights activity, in any program or activity conducted or funded by USDA (not all bases apply to all programs). Remedies and complaint filing deadlines vary by program or incident.
Persons with disabilities who require alternative means of communication for program information (e.g., Braille, large print, audiotape, American Sign Language, etc.) should contact the responsible Agency or USDA's TARGET Center at (202) 720-2600 (voice and TTY) or contact USDA through the Federal Relay Service at (800) 877-8339. Additionally, program information may be made available in languages other than English.
To file a program discrimination complaint, complete the USDA Program Discrimination Complaint Form, AD-3027, found online at How to File a Program Discrimination Complaint and at any USDA office or write a letter addressed to USDA and provide in the letter all of the information requested in the form. To request a copy of the complaint form, call (866) 632-9992. Submit your completed form or letter to USDA by: (1) mail: U.S. Department of Agriculture, Office of the Assistant Secretary for Civil Rights, 1400 Independence Avenue, SW, Washington, D.C. 20250-9410; (2) fax: (202) 690-7442; or (3) email: program.intake@usda.gov.
USDA is an equal opportunity provider, employer, and lender.
https://www.usda.gov/oascr/how-to-file-a-program-discrimination-complaint mailto:program.intake@usda.gov
2020 MATH SIPP+ Microsimulation Model: Programmer’s Guide, Technical Description, and Codebook Final Report
February 2025
INTENTIONALLY BLANK
Submitted to: Submitted by:
U.S. Department of Agriculture Food and Nutrition Service 1320 Braddock Place Alexandria, VA 22314
Suggested citation
Contents iv
I. Introduction
A. What Is SIPP
B. Processing steps
C. Major changes incorporated in the 2020 MATH SIPP+ model
D. Other reference material
II. Create Household and Family-level Variables
A. Introduction
B. User parameters
C. Programmer’s description
D. CONSTRUCT1_HHVARS.SAS technical specification
E. CONSTRUCT2_FAMVARS.SAS technical specification
III. Create Person Variables
A. Introduction
B. Programmer’s description
C. Technical specification
IV. Build Binary File
A. Introduction
B. Helper files
C. Programmer’s description
D. CREATE_KEEP_RENAME_MACROS.SAS technical specification
E. MAKE_FINAL_SASFILE.SAS technical specification
F. MAKE_FMTTXT.SAS technical specification
G. MAKE-BIN-FILE.SAS technical specification
V. Supervisor
A. Introduction
B. User parameters
C. Programmer’s description
VI. Recode Variables v
A. Introduction
B. User parameters
C. Programmer’s description
D. Technical specification
VII. Recode Additional Variables (RECODE2)
A. Introduction
B. User parameters
C. Programmer’s description
D. Technical specification
VIII. Creation of State Weights and Replicate Weights
A. Introduction
B. User parameters
C. Programmer’s description
D. Technical specification
IX. Merge State Weights
A. Introduction
B. User parameters
C. Programmer’s description
D. Technical specification
X. Impute Citizenship Status
A. Introduction
B. User parameters
C. Programmer’s description
D. Technical specification
XI. Merge Imputed Citizenship Flags
A. Introduction
B. User parameters
C. Programmer’s description vi
D. Technical specification
XII. Simulate Supplemental Security Income Eligibility
A. Introduction
B. User parameters
C. Programmer’s description
D. Technical specification
XIII. SSI Calibration
A. Introduction
B. User parameters
C. Programmer’s description
D. Technical specification
XIV. Merge SSI Participation Flags
A. Introduction
B. User parameters
C. Programmer’s description
D. Technical specification
XV. Simulate TANF Eligibility
A. Introduction
B. User parameters
C. Programmer’s description
D. Technical specification
XVI. Simulate SNAP Eligibility
A. Introduction
B. User parameters
C. Programmer’s description
D. Technical specification
XVII. TANF Calibration
A. Introduction vii
B. User parameters
C. Technical description
XVIII. Merge TANF Participation Flags
A. Introduction
B. User parameters
C. Programmer’s description
D. Technical specification
XIX. SNAP Calibration
A. Introduction
B. User parameters
C. Programmer’s description
D. Technical description
XX. Merge SNAP Participation Flags
A. Introduction
B. User parameters
C. Programmer’s description
Appendix A Baseline tables, National model
Appendix B Baseline tables, State model
Appendix C Codebook iii
Tables II.1 SIPP sample sizes and weighted counts
XII.1 Location and Description of SSI Simulation Subroutines
XII.2 SSI Eligibility by State Simulation and National Results
XII.3 SSI Eligibility by State and Age
XIV.1 SSI Output Table
XIV.2 FSDIS Output Table
XV.1 User Defined Parameters for TANF Simulation
XV.2 Location and Description of TANF Subroutines
XV.3 TANF Unit Classifications (TAN_TYPE)
XV.4 Eligible TANF Units by State and Unit Type
XV.5 Eligible TANF Persons by State and Unit Type
XV.6 Eligible TANF Units by Gross Income as a Percentage of Poverty and Unit Size
XV.7 Minimum and Maximum Values
XVI.1 Location and Description of FSTAMP Subroutines
XVI.2 Split Rates by Age for Primary Family Adults
XVI.3 The Probability of Participation Equation for Newly Eligible SNAP Units
XVI.4 Coefficients of the Probability of Participation Equation for Change in Participation Status
XVIII.1 TANF Output iii
Figures V.1 Sample Supervisor Parameter File
V.2 Supervisor Subroutines
VI.1 RECODE Parameter File
VI.2 RECODE Subroutines
VII.1 RECODE2 Parameter File
VII.2 RECODE #2 Subroutines
IX.1 MERGE STATE WEIGHTS (Tally) Parameter File
XI.1 Merge Imputed Citizenship (Tally) Parameter File
XI.2 MERGE IMPUTED CITIZENSHIP Subroutines
XII.1 SSI Simulation Parameter File
XII.2 SSI Simulation Subroutines
XII.3 Income Deeming for SSI
XIV.1 MERGE SSI PARTICIPATION FLAGS Parameter File
XIV.2 MERGE SSI PARTICIPATION FLAGS Subroutines
XV.1 TANF Subroutines
XV.2 TANF Simulation Parameter File
XVI.1 FSTAMP Subroutines
XVI.2 SNAP Simulation Parameter File
XVIII.1 Parameters for MERGE TANF PARTICIPATION FLAGS
XVIII.2 MERGE TANF PARTICIPATION FLAGS Subroutines
XX.1 Parameter File for Merge SNAP Calibration Flags
I. Introduction This guide is intended to provide programmers and analysts with a tool to assist them in developing and maintaining the 2020 MATH SIPP+ model. The document describes the various parts of the model, how they relate to each other, and the options available to the user. It is not likely to be of interest to policymakers, administrators, or people generally unfamiliar with computer systems.
First developed in 2006, the MATH SIPP+ is a microsimulation model that simulates Supplemental Nutrition Assistance Program (SNAP), Temporary Assistance for Needy Families (TANF), and Supplemental Security Income (SSI). (MATH stands for Micro Analysis of Transfers to Households.) It was developed for the U.S. Department of Agriculture’s Food and Nutrition Service (FNS) and is used to estimate the effect of changes to SNAP eligibility rules on SNAP benefit costs and the SNAP caseload and to determine whether SNAP is reaching its intended population.
The MATH SIPP+ model uses data as an underlying database. It can produce either national or state level estimates, although the SIPP does not have data for households in Guam or the Virgin Islands. To produce national estimates, the MATH SIPP+ model uses the original SIPP household weights and program rules for each SIPP observation’s actual state of residence. To produce state estimates, the model uses a set of 51 state weights derived from Current Population Survey Annual Social and Economic Supplement (CPS ASEC) data and program rules for all states for each SIPP observation.
The 2020 MATH SIPP+ model is based on several data sources: the 2020 SIPP panel; the 2020 and 2021 CPS ASEC; and fiscal year 2020 administrative data for the SSI, TANF, and SNAP programs. The SIPP provides the model with a sample of households that forms a basis for all calculations of SNAP eligibility;
the CPS ASEC data are used to derive household State weights that match State distributions of economic and demographic characteristics in the CPS ASEC; and the administrative data are used to simulate SSI, TANF, and SNAP recipient populations that match national and State administrative totals and subgroup characteristics.
We chose December 2019 as the base month for the 2020 MATH SIPP+ model for several reasons: (1) December was the month for which the SIPP collected detailed asset and investment data; (2) SIPP calendar year files were weighted to represent December 31 of each reference year; (3) the interview recall window was the shortest in December and therefore likely to be the most accurate; (4) the single-month approach was consistent with the 2011 MATH SIPP+ model, and (5) the sample size was sufficient.
To process the SIPP data most efficiently, the SIPP data are converted into a MATH database. The MATH database is organized by household. Within each household, there are three types of records: (1) the household record contains information that is unique to the household (for example, household income);
(2) the family record contains information that is unique to each family (for example, family income); and
(3) the person record contains information that is unique to each person (for example, person’s income).
The model reads and processes the database sequentially, one household at a time. After all household, family, and person-level records for a single household are read, all master routines selected for a particular simulation operate in turn on that one household.
The model is designed to be a flexible tool. User-defined parameters are built in to each master routine to give the analyst a mechanism to change the assumptions in the master routine. By changing the
Chapter I Introduction assumptions in various ways, the analyst can use the model to perform what-if and sensitivity analyses.
The MATH SIPP+ model is available to analysts via MATHWEB, Mathematica’s web-based MATH model user interface. MATHWEB makes the MATH models easier for a novice computer user to use and is accessible to any authorized user. For experienced computer users, the user-interface can be bypassed.
The user can simply modify the parameter file using a text editor and then execute the model. To simulate policy changes that cannot be modeled by simple parameter changes, the relevant section(s) of the model code is modified, recompiled, and executed.
The 2020 SIPP is substantially different from the 2008 SIPP used in the previous model version, the 2011 MATH SIPP+ model. The new SIPP changed many facets of the survey, from the design and content of the survey instrumentation and variables to the frequency of interviews. We implemented new processes in the 2020 MATH SIPP+ model to account for these differences.
The rest of this chapter provides an overview of SIPP, an overview of the programs that are described in this document, and a description of how this version of the model is different from previous versions.
A. What Is SIPP
The SIPP is a nationally representative, longitudinal survey providing detailed monthly information on household composition, income, labor force activity, and participation in various government programs such as SNAP, TANF, SSI, and Medicaid. The interviewed population is based on a multistage stratified sample of the noninstitutionalized resident population in the United States. This includes people living in households as well as in group quarters, such as college dormitories and rooming houses. Inmates or residents of institutions, such as homes for elderly individuals, and people living abroad are not included.
Armed forces personnel are included, except for those living in military barracks (U.S. Census Bureau 2023)1.
People in households participating in the SIPP are interviewed every year. In each round (wave) of interviews, people ages 15 and older are asked a set of core questions about their demographic characteristics, income, program participation, and children. Most interview questions are asked about the preceding calendar year, but some questions are asked as of the time of the interview.
The 2020 SIPP interviewed 21,989 households, or 53,332 people, in 2020 about their characteristics in calendar year 2019. Weighted, this represents an estimate of 131,669,576 households and 311,273,856 individuals in December 2019 (Table II.1). The weighted totals are less than U.S. population counts because they exclude those living in territories and in institutions.
In 2023, the Census Bureau released a series of patch files that corrected some 2020 SIPP variables, including many variables related to income. We applied the changes in these patch files to variables that are used in the model.
The 2020 SIPP includes two variables that identify households. One variable identifies monthly households over the reference period; the other variable identifies households during the interview month, which
1 U.S. Census Bureau. “2020 Survey of Income and Program Participation User’s Guide.” U.S. Department of Commerce, September 2023. https://www2.census.gov/programs-surveys/sipp/tech-documentation/methodology/2020_SIPP_Users_Guide_SEP23.pdf.
https://www2.census.gov/programs-surveys/sipp/tech-documentation/methodology/2020_SIPP_Users_Guide_SEP23.pdf https://www2.census.gov/programs-surveys/sipp/tech-documentation/methodology/2020_SIPP_Users_Guide_SEP23.pdf occurs three to six months after the reference period. Some data, including householder status, rent and mortgage expenses, and financial assets, are reported as of the interview month. For a small number of households, the household members in December 2019 were not the same as household members interviewed in 2020. For households in December 2019 that contained several household reference people or no household reference person, we assigned a single household member as the household reference person using age and person number variables. For data only available for interview-month households, we edited month-level data for household members by using the assigned householders’ values.
Table II.1. SIPP sample sizes and weighted counts
Unweighted
(2020 SIPP)
Unweighted (December 2019)
Weighted (using household weight)
Households 21,989 22,057 131,669,576 Individuals 53,332 51,473 311,273,856
Source: 2020 Survey of Income and Program Participation User’s Guide and tabulations of the 2020 SIPP.
Note: When tabulating the number of households and individuals read and written into the model development programs, the
MATH SIPP+ model uses the household weight. The unweighted sample size for December 2019 does not include people in households where all members have a weight of zero. There are more households in December 2019 compared to the interview month because some people living in the same household in the interview month may have lived in different households in December.
B. Processing steps
The changes to the SIPP questionnaire and structure since the 2008 SIPP panel necessitated changes to the data preparation process. Since SIPP is now available as a SAS dataset, we carried out this preliminary work in SAS before creating the MATH database.
This process involves a series of over 20 programs. Below we provide an overview of these programs at a high level.
1. Create household- and family-level variables
We created an intermediate copy of the SIPP, limiting it to month 12 (December) and constructing required household and family variables. We imputed a household reference person for households in December 2019 that had no designated householder or multiple designated householders. Finally, we removed households that had no designated householder, which were either households where no member has a positive weight, or households with only children.
2. Create person-level variables
We created person-level variables using the dataset from step 1 using a set of five programs. Each of the programs is independent, creating a small “additions” dataset containing the new variables and the key variables required to merge the additions to the appropriate records.
3. Create the initial MATH binary file
We built the binary file from the files created in the previous two steps, refined the variable set, and adjusted variable values for the binary format. We wrote out the resulting file in the hierarchical MATH format with an accompanying descriptive header file.
4. Recode/create additional variables
In preparation for the SSI, TANF, and SNAP simulations, we created additional necessary variables, such as family- and person-level random number seeds, household total income, and vehicle ownership variables.
5. Create state weights and state replicate weights
SIPP is not designed to be representative at the state level. However, FNS occasionally needs state level estimates of the effect of proposed policy changes. To meet this need, we developed a methodology that allows us to use each household in the MATH SIPP+ to represent households in 51 simulated states. We refer to these 51 simulated states, which do not represent a household’s actual state of residence, as pseudo-states. To do this, we created a set of 51 state weights (one for each pseudo-state) for each sample household. We generated the state weights with a Poisson regression algorithm using 33 population targets derived from 2020 and 2021 CPS ASEC data. Each state weight counts the relative number of households the sample household represents in each state, and the sum of a household’s 51 state weights equals the original SIPP household weight. The same state weight process is then applied to each of the 240 SIPP replicate household weights so that the MATH SIPP+ model can estimate standard errors of model outcomes.
6. Merge state weights
We merged the 51 state weights for each household onto the MATH SIPP+ database.
7. Impute undocumented citizenship status
We imputed citizenship status for both the national and state simulations. We also identified undocumented noncitizens.
8. Merge undocumented citizenship status
We merged the citizenship status and created citizen, permanent residence, and refugee flags for all persons for both the national and state simulations.
9. Simulate SSI eligibility
We simulated SSI eligibility and potential benefits to compensate for reporting differences in SIPP in general and underreporting of children under age 15 in particular. We used 2020 SSI eligibility rules.
10. Calibrate SSI participation
We selected SSI participants from the pool of people simulated to be eligible for SSI in the previous step.
We used SSI administrative data from December 2019 by age and state of residence to form control totals. We then merged the SSI participation flags onto the MATH SIPP+ database.
11. Simulate TANF eligibility
We simulated TANF eligibility and potential benefits to compensate for underreporting in SIPP. We used 2020 TANF rules.
12. Calibrate TANF participation
We selected TANF participants from the pool of people simulated to be eligible for TANF in the previous step using control totals based on FY 2020 ACF administrative totals. We then merged the TANF participation flags onto the MATH SIPP+ database.
13. Simulate SNAP eligibility
After simulating SSI and TANF participation, we simulated SNAP eligibility. This simulation essentially replicated the steps a caseworker follows in determining the composition of a SNAP unit and whether the SNAP unit is eligible for SNAP. For each unit simulated to be eligible, the model determined the SNAP benefit for which the unit would be entitled. We used 2020 SNAP eligibility rules.
14. Calibrate SNAP participation
We selected SNAP participants from the pool of people simulated to be eligible for SNAP in the previous step using a probit model designed to select participants such that estimates of baselaw SNAP participants are similar to estimates from the SNAP administrative data. The control totals were based on the FY 2020 SNAP QC database.
15. Merge SNAP participation and generate baselaw SNAP tables
We merged the SNAP participation flag to the appropriate persons in the MATH database and generated baselaw SNAP tables.
16. Create replicate weight file for national model
We created a replicate weight file for calculating standard errors in the national model.
C. Major changes incorporated in the 2020 MATH SIPP+ model Below we summarize updates we made for the 2020 MATH SIPP+ model and previously for the 2015 Baseline of the 2011 MATH SIPP+ model.
1. New for the 2020 MATH SIPP+ model
Updating the model to use the 2020 SIPP. The following updates were required because of changes from the 2008 to 2020 SIPP.
• Reference period. The 2008 SIPP reference period was four months, while the 2020 SIPP reference period was one year. We updated the model to consider the new reference period for variables that were reported at the reference period level, such as the amount of rental income received.
• Variable changes. Numerous SIPP variables used in the MATH SIPP+ model changed between 2008 and 2020. For cases where the changes between 2008 and 2020 were minimal, we edited the 2020 SIPP variables so that they represented the same information as the 2008 SIPP variables used in the previous model version. This approach enabled us to minimize the amount of model updates needed.
We updated the model for cases where the changes were substantial and where the 2020 SIPP data provided additional information that could improve the model.
• Household definition. The 2020 SIPP had variables that identified household members for each month of the reference year and variables that identified household members at the interview month.
Some data were only available for interview-month households. We developed new processes to reconcile these differences.
• Topical modules. The 2008 SIPP was composed of a core survey questionnaire and many topical modules. The 2020 SIPP had no topical modules, and much of the information in previous topical modules were incorporated into a single survey. We made the necessary updates to use variables only from the main survey data.
• Vehicle values. SNAP eligibility rules use the wholesale fair market value (FMV), or average trade-in value, of vehicles. Because the 2008 SIPP reported retail FMV, we converted it to wholesale FMV Vehicle values in the 2020 SIPP were reported as wholesale FMV, so we did not need to convert these values in the 2020 MATH SIPP+ model.
Other updates. In addition to updates related to using the 2020 SIPP, we also made the following changes to the model.
• Update simulation period. As described above, we updated the base month for the 2020 MATH SIPP+ model to be December 2019.
• Update program rules. We updated the model to use FY 2020 SSI, TANF, and SNAP program rules.
For policies where rules changed mid-year, we used those for December 2019.
• Update SSI child disability indicators. We leveraged new disability indicators in the 2020 SIPP to improve the method for imputing child disability status for SSI.
• Update SNAP unit formation processes. We used new and restructured household relationship data in the 2020 SIPP to improve the SNAP unit formation process. We also removed food-sharing information from the unit formation process, since these data are no longer available.
• Update undocumented status assignment. We updated the undocumented status assignment process to include the L and H-1B visas.
• Update refugee assignment. We improved the process for assigning refugee status to include a person’s region of birth.
• Update SNAP participation equation. We applied updated SNAP participation equation coefficients for model simulations.
2. New for the 2015 Baseline of the 2011 MATH SIPP+ model
We included in the 2020 MATH SIPP+ model several updates we implemented in a previous Baseline.
• Implement Minnesota’s Family Investment Program (MFIP). We added processes to identify and simulate MFIP units and “Uncle Harry” units.
• Implement Standard Medical Deductions. We created processes to simulate Standard Medical Deductions in states with a demonstration program.
D. Other reference material
Two documents further describe the MATH SIPP+ model:
• Technical Working Paper: Creation of the 2020 MATH SIPP+ Microsimulation Model and
Database (Wen et al. 2025)2 provides an overview of SIPP, the creation of the database, and the algorithms of the MATH SIPP+ model in a non-technical manner. It also presents quality control statistics, SSI, TANF, and SNAP calibration results, and baseline model output.
• MATHWEB (Web-based MATH Microsimulation Model) User Documentation (Schechter et al.
2017)3 provides instructions for accessing and using current microsimulation models, including this version of MATH SIPP+, via MATHWEB.
In addition, the definitions of raw 2020 SIPP variables, many of which are used in the MATH SIPP+ database development but are not retained, are found in the Census Bureau’s online SIPP codebook available at https://www.census.gov/data-tools/demo/uccb/sippdict?s_year=2020.
2 Wen, Andrew, Joshua Leftin, Mia Monkovic, and John Carlo. “Technical Working Paper: Creation of the 2020 MATH SIPP+ Microsimulation Model and Database.” Alexandria, VA: U.S. Department of Agriculture, Food and Nutrition Service, February 2025.
3 Schechter, Bruce, Mark Brinkley, and Kelsey Farson Gray. “MATHWEB (Web-Based MATH Microsimulation Model) User Documentation.” Alexandria, VA: U.S. Department of Agriculture, Food and Nutrition Service, February 2017.
https://www.census.gov/data-tools/demo/uccb/sippdict?s_year=2020
Mathematica® Inc. 8
II. Create Household and Family-level Variables Specified by: Joshua Leftin, Linda Molinari, Karen Cunnyngham, Coded by: Linda Molinari Documented by: Laura Castner, Linda Molinari
A. Introduction
The household and family variables are created by separate SAS programs.
CONSTRUCT1_HHVARS.SAS creates an intermediate copy of the SIPP limiting it to the month and households needed for the binary file. For the 2020 model, we limit to observations in month 12 (December 2019) and drop (1) households where no one in the household has a positive weight and (2) child-only households without a SIPP-specified householder. This program also corrects certain income variables for a double-counting issue related to Medicare payments and Social Security.
CONSTRUCT1_HHVARS.SAS retains existing SIPP variables, and constructs required household-level variables. Several of these are variables that are only provided at the person level. In those cases, we either confirm that the variable is constant within a household, or use the value of the household reference person.
CONSTRUCT2_FAMVARS.SAS creates required family-level variables.
B. User parameters
These are defined at the top of the program using SAS macro variables:
CONSTRUCT1_HHVARS:
SIPPYR = 2020; *The year of the SIPP extract;
REFMONTH = 12; *The reference month used for our analysis;
HHVARS = SSUID ERESIDENCEID; *The SIPP variables that define a unique household;
CONSTRUCT2_FAMVARS:
SIPPYR = 2020; *The year of the SIPP extract;
FAMVARS = SSUID ERESIDENCEID RFAMNUM; *The SIPP variables that define a unique family;
C. Programmer’s description
1. Organization of program
These programs need to be run sequentially:
CONSTRUCT1_HHVARS.SAS
CONSTRUCT2_FAMVARS.SAS
2. Input Files
CONSTRUCT1_HHVARS: PU2020_V1 SIPP public use dataset CONSTRUCT2_FAMVARS: PU2020_V1_MATHSIPP_HH Created by CONSTRUCT1_HHVARS
Chapter II Create Household and Family-Level Variables
Mathematica® Inc. 9
3. Output files
CONSTRUCT1_HHVARS: PU2020_V1_MATHSIPP_HH Filtered SIPP dataset with HH variables CONSTRUCT2_FAMVARS: PU202_V1_MATHSIPP_HHFAM Household dataset with family variables
4. Source code
Both programs are in the \MSPLUS MODEL\BUILD_BINARY directory.
5. Input and output variables
All the SIPP variables from the previous chapters are kept. We add the following variables to the SAS dataset:
Household Variables added by CONSTRUCT1_HHVARS Family variables added by CONSTRUCT2_FAMVARS
CTFMHH FIRSTPR
HREFPER LASTPR
HWGT FWGT
HLIVQTR FSPOUSE
CALYEAR
STATE
METRO
TENURE
HEHC_RNTSUB
EEGYAST
EEGYPMT1
EEGYPMT2
EEGYPMT3
HSSI ̀
HTANF
HFDSTP
MTHLYRENT
D. CONSTRUCT1_HHVARS.SAS technical specification
1. Limit to desired month
The code reads in the input file and limits the data to observations where MONTHCODE = &REFMONTH.
2. Correct income variables for SIPP double-counting of Medicare payments.
In the 2020 SIPP, certain income variables were increased by the amount of the Medicare Parts B, C and D deductions, in the mistaken impression that TSSSAMT, the Social Security benefit payment, was net of these deductions rather than gross. We correct this miscalculation by calculating SSFIX, the sum of the deductions, for each person, creating HH_SSFIX and FAM_SSFIX as the household-level and family-level totals of SSFIX, and adjusting the affected income variables by subtracting the appropriate fix variable.
SSFIX is the sum of ESSPARTBKNOW, TSSPARTCAMT and TSSPARTDAMT for everyone for whom ESSSMNYN=1. ESSSMNYN indicates if the person received a Social Security payment that month.
HH_SSFIX and FAM_SSFIX are the sum of SSFIX for each household, defined as &HHVARS, and each family, defined as &HHVARS RFAMNUM, respectively.
Mathematica® Inc. 10
We then adjust the affected income variables:
THTOTINC = THTOTINC – HH_SSFIX; *Household income;
TFTOTINC = TFTOTINC – FAM_SSFIX; *Family income;
TSSSAMT = TSSSAMT – SSFIX; *Social Security benefit;
TPSCININC = TPSCININC – SSFIX *Sum of VA, worker comp, unemployment or social security ben.;
TPTOTINC = TPTOTINC – SSFIX *Personal earnings and income;
3. Construct variables
CTFMHH: Number of families in the household Construction: The maximum value of RFAMNUM (number of families) in a household.
CALYEAR: Calendar year for this model Construction: The year of the SIPP extract minus 1.
STATE: Household state of residence Construction: Convert TEHC_ST to a number.
METRO: Metropolitan status of residence Construction: Set METRO to TEHC_METRO, with 0 values recoded to 3 to match the 2008 variable values.
TENURE: Tenure of residence Construction: Rename EEHC_TEN to TENURE.
HREFPER: Household reference person We use the household reference person to represent the household. The 2020 SIPP variable defining a householder, ERELRPE, does not align with the household definition of SSUID ERESIDENCEID, so we need to choose a household reference person for certain households. HREFPER is the PNUM of the selected person.
Construction:
• Limit candidates to persons with positive weights (WPFINWGT).
• If a household has exactly one person with ERELRPE = 1 or 2 (a householder with or without relatives), select that person as the household reference person.
• If there is more than one person with an ERELRPE of 1 or 2, choose the adult with the lowest SHHADID value. If all designated householders are children, choose the oldest.
• If there is no one with an ERELRPE of 1 or 2 then
– Eliminate children from the candidate pool.
– If a single-adult household (with or without children present), select that person.
– For households where only one adult has a positive weight, use them.
– If a multi-adult household, assign in this order:
o Oldest person who is both (1) married/partnered with someone in the household and (2) a parent to someone 21 or younger in the household.
Mathematica® Inc. 11 o Oldest person who is married/partnered with someone in the household.
o Oldest person who is a parent to someone 21 or younger in the household. (RPNPAR1_EHC and RPNPAR2_EHC are the PNUMs of the parents.)
o Oldest person with earnings (TPEARN > 0).
o The adult with the lowest PNUM.
Once HREFPER has been assigned, we drop households where no one in the household has a positive weight, and child-only households without a SIPP-specified householder.
HWGT: Household weight Construction: WPFINWGT of the household reference person
HLIVQTR: Household living quarters Construction: TLIVQTR of the household reference person
HEHC_RNTSUB: Household rent subsidy receipt Construction: EEHC_RENTSUB of the household reference person
EEGYAST: Household energy assistance receipt Construction: EENERGY_ASST of the household reference person
EEGYPMT1, EEGYPMT2, EEGYPMT3: Energy assistance forms Construction: EENERGY_PMT1, EENERGY_PMT2, EENERGY_PMT3 of the household reference person, respectively.
MTHLYRENT: Household monthly rent for households in government housing Construction: MTHLYRENT is set to the amount of rent for people who get a rent subsidy, and 0 otherwise. We use the household reference person’s values.
If TENURE=2 & EEHC_RENTSUB=1 then MTHLYRENT = TRENTMORT;
else MTHLYRENT = 0
HSSI: Household income from SSI Construction: Sum person variable TSSI_AMT for each household/month.
HTANF: Household income from TANf Construction: Sum person variable TTANF_AMT for each household/month.
HFDSTP: Total household SNAP benefits Construction: Sum person variable TSNAP_AMT for each household/month.
E. CONSTRUCT2_FAMVARS.SAS technical specification
1. Construct variables
FIRSTPR and LASTPR: Index numbers of first and last persons in a given family
The model code uses FIRSTPR and LASTPR to identify which people in the household are in each family.
They are not the PNUMs of these people, but their sequential number when sorted in SSUID
Mathematica® Inc. 12
ERESIDENCEID RFAMNUM PNUM order. This is the same order in which they will be written to the binary file.
Construction: Sort data by SSUID ERESIDENCEID RFAMNUM PNUM. For the first family in the household, FIRSTPR is 1 and LASTPR is the number of people in the family. For additional families, FIRSTPR and LASTPR are calculated using the previous family’s LASTPR value and the number of people in the current family. For example, if the first three people, sorted as specified, are in family one and the second two in family two, FIRSTPR will be 1 for the first family and 4 for the second family. LASTPR will be 3 for the first family and 5 for the second family.
• For the first family in a household (first.eresidenceid):
– FIRSTPR = 1
– LASTPR = RFPERSONS Number of people in the family
• For subsequent families
– FIRSTPR = LASTPR + 1
– LASTPR = FIRSTPR + RFPERSONS – 1
FWGT: family weight Construction: WPFINWGT of the family reference person (RFAMREF).
FSPOUSE: Family spouse Construction: EPNSPOUS_EHC of the family reference person.
Mathematica® Inc. 13
III. Create Person Variables Specified by: Joshua Leftin, Francisco Yang, Andrew Wen, Mia Monkovic, Alma Vigil Coded by: Mike Rudacille Documented by: Laura Castner
A. Introduction
Multiple programs construct the person-level variables. The programs are independent and can be run in any order. They each use the same input file, and each produce an output file limited to their constructed variables and the key variables required to merge with the input dataset.
Variable descriptions are provided in alphabetical order, and the SAS program creating each variable is included in the variable description.
B. Programmer’s description
1. Input files pu2020_v1_mathsipp_hhfam.sas7bdat MATH SIPP household and family variable file
2. Output files Addition subsets\assetvars.sas7bdat Addition subsets\construct_vars_01_03.sas7bdat Addition subsets\construct_vars_02_04.sas7bdat Addition subsets\construct_vars_04.sas7bdat Addition subsets\construct_vars_05.sas7bdat
3. Source code The following programs are stored in the \MSPLUS MODEL\BUILD_BINARY directory:
ConstructP_asset_vars.sas ConstructP_spec01_03.sas ConstructP_specs02_04.sas ConstructP_specs04b.sas ConstructP_spec05.sas
4. Output variables
The following person variables are added to the MATH database:
Person Variables
ABS_PRGNT BALACC BALOIN BALREN
BALRET CHILD CSP_PAID DISABLE2
DIVID DRAW DRAW_ORIG FOSTCOV
FOSTER FOSTER_CHLD FOSTPNUM FSDIS
FSSICOV GRD_LEVEL INS_TYPE INTER
JOB1_HRS-JOB7_HRS LIFE LUMP_SEV MEDEXP
MISC_CASH MISCEARN OASSET OSHLEXP
OTHER_INC PAID_JOB PAYER PROFITS
RENTAL SOCSEC SSI_CHILD SSI_SELF
SSSICOV T30AMT-T35AMT T38AMT UNEMP
UTIL VETS WAGES WORKCOMP
Chapter III Create Person Variables
Mathematica® Inc. 14
C. Technical specification If needed, the input file is sorted at the household level by SSUID ERESIDENCEID or SSUID PNUM ERESIDENCEID. Income and expense variables are at the monthly level, unless otherwise indicated. The variables are constructed as follows:
ABS_PRGNT: Is this person female and absent from work without pay due to pregnancy, childbirth, or maternity leave?
Code location: constructP_spec05.sas Construction: If ESEX = 2 (female) and any of EJBn_AWOPREm=8 (absent from a job without pay because of maternity/paternity leave), for n=1 to 8 and m=1 to 3, then set ABS_PREGNT=1, otherwise, set
ABS=PREGNT=2.
BALACC: Value of assets held in financial institutions, government securities, and municipal and corporate bonds Code location: constructP_asset_vars.sas Construction: Sum of the following asset account values:
TJSCHKVAL share of jointly owned checking (with spouse in the household) TJOCHKVAL share of jointly owned checking (with no spouse in the household) TJSSAVVAL share of jointly owned savings (with spouse in the household) TJOSAVVAL share of jointly owned savings (with no spouse in the household) TJSMMVAL share of jointly owned money market deposit accounts and money market funds
(with spouse in the household) TJOMMVAL share of jointly owned money market deposit accounts and money market funds
(with no spouse in the household) TJSCDVAL share of jointly owned certificates of deposit (with spouse in the household) TJOCDVAL share of jointly owned certificates of deposit (with no spouse in the household) TOCHKVAL individually owned checking TOSAVVAL individually owned savings TOMMVAL individually owned money market deposit accounts and money market funds TOCDVAL individually owned certificates of deposit TJSGOVSVAL share of jointly owned government securities (with spouse in the household) TJOGOVSVAL share of jointly owned government securities (with no spouse in the household) TJSMCBDVAL share of jointly owned municipal and corporate bonds (with spouse in the household) TJOMCBDVAL share of jointly owned municipal and corporate bonds (with no spouse in the household) TOGOVSVAL individually owned government securities TOMCBDVAL individually owned municipal and corporate bonds
BALOIN: Balance in interest-bearing accounts Code location: constructP_asset_vars.sas Construction: Sum of the following asset account values:
TJSMFVAL share of jointly owned mutual funds (with spouse in the household) TJOMFVAL share of jointly owned mutual funds (with no spouse in the household) TJSSTVAL share of jointly owned stocks (with spouse in the household) TJOSTVAL share of jointly owned stocks (with no spouse in the household)
Mathematica® Inc. 15
TOMFVAL individually owned mutual funds TOSTVAL individually owned stocks TOINVVAL other financial investments
BALREN: Rental property equity
Construction: For each type of rental property, subtract off the debt, then sum the three types. If debt is greater than value for any of the three types, the equity for that type is set to 0.
Sum of ((TJSRPVAL – TJSRPDEBTVAL) jointly owned rental property (with spouse in household) (TORPVAL – TORPDEBTVAL) individually owned rental property (TJORPVAL – TJORPDEBTVAL)) jointly owned rental property (with no spouse in household)
BALRET: Balance in retirement accounts
Construction: Sum of:
TIRAKEOVAL value of IRA and KEOGH accounts TTHR401VAL value of 401k, 403b, 503b, and Thrift Savings Plan accounts
CHILD: Amount of child support payments received in the reference month Code location: constructP_spec01_03.sas Construction: For each person who reported receiving child support payments during the reference period (ECSMNYN=1), set CHILD equal to the amount of those payments (TCSAMT).
CSP_PAID: Imputed amount of child support paid in the reference month Code location: constructP_spec04b.sas Construction: The SIPP variable, TAMOUNTPAID, is an annual amount, but SIPP provides no information about over how many months the support was paid nor whether any of that amount was paid in December. Using the complete SIPP with records for every month, we identified the percentage of those receiving child support who received it in December (pct_received_support) and calculated one standard deviation above the mean amount received in December (limit). To calculate a monthly value for CSP_PAID, restrict the universe to those who make child support payments, then randomly identify payers for December, assuming their percentage matches pct_received_support. If TAMOUNTPAID is less than or equal to limit, then set CSP_PAID to TAMOUNTPAID. If TAMOUNTPAID is over limit set CSP_PAID to TAMOUNTPAID divided by 12.
if TAMOUNTPAID > 0 then do;
rndm_nmbr = ranuni(&seed.);
if rndm_nmbr <= pct_received_support then do;
if TAMOUNTPAID <= limit then CSP_PAID = TAMOUNTPAID;
else CSP_PAID = round(TAMOUNTPAID/12);
end;
Mathematica® Inc. 16
DISABLE2: Is this person prevented from working due to a physical, mental, or other health condition that limits the kind or amount of work he/she can do?
Code location: constructP_spec01_03.sas Construction: If a person has a disability that limits the work they can do (EDISABL=1) and is prevented from working (EJOBCANT=1) then DISABLE2=1. Otherwise, DISABLE2=2.
DIVID: Income from stocks and mutual funds this month
Construction: Set to TINC_STMF (annual income from stocks and mutual funds), divided by 12 and rounded to nearest integer. If TINC_STMF is missing, DIVID is set to missing.
DRAW: Earnings and profit from self-employment
Construction: For those who are 15 and older, sum of DRAW_ORIG (earnings from self-employment) and PROFITS (total earned income minus reported income from jobs). Set to 0 if under age 15 or have only missing values.
DRAW_ORIG: Earnings from self-employment
Construction: For those who are age 15 and older, sum of wages from jobs 1 through 7 (TJB1_MSUMALT to TJB7_MSUMALT) if the wages are from self-employment income (that is, when EJBn_JBORSE equals 2).
Set to 0 if under age 15 or have only missing values.
FOSTCOV: Foster parent/child identifier
Construction: FOSTCOV should identify all foster children, and one foster parent per household. For households that received foster care payments this month (EFFCANY=1 and EFCCMNYN=1), identify any foster parent/child pairings, using the relationship matrix (RREL for a foster parent or child equals 18).
FOSTCOV = 1 for all foster children. If there is one foster parent in the household, set FOSTCOV=1 for that parent. If there is more than one foster parent identified, choose the household reference person (if PNUM for the foster parent equals HREFPER) if that person is a foster parent. Otherwise, choose the foster parent with the lowest PNUM. Set FOSTCOV=1 for the chosen foster parent. FOSTCOV is 2, otherwise.
FOSTER_CHLD: Is this person a foster child?
Code location: constructP_spec02_04.sas Construction: Among those younger than 18, if any relationship pairing indicates a foster parent or child, set FOSTER_CHLD=1. Otherwise, set FOSTER_CHLD=2. For all those over age 18, set FOSTER_CHLD to missing.
FOSTER: Amount of foster child care payments received this month
Construction: FOSTER is the sum of foster child care payments received (TFCCAMT) by all foster parents in the household. It is assigned to the designated foster parent for that household. If there is one foster parent in the household, set FOSTER equal to TFCCAMT (foster care payment received) for that parent. If
Mathematica® Inc. 17 there is more than one foster parent identified, sum TFCCAMT for all foster parents in the household, and set FOSTER to that sum for the designated household foster parent. The method for selecting the foster parent is described under FOSTCOV.
FOSTPNUM: Person number of parent of foster child
Construction: The PNUM of the designated foster parent. See FOSTCOV for the method of selecting the foster parent.
FSDIS: SNAP disability indicator
Construction: For all persons under age 60, set FSDIS=1 if either
• TSSI_AMT > 0 (received SSI benefits this month) or
• RMWKWJB = 0 and (EDISABL = 1 or EJOBCANT = 1) (did not work and a disability prevents from working) and one of the following is true o (TSSCAMT + TSSSAMT) > 0 and ESSRSN2YN = 1 (received Social Security payments this month because of a disability) o TWCAMT > 0 (received Workers’ Compensation this month) o EVA1MNYN = 1 and TVA1AMT > 0 (received VA disability benefits this month) o EDIS8MNYN = 1 (received disability income this month) o Any EDIS[1, 2, 3, 4, 5, 6, 7, 10]MNYN = 1 and the corresponding TDISnAMT > 0
(received another type of disability payment this month) Otherwise, set FSDIS=0.
FSSICOV: Received federal SSI benefits this month
Construction: If ESSI_SRC1 in (1,3) or TSSI_SRC2=1 (received federal SSI payments or both federal and state SSI payments) then FSSICOV=1. Otherwise, FSSICOV=2.
GRD_LEVEL: Level or grade enrolled for persons aged 15 or older this month
Construction: If under age 15, set as missing. If age 15 or older, if EEDGRADE in (1,2,3,4,5,6,7,8) then GRD_LEVEL = 1 (1st-8th grade) else if EEDGRADE in (9,10,11,12) then GRD_LEVEL = 2; (9th-12th grade) else if EEDGRADE = 13 then GRD_LEVEL = 3; (College freshman) else if EEDGRADE = 14 then GRD_LEVEL = 4; (College sophomore) else if EEDGRADE = 15 then GRD_LEVEL = 5; (College junior) else if EEDGRADE = 16 then GRD_LEVEL = 6; (College senior) else if EEDGRADE = 17 then GRD_LEVEL = 7; (1st year graduate or professional school) else if EEDGRADE = 18 then GRD_LEVEL = 8; (2nd year or more in graduate/professional school) else if EEDGRADE = 20 then GRD_LEVEL = 9; (Vocational, technical, or business school) else if EEDGRADE = 19 then GRD_LEVEL = 10; (Enrolled in college, not working toward degree)
Mathematica® Inc. 18
INS_TYPE: Type of life insurance policy It is possible that someone with whole life insurance also has term insurance.
Code location: constructP_asset_vars.sas Construction: INS_TYPE = 1 if ELIFE_TYPE=2 (term life insurance only); INS_TYPE_2 if ELIFE_TYPE=1 (whole life insurance).
INTER: Income from interest-earning assets this month
Construction: Sum of TINC_BANK (annual interest from financial institutions) and TINC_BOND (annual interest from other assets), divided by 12 and rounded to nearest integer. If components are missing, INTER is set to missing.
JOB1_HRS to JOB7_HRS: Number of hours worked per week for jobs 1 through 7 Code location: constructP_spec05.sas Construction: For each of job1 to job7, choose the latest number of hours worked from the three possible values for each variable. Set JOBn_HRS equal to the first non-missing value of TJBn_JOBHRS3, TJBn_JOBHRS2, and TJBn_JOBHRS1, in that order, for n=1 to 7. If the values are all missing for job n, set JOBn_HRS to missing.
LIFE: Cash value of life insurance policies as of the last day of the reference period
Construction: Set equal to TLIFE_CVAL.
LUMP_SEV: Income from lump sum payments from severance payments or retirement plan, deferred income, or final pay check this month Code location: constructP_spec01_03.sas Construction: First, subtract from the lump sum payments (TLMPAMT) any funds rolled over to a retirement account (TROLLAMT), and limit this difference to 0 if it is negative. Add to this deferred payments from last year (TDEFERAMT). Divide the result by 12 and round to the nearest integer.
MEDEXP: Average monthly out-of-pocket medical expenses
Construction: Sum of the following annual medical expenditure variables, converted to monthly by dividing by 12:
TOTCMDPAY out-of-pocket (non-premium) for over-the-counter health-related products (if not negative)
THIPAYC comprehensive health insurance premiums THIPAYS supplemental health insurance premiums TMDPAY out-of-pocket (non-premium) on medical care
MISC_CASH: Income from charity, family or friends, roomers or boarders, estates, incidental and casual earnings, miscellaneous cash income, or National Guard or Reserve Pay
Mathematica® Inc. 19
Construction: If the person received miscellaneous income from multiple sources, including incidental and casual earnings, or from a source other than incidental or casual earnings (EMINC_TYP5YN=2/no) then set MISCEARN to TMINC_AMT/12. Otherwise, set to 0.
MISCEARN: Income from only incidental and casual earnings this month
Construction: If the person received miscellaneous income only from incidental and casual earnings (EMINC_TYP5YN=1/yes and all other EMINC_TYPn values =2/no) then set MISCEARN to TMINC_AMT/12.
Otherwise, set to 0.
PAYER: Contributor toward household utilities and/or mortgage or rent
Construction: The SIPP variables ERMU_PAYER1 to ERMU_PAYER3 are the person-numbers (PNUM) of up to three household members who contribute to household rent, mortgage, and utility payments. For each person within the household, PAYER is set to 1 if one of the ERMU_PAYER1 to ERMU_PAYER3 values equal that person’s PNUM. The households on which the ERMU_PAYER variables are based do not always align with our household definition of SSUID ERESIDENCEID. Therefore, we use the ERMU_PAYER values from the household reference person record. This ensures that the people identified as payers contributed to the household reference’s person’s household.
For each person within the household, PAYER = 2; *Not a contributor;
do over ermu_payer;
if ermu_payer = PNUM then PAYER = 1; *A contributor;
PROFITS: Amount of profits from self-employed income
Construction: For those who are age 15 and older, subtract earned income from jobs (TJB1_MSUMALT to TJB7_MSUMALT) from total earned income (TPEARN_ALT). May be negative (loss). Set to 0 if under age 15 or have only missing values.
RENTAL: Net income from rental properties
Constructio…
This is the start of the file's text. The full file is on GovTribe.
File details come from the government source that posted it. Updated .