Skip to content

Estimating Local SNAP Eligibility using Monte-Carlo Methods

Notifications You must be signed in to change notification settings

mikeghen/snap-eligibility-estimate

Repository files navigation

Estimating SNAP Eligibility using Monte-Carlo Methods 🎲

Simulating 233066 households for Bucks County
100%|█████████████████████████████████████████████████████████████| 233066/233066 [00:39<00:00, 11925.22it/s]
Simulated 233066 households, found 47650 of 349618 individuals eligible in Bucks

Objective

Estimate the eligible but not enrolled population by zipcode, county, and congressional district using publicly available data.

Method

There are three questions that dictate whether you might be eligible for SNAP in PA:

  1. How many people live in your household?
  2. What is your gross monthly income?
  3. Is anyone elderly or disabled in your household?

The information is gathered by the US Census Bureau down to the zipcode level in the American Community Survey. This project uses data in the ACS to simulate the three dimensions above. By simulating these dimensions, rough estimation for eligibility can be computed.

Using Monte-Carlo methods using randomness derived from US Census data, SNAP eligibility estimates are generated based on local household size, income, and households with elderly or disabled individuals.

Probability Density Functions (PDFs)

A series of PDFs are used to randomly generate a sample of households. Each simulated household is assigned a size (1-7 person households), an income (< $10k - $200k+), and either has or does not have an elderly or disabled household member. Using the US Census data, we created three PDFs, one for each of the three questions that influence SNAP eligibility.

⚠️ Currently assumes that these PDFs are independent of each other. In reality, household size actually influences income and elderly/disabled. This is represented in the US Census data and can be factored into the simulation later.

Calculating Households Sizes

In each locality, we can get the number of total number of households by number of household members. From these numbers, we can compute a PDF (sample shown below in Dist plot).

Philadelphia Household Size PDF Bucks Household Size PDF
households pdf{:height="250px" width="250px"} households pdf{:height="250px" width="250px"}

Calculating Incomes

In each locality, we can get the number of total number of households by income (in 16 buckets < $10k to > $200k). From these numbers, we can compute a PDF (sample shown below in Dist plot).

Philadelphia Income PDF Bucks Income PDF
incomes pdf{:height="200px" width="200px"} incomes pdf{:height="200px" width="200px"}

This presents a challenge because we only have certain data for income by household size. Without factoring in the impact of household size on income in the simulation, the final estimates of SNAP eligibility seem reasonably when compare to previous SNAP participation rates (Cunnyngham, K et al, 2009) and data available from PA Department of Human Services (Mathews). This simulation is in simulation_1.py.

Factoring in Household Size to Income

🚧 Work in progress. US Census data provides median household income by household size (B19019). Using methods for estimating standard deviation, this simulation seeks to more accurately simulate SNAP eligibility. US Census data also provides total households by income buckets (B19101) using 16 income buckets (see simulator.INCOMES in simulator.py).

This method will use the median income by household size as a seed to adjust the probability distribution function derived from US Census data (example below). These PDFs vary by county, zipcode, and congressional district.

Income PDFs are adjusted by summing them with a normally distributed probability density function derived for each household size (see household_size_pdfs.py). Using the median from US Census data and an assumed standard deviation (sigma = median / 4), this method sums the two PDFs together and normalizes them into a household size adjusted income probability distribution function.

Figures below should this household size income adjustment in Philadelphia county. This effectively lowers the number of larger (2+ person) households eligible for SNAP since larger households tend to make more income as demonstrated by a larger median income.

1-person Household Income Adjusted PDF 4-person Household Income Adjusted PDF
incomes pdf{:height="200px" width="200px"} incomes pdf{:height="200px" width="200px"}

After running the simulation using various methods for calculating sigma, it seems that this simulation produces unreasonably low estimates for SNAP eligibility. The code for this simulation can be found in simulation_2.py

Calculating Elderly/Disabled

⚠️ Not currently factoring this into the simulation.

US Census Data: American Community Survey Resources

About

Estimating Local SNAP Eligibility using Monte-Carlo Methods

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published