Less-Than-A-Thousand-Words Research Article
How Does Food Hardship Relate to Financial Well-Being and Subjective Well-Being?
Summary
This article investigates how food hardship relates to financial well-being and subjective well-being in the United States.
The key research question is:
What would be our best predictions on the difference in (1) average financial well-being score and (2) average subjective well-being score between two groups of people who did and did not experience food hardship in the past 12 months?
The findings suggest that people who experience food hardship, on average, report significantly lower financial well-being score and subjective well-being score compared to those who do not experience any food hardship.
Data
This article uses data from the National Financial Well-Being Survey 2016 conducted by the Consumer Financial Protection Bureau (CFPB) The survey was fielded between October 27, 2016 and December 5, 2016. In total, 6394 respondents completed the survey.
Description of Key Variables
Defining Food Hardship
I assume that a respondent faced food hardship if they answered either “sometimes” or “often” to the questions on food hardship.
Data Analysis
I analyze data in R to investigate the research question. The code is presented below:
#Load required libraries
if (!require("pacman")) install.packages("pacman")
pacman::p_load(tidyverse, table1)#Download CFPB FWB Survey data
data <- read.csv("https://www.consumerfinance.gov/documents/5614/NFWBS_PUF_2016_data.csv")##Creating a dataset removing non-responses to these 5 questions
data1<-data %>%
select(FWBscore,SWB_1,SWB_2,SWB_3,MATHARDSHIP_1,MATHARDSHIP_2) %>%
filter(FWBscore>=0 & SWB_1>=0 & SWB_2>=0 & SWB_3>=3 & MATHARDSHIP_1>=0 & MATHARDSHIP_2>=0)##Creating two different food hardship dummy variables
data1$food.hardship1<-ifelse(data1$MATHARDSHIP_1>=2,1,0)
data1$food.hardship2<-ifelse(data1$MATHARDSHIP_2>=2,1,0)##Creating the two tables using the table1 package
label(data1$SWB_1)<-"I am satisfied with my life"
label(data1$SWB_2)<-"I am optimistic about my future"
label(data1$SWB_3)<-"If I work hard today, I will be more successful in the future"
label(data1$FWBscore)<-"CFPB Financial Well-Being Scale score"pvalue <- function(x, ...) {
# Construct vectors of data y, and groups (strata) g
y <- unlist(x)
g <- factor(rep(1:length(x), times=sapply(x, length)))
if (is.numeric(y)) {
# For numeric variables, perform a standard 2-sample t-test
p <- t.test(y ~ g)$p.value
} else {
# For categorical variables, perform a chi-squared test of independence
p <- chisq.test(table(y, g))$p.value
}
# Format the p-value, using an HTML entity for the less-than sign.
# The initial empty string places the output on the line below the variable label.
c("", sub("<", "<", format.pval(p, digits=3, eps=0.001)))
}data1$food.hardship1 <-
factor(data1$food.hardship1, levels=c(1,0),
labels=c("Often/sometimes faced food hardship",
"Never faced food hardship"))data1$food.hardship2 <-
factor(data1$food.hardship2, levels=c(1,0),
labels=c("Often/sometimes faced food hardship",
"Never faced food hardship"))table1(~ FWBscore+SWB_1+SWB_2+SWB_3 | food.hardship1, data=data1,overall = FALSE,extra.col=list(`P-value`=pvalue))table1(~ FWBscore+SWB_1+SWB_2+SWB_3 | food.hardship2, data=data1,overall = FALSE,extra.col=list(`P-value`=pvalue))##Getting 95% Confidence Intervals
t.test(FWBscore~food.hardship1, data=data1)
t.test(FWBscore~food.hardship2, data=data1)t.test(SWB_1~food.hardship1, data=data1)
t.test(SWB_1~food.hardship2, data=data1)t.test(SWB_2~food.hardship1, data=data1)
t.test(SWB_2~food.hardship2, data=data1)t.test(SWB_3~food.hardship1, data=data1)
t.test(SWB_3~food.hardship2, data=data1)
Results
Food Hardship Measure 1: “I worried whether our food would run out before I got money to buy more”
First, we observe that among the respondents of the first question, about 17% reported experiencing food hardship in the past 12 months. According to an estimate by the United States Department of Agriculture (USDA), in 2016, the food insecurity rate in the U.S. was about 12.5%. The relatively higher food hardship, as I find in this analysis, is possibly due to using a different method (than the one used by the USDA) to generate the outcome variable.
The average financial well-being score is 18.1 points (95% confidence interval [-18.81, -17.38]) lower for those who experienced food hardship in the past 12 months compared to those who did not experience any food hardship.
Also, the average life satisfaction score for those who experienced food hardship is 1.01 points (95% confidence interval [-1.12, -0.92]) lower.
Similarly, we observe lower average scores reported by those who faced food hardship for the other two measures of subjective well-being, which capture their optimism about the future and their belief that today’s hard work will yield positive future results.
Food Hardship Measure 2: “The food that I bought just didn’t last and I didn’t have money to get more”
We reach the same conclusions (as mentioned earlier) if we consider the second measure of food hardship.
Discussion
Given the strong association between food hardship and both measures of well-being, a relevant question is: why do these associations exist? It is difficult to mathematically express the true process that generates the data because we do not (yet) have a theoretical model that shows how these constructs are interrelated. I argue that food hardship, financial well-being, and subjective well-being share a common cause — financial condition of a household.
If the model (perhaps a small segment of the true model) shown above is correct, the implication is that (keeping all else constant) a negative shock to the financial condition of a household would lead to an increase in food hardship and a decrease in financial well-being and subjective well-being. As a real-world example, during the time of a macroeconomic turmoil, if a household’s financial condition worsens (and other things do not change accordingly to compensate for its loss, e.g., they do not receive enough support from external sources), the household members would report higher hardship and lower well-being.
Implications
For researchers, the findings of this study imply that having data on one of these variables can be informative in predicting the values of the other two variables. While analyzing the effect of an event (e.g., a change in the generosity of a welfare program, a recession, soaring inflation, etc.) on household well-being, a researcher may not have data on all three outcomes in the same dataset. For example, a longitudinal dataset may gather data only on food hardship rather than financial well-being or subjective well-being. At the very least, given that there exists a non-zero difference in food hardship between two groups of people, we can predict that there will be a non-zero difference in both financial well-being and subjective well-being.
For policymakers, these findings imply that certain policy changes which increase food hardship — by negatively affecting financial situation of a household— may also reduce financial well-being and subjective well-being. Therefore, while evaluating the costs and benefits of relevant policy changes, all these consequences on well-being should be taken into consideration.
Appendix
Below I present the code to generate histograms for visualizing how the distributions of Financial Well-Being score and Subjective Well-Being (life satisfaction) score vary between those who did and did not experience food hardship in the past 12 months:
###Creating Histograms##Food Hardship Question 1#FWB Score
ggplot(data1, aes(x=FWBscore,y=..density..,fill=factor(food.hardship1))) +
geom_histogram(position='dodge', binwidth=1) +
geom_density(alpha=0.25)+
labs(title = "Distribution of Financial Well-Being Scores",
fill = "Group",
x="Financial Well-Being Score",
y="Proportion")+
scale_fill_discrete(labels = c("Sometimes/often faced food hardship", "Never faced food hardship"))+
theme(axis.text.x = element_text(size=25, angle=0),
panel.background=element_blank(),
plot.title = element_text(face = "bold", size = 30, hjust = 0.5),
axis.text.y = element_text(size=25),
axis.title.x = element_text(size=25),
axis.title.y = element_text(size=25),
legend.text = element_text(size=25),
legend.title = element_text(size=25),
legend.position="top")#SWB Score
ggplot(data1, aes(x=SWB_1,y=..density..,fill=factor(food.hardship1))) +
geom_histogram(position='dodge', binwidth=1) +
geom_density(alpha=0.25)+
labs(title = "Distribution of SWB (Life Satisfaction) Scores",
fill = "Group",
x="SWB (Life Satisfaction) Score",
y="Proportion")+
scale_fill_discrete(labels = c("Sometimes/often faced food hardship", "Never faced food hardship"))+
theme(axis.text.x = element_text(size=25, angle=0),
panel.background=element_blank(),
plot.title = element_text(face = "bold", size = 30, hjust = 0.5),
axis.text.y = element_text(size=25),
axis.title.x = element_text(size=25),
axis.title.y = element_text(size=25),
legend.text = element_text(size=25),
legend.title = element_text(size=25),
legend.position="top")##Food Hardship QUestion 2#FWB Score
ggplot(data1, aes(x=FWBscore,y=..density..,fill=factor(food.hardship2))) +
geom_histogram(position='dodge', binwidth=1) +
geom_density(alpha=0.25)+
labs(title = "Distribution of Financial Well-Being Scores",
fill = "Group",
x="Financial Well-Being Score",
y="Proportion")+
scale_fill_discrete(labels = c("Sometimes/often faced food hardship", "Never faced food hardship"))+
theme(axis.text.x = element_text(size=25, angle=0),
panel.background=element_blank(),
plot.title = element_text(face = "bold", size = 30, hjust = 0.5),
axis.text.y = element_text(size=25),
axis.title.x = element_text(size=25),
axis.title.y = element_text(size=25),
legend.text = element_text(size=25),
legend.title = element_text(size=25),
legend.position="top")#SWB Score
ggplot(data1, aes(x=SWB_1,y=..density..,fill=factor(food.hardship2))) +
geom_histogram(position='dodge', binwidth=1) +
geom_density(alpha=0.25)+
labs(title = "Distribution of SWB (Life Satisfaction) Scores",
fill = "Group",
x="SWB (Life Satisfaction) Score",
y="Proportion")+
scale_fill_discrete(labels = c("Sometimes/often faced food hardship", "Never faced food hardship"))+
theme(axis.text.x = element_text(size=25, angle=0),
panel.background=element_blank(),
plot.title = element_text(face = "bold", size = 30, hjust = 0.5),
axis.text.y = element_text(size=25),
axis.title.x = element_text(size=25),
axis.title.y = element_text(size=25),
legend.text = element_text(size=25),
legend.title = element_text(size=25),
legend.position="top")
Food Hardship Measure 1
Food Hardship Measure 2
Weighted Analyses
In the above analyses, I did not incorporate the survey weights provided in the survey (finalwt). The results of the weighted analyses seem fairly identical to the results of the unweighted analyses. Below, I present the code and the results of the weighted analyses:
####Weighted Analysis####
#Note: I created the tables manually in MS word based on the results
#from the following models
##Food Hardship Measure 1
model.fwb1<-lm(FWBscore~food.hardship1, data=data1, weights = data1$finalwt)
summary(model1)
model.swb11<-lm(SWB_1~food.hardship1, data=data1, weights = data1$finalwt)
summary(model.swb11)
model.swb21<-lm(SWB_2~food.hardship1, data=data1, weights = data1$finalwt)
summary(model.swb21)
model.swb31<-lm(SWB_3~food.hardship1, data=data1, weights = data1$finalwt)
summary(model.swb31)
##Food Hardship Measure 2
model.fwb2<-lm(FWBscore~food.hardship2, data=data1, weights = data1$finalwt)
summary(model.fwb2)
model.swb12<-lm(SWB_1~food.hardship2, data=data1, weights = data1$finalwt)
summary(model.swb12)
model.swb22<-lm(SWB_2~food.hardship2, data=data1, weights = data1$finalwt)
summary(model.swb22)
model.swb32<-lm(SWB_3~food.hardship2, data=data1, weights = data1$finalwt)
summary(model.swb32)
Food Hardship Measure 1: “I worried whether our food would run out before I got money to buy more”
Food Hardship Measure 2: “The food that I bought just didn’t last and I didn’t have money to get more”
Courtesy
Table1 package is a work by Benjamin Rich. Its documentation is available here: https://cran.r-project.org/web/packages/table1/index.html
Tidyverse is a set of packages maitained by Hadley Wickham. Its documentation is available here: https://github.com/tidyverse/tidyverse
National Financial Well-Being Survey 2016 was conducted by the Consumer Financial Protection Bureau. Its documation is available here: https://files.consumerfinance.gov/f/documents/cfpb_nfwbs-puf-user-guide.pdf
This article is not peer-reviewed. The author confirms sole responsibility for the article and declares that he has no conflict of interest.
The results are based on a publicly available dataset. You can reproduce the results shown above by running the code in R.
If you have any questions/comments, reply below or reach out to the author at vivekbd92(at)gmail(dot)com.