A major policy change in how Supplemental Security Income (SSI) and Calfresh benefits are being administered is on the horizon. As of the Summer of 2019, seniors in San Francisco, as well as across the United States, will become eligible for Calfresh, when, up until this point they not considered eligible. This change was considered nessecary as social security payments have not kept with the increased cost of living, particularily in high cost of living areas such as San Francisco.
The purpose of this module is to examine, using data provided by by FSFT Report (2018), this change from an epidemological perspective. We will estimate how many additional recepients may become eligible for CalFresh because of these changes – citywide, on a district by district basis, and on a neighborhood basis. This could, in theory, be used to guide resource allocation as a key component of these changes will be directing new beneficiaries to enroll in the Calfresh program.
Before we begin, let’s outline basic eligibility guidelines for both programs.
Supplemental Security Income (SSI) is a Federal Income supplement program that is funded by general tax revenues and is designed to help aged, blind, and disable people who have little or no income. It is meant to provide cash to meet basic needs for food, clothing and shelter3
Criteria for eligibility include but are not limited to:
and people who have:
Other categories apply, but these are the most relevant for the discussion today.
Calfresh is the California version of the Supplemental Nutritional Assistance Program (SNAP). Calfresh provides benefits to low income residents of California using gross hosehold income as a eligibility requirement.
Eligibility is based primarly on income. Benefits are approximately 160 dollars per person per month.
So in order to estimate the number of SSI recepients that will become newly eligible for SSI benefits in the near future we first need some information demographic information
SFPoverty <- read.csv("SFPoverty.csv", header = T)
SFPoverty
## ï..Category Under.200.FPL Under.100.FPL
## 1 0 to 5 10311 4467
## 2 6 to 17 21618 9541
## 3 18 to 24 31285 20075
## 4 25 to 64 121388 58639
## 5 65 to 74 18783 7159
## 6 75 and above 23183 9643
## 7 Total 226,520 109524
We see that the data is properly sorted by factor. It’s worth manipulating this table in a couple of ways before further work.
Here is becomes useful to pull the FPL and the Individual Calfresh Eligibility rates in order to translate this data into meaningful information for our purposes.
The FPL measures range between: 12,140 - 42,380 total household income, with the low end being for individuals and the high end being for familes of 8.
Calfresh eligibility rates range from: 2024 - 7064 Gross Monthly Incomes, with allowable deductibles.
It would be useful to convert Calfresh levels more exactly to determine How Calfresh eligiblity translates to FPL guidelines. Using he guidelines for deducibles outlines in link
Calfresh.Vector = c(2024, 2744, 3634, 4184, 4904, 5624, 6344, 7064)
CalfreshEligibility <- function(y) {
#Minus 20 percent of AGI as a deduction
y <- y - (y * .2)
#Vectorizing the Standard Deduction based on household size
SD <- c(160, 160, 160, 170, 199, 199, 199, 199)
#Multiply by 12 to get a yearly AGI
y <- (y - SD) * 12
return(y)
}
CalfreshEligibility(Calfresh.Vector)
## [1] 17510.4 24422.4 32966.4 38126.4 44690.4 51602.4 58514.4 65426.4
These data results clearly show that familes under 200 percent of FPL should qualitfy for Calfresh benefits. 200 percent FPL is the level that is typically as a rough benchmark to quality for CalFresh and for the purposes of this paper we will use it as a bechmark rate. There are other deductions available, which should expand the minimum rate, but we will set those aside for the time being due to the complexity if implementing them given the constraints of the assignment. The would only further expand the base, so, the figures inside should be looked as a floor.
It’s worth verifying the integrity of the report, since it gives us two ways to measure the number of people over 65 who are under 200 percent of FPL.
x <- 18735 + 23183
x
## [1] 41918
z <- 117064 * (.14 + .22)
z
## [1] 42143.04
The data seems close enough to proceed. The discrepancy is less than 300 people, which maybe accounted for in unverified income.
The next step is to check SSI benefits to approximate how many individuals are receiving SSI benefits. The requirements are monthly income of no more than 2000 per individual or 3000 per household.6. The APA estimates the number of elderly living alone at 26 percent (as of 2014) 7. Good enough for these estimates.
a <- (12 * (1500 * (1 - .27)) + (2000 * (.27)))
a
## [1] 13680
The income threshold is much smaller for SSI recepients. This brings us to our first conundrum. This is far below FPL level. We need a better way to estimate he number of SSI recepients living in the city. Luckily the SSI administration has publicly avaiable data that we can use for that purpose. link.
library(tidyr)
SSI <- read.csv("ca.csv", header = T)
head(SSI)
## ï..County ANSI.Code Total Aged Blind.and.disabled
## 1 Total, California 6 1,261,217 359,988 901,229
## 2 Alameda 6001 50,166 16,397 33,769
## 3 Alpine 6003 36 (X) (X)
## 4 Amador 6005 722 61 661
## 5 Butte 6007 11,063 853 10,210
## 6 Calaveras 6009 1,026 73 953
## Under.18 X18â..64 X65.or.older SSI.recipients.also.receiving.OASDI
## 1 104,499 575,635 581,083 498,298
## 2 3,091 22,511 24,564 16,879
## 3 (X) 21 (X) 20
## 4 38 522 162 326
## 5 769 7,822 2,472 4,632
## 6 88 716 222 439
## Amount.of.payments..thousands.of.dollars..a
## 1 808,566
## 2 34,231
## 3 18
## 4 441
## 5 7,117
## 6 637
This data set gives us a count of recepients who are on SSI, both in the aged and the blind/disabled categories. We have determined that these individuals, based on income criteria, would be eligible for CalFresh. We can easily see by scrolling through the numbers what the eligibility would be here, but why do that when we can use R to find the row and display it ot us properly.
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
SF <- filter(SSI, ï..County == "San Francisco")
SF
## ï..County ANSI.Code Total Aged Blind.and.disabled Under.18
## 1 San Francisco 6075 42,499 19,193 23,306 692
## X18â..64 X65.or.older SSI.recipients.also.receiving.OASDI
## 1 14,306 27,501 17,031
## Amount.of.payments..thousands.of.dollars..a
## 1 27,364
This gives us a good idea of the number of people who might newly be eligible for CalFresh in June of next year == 42,499. Two questions remain. First, based on historical trends, what is a realistic range of people who newly enroll? Second, what can we expect on a district by district basis, i.e. in terms of resource allocation where should we direct resources to best serve the needs of the community?
The first question can estimated by taking a look at currently levels of CalFresh enrollment. While that will not give us an initial figure, it might give us an idea of the potential ceiling, given currently known information.
According to the Food Security Task Force, San Francisco enrolls approximately 66 percent of all eligible enrollees.8 Given this information, a quick ceiling check would be:
potential <- 42499 * .66
potential
## [1] 28049.34
Next is calculating the impact by district. By scraping the information that we have on the FSTF report, we can estimate new impact by looking at current Calfresh recpeients by district. While this is not a perfect measure it is a reasonable assumption to infer that current recepients can inform potential new enrollees. Or at least, it’s good enough for this report.
demogs <- read.csv("demogs.csv", header = T)
demogsdf <- data.frame(demogs)
demogsdf$CalfreshPercentage = round(100 * demogsdf$Calfresh.by.Household/42327, digits = 2)
demogsdf$PotentialSSIEnrollees = round(demogsdf$CalfreshPercentage * 28049.34 / 100, digits = 0)
demogsdf
## District Population Calfresh.by.Household CalfreshPercentage
## 1 1 76640 1974 4.66
## 2 2 67783 759 1.79
## 3 3 74827 3724 8.80
## 4 4 75909 2359 5.57
## 5 5 81814 3447 8.14
## 6 6 66230 7340 17.34
## 7 7 69913 1596 3.77
## 8 8 71631 2061 4.87
## 9 9 84493 5263 12.43
## 10 10 73115 8614 20.35
## 11 11 85619 5190 12.26
## 12 Total 826944 77109 182.17
## PotentialSSIEnrollees
## 1 1307
## 2 502
## 3 2468
## 4 1562
## 5 2283
## 6 4864
## 7 1057
## 8 1366
## 9 3487
## 10 5708
## 11 3439
## 12 51097
Indeed, although the numbers are not surprising, analysis indicates resources should be concentated in districts 10 and 6. Let’s take a look a the final numbers graphically.
library(ggplot2)
plotdf <- subset.data.frame(demogsdf, District != 'Total')
plotdf$District <- factor(plotdf$District, levels = c('1','2','3', '4', '5', '6', '7', '8', '9', '10', '11'))
pl <- ggplot(plotdf, aes(x = District, y = PotentialSSIEnrollees, fill = District)) + geom_bar(stat = 'identity', color = 'grey') + xlab('District') + ylab('P. Calfresh Enrollees') + ggtitle("Potential New Calfresh Enrollees from SSI by District")
pl
Note in addition to coloring the data so it’s easy to read, we reordered the bar rchart using factor levels command to make it logically consistent – i.e. the districts appear in ascending order. We removed the total row to make the district data viewable. In order to refine these numbers, we ought to take a look at the percentage of elderly and disabled in each district directly instead of using current Calfresh Enrollment as a proxy. But given the time constraints on this project we’ll leave it at this for now, with the potential to expand in the future.
I hope this is a useful bit of information and sufficient to generate interest in an emerging public health issue in San Francisco. The data analysis, done at a rudiementary level, nontheless points to an urgent need to devote resources towards the conversion of SSI recepients to successful Calfresh enrollees. The data allows us to intuit the need to allocate resources in a stragegic manner in the near future to meet these needs.