******************************************************************************** * PROGRAM: fsf_week3_reproducibility.do * PURPOSE: Reproduce all statistics in the #FoodSecurityFridays Week 3 * infographic: "Higher-Income Households Can't Be Food Insecure" * * DATA INPUT: cpsdec2024.dta (raw CPS Food Security Supplement, December 2024) * Available from: https://www.census.gov/data/datasets/ * time-series/demo/cps/cps-supp_cps-repwgt/cps-food-security.html * * AUTHOR: Matthew P. Rabbitt * DATE: February 2026 * * DESCRIPTION: This program generates every statistic shown in the LinkedIn * infographic (higher_income_fi_linkedin.html / * foodsecurityfridays_week3.png). It is designed for external * researchers to verify the accuracy of reported figures. * * The infographic dispels the myth that households above federal * nutrition program eligibility thresholds cannot experience * food insecurity. It presents: * * 1. Headline statistics (6.2 million HHs, 7.9% rate) * 2. Food insecurity rates by income-to-poverty ratio * 3. Item endorsement rates among higher-income FI households * 4. Income non-response rate (for footnote) * * KEY DEFINITIONS: * * Food insecurity: Households classified as having low or very low food * security based on responses to the 18-item U.S. Household Food Security * Survey Module (raw score >= 3 for households with children, >= 3 for * households without children on the 10-item adult scale). * * Income-to-poverty ratio: Household income divided by the Census poverty * threshold appropriate for the household's size and composition. A ratio * of 1.85 means the household earns 185% of the poverty line. * * Higher income: Households with income-to-poverty ratio >= 1.85 (185% FPL), * which is the upper eligibility limit for most federal nutrition programs * including WIC and free school meals. * * NOTES: * - All estimates use household supplement weights (hhsupwgt) * - Analysis restricted to reference persons to avoid double-counting HHs * - Households with missing income are excluded from income-stratified * analyses but included in overall food insecurity rate * - 2024 poverty threshold for family of 4 with 2 children: $31,812 * - 185% of that threshold: $58,852 * ******************************************************************************** clear all set more off ******************************************************************************** * USER SETTINGS — MODIFY PATHS AS NEEDED ******************************************************************************** * Input directory containing raw CPS-FSS data local indir "YOUR_PATH_HERE" * Input filename (raw December 2024 CPS-FSS) local infile "cpsdec2024.dta" * Output directory for log file local outdir "YOUR_PATH_HERE" * Open log file capture log close log using "`outdir'/fsf_week3_reproducibility.log", replace ******************************************************************************** * SECTION 1: LOAD RAW DATA * * Load the December 2024 CPS Food Security Supplement microdata. We restrict * to households that completed the food security supplement (hrsupint == 1). ******************************************************************************** di _n "============================================================" di "FOOD SECURITY FRIDAYS — WEEK 3 REPRODUCIBILITY FILE" di "Higher-Income Households Can't Be Food Insecure" di "============================================================" _n di "Loading raw CPS Food Security Supplement data..." use "`indir'/`infile'" if hrsupint == 1, clear di "Observations loaded: " _N ******************************************************************************** * SECTION 2: CONSTRUCT HOUSEHOLD IDENTIFIER * * The CPS uses two ID variables (hrhhid and hrhhid2) to uniquely identify * households. We concatenate these to create a single household ID. ******************************************************************************** gen revhhid = hrhhid + hrhhid2 label var revhhid "Household identifier" ******************************************************************************** * SECTION 3: RESTRICT TO REFERENCE PERSONS * * To obtain household-level estimates without double-counting, we keep only * one record per household. We use the reference person (perrp == 40) or * spouse of reference person (perrp == 41) as the household representative. ******************************************************************************** * Keep reference persons only keep if inlist(perrp, 40, 41) di "Households (reference persons): " _N ******************************************************************************** * SECTION 4: CONSTRUCT SURVEY WEIGHTS * * The CPS provides supplement weights that account for the complex survey * design and non-response. Weights are stored as integers multiplied by * 10,000, so we divide to get actual weights. * * hhsupwgt = household-level supplement weight * hhsupwtk = household weight in thousands (for count estimates) ******************************************************************************** * Convert weights from integer storage replace hhsupwgt = hhsupwgt / 10000 * Create weight in thousands for population counts gen hhsupwtk = hhsupwgt / 1000 label var hhsupwgt "Household supplement weight" label var hhsupwtk "Household supplement weight (thousands)" ******************************************************************************** * SECTION 5: CONSTRUCT HOUSEHOLD STRUCTURE VARIABLES * * We need household size (hrnumhou) and number of children to determine * the appropriate poverty threshold. ******************************************************************************** * Number of persons in household (from CPS variable) gen numpers = hrnumhou label var numpers "Number of persons in household" * Count children (age 17 or younger, excluding reference person/spouse) * perrp > 47 identifies children and other household members bysort revhhid: egen numch = sum(prtage <= 17 & perrp > 47) label var numch "Number of children in household" * Indicator for households with children gen htchild = (numch > 0) label var htchild "Household has children (1 = yes)" ******************************************************************************** * SECTION 6: CONSTRUCT POVERTY THRESHOLDS * * Poverty thresholds vary by household size, number of children, and age of * householder (for 1-2 person households). We use the 2024 Census Bureau * poverty thresholds. * * Source: U.S. Census Bureau, Poverty Thresholds for 2024 * https://www.census.gov/data/tables/time-series/demo/income-poverty/ * historical-poverty-thresholds.html ******************************************************************************** gen hpvcut = . * 1-person households (threshold varies by age) replace hpvcut = 16320 if hrnumhou == 1 & prtage < 65 replace hpvcut = 15045 if hrnumhou == 1 & prtage >= 65 * 2-person households (threshold varies by age and presence of children) replace hpvcut = 21006 if hrnumhou == 2 & prtage < 65 & numch == 0 replace hpvcut = 21621 if hrnumhou == 2 & prtage < 65 & numch == 1 replace hpvcut = 18961 if hrnumhou == 2 & prtage >= 65 & numch == 0 replace hpvcut = 21540 if hrnumhou == 2 & prtage >= 65 & numch == 1 * 3-person households replace hpvcut = 24537 if hrnumhou == 3 & numch == 0 replace hpvcut = 25249 if hrnumhou == 3 & numch == 1 replace hpvcut = 25273 if hrnumhou == 3 & numch == 2 * 4-person households replace hpvcut = 32355 if hrnumhou == 4 & numch == 0 replace hpvcut = 32884 if hrnumhou == 4 & numch == 1 replace hpvcut = 31812 if hrnumhou == 4 & numch == 2 /* <-- Infographic reference */ replace hpvcut = 31922 if hrnumhou == 4 & numch == 3 * 5-person households replace hpvcut = 39019 if hrnumhou == 5 & numch == 0 replace hpvcut = 39586 if hrnumhou == 5 & numch == 1 replace hpvcut = 38374 if hrnumhou == 5 & numch == 2 replace hpvcut = 37436 if hrnumhou == 5 & numch == 3 replace hpvcut = 36863 if hrnumhou == 5 & numch == 4 * 6-person households replace hpvcut = 44879 if hrnumhou == 6 & numch == 0 replace hpvcut = 45057 if hrnumhou == 6 & numch == 1 replace hpvcut = 44128 if hrnumhou == 6 & numch == 2 replace hpvcut = 43238 if hrnumhou == 6 & numch == 3 replace hpvcut = 41915 if hrnumhou == 6 & numch == 4 replace hpvcut = 41131 if hrnumhou == 6 & numch == 5 * 7-person households replace hpvcut = 51638 if hrnumhou == 7 & numch == 0 replace hpvcut = 51961 if hrnumhou == 7 & numch == 1 replace hpvcut = 50849 if hrnumhou == 7 & numch == 2 replace hpvcut = 50075 if hrnumhou == 7 & numch == 3 replace hpvcut = 48631 if hrnumhou == 7 & numch == 4 replace hpvcut = 46948 if hrnumhou == 7 & numch == 5 replace hpvcut = 45100 if hrnumhou == 7 & numch == 6 * 8-person households replace hpvcut = 57753 if hrnumhou == 8 & numch == 0 replace hpvcut = 58263 if hrnumhou == 8 & numch == 1 replace hpvcut = 57215 if hrnumhou == 8 & numch == 2 replace hpvcut = 56296 if hrnumhou == 8 & numch == 3 replace hpvcut = 54992 if hrnumhou == 8 & numch == 4 replace hpvcut = 53337 if hrnumhou == 8 & numch == 5 replace hpvcut = 51614 if hrnumhou == 8 & numch == 6 replace hpvcut = 51177 if hrnumhou == 8 & numch == 7 * 9+ person households replace hpvcut = 69473 if hrnumhou > 8 & hrnumhou <= . & numch == 0 replace hpvcut = 69810 if hrnumhou > 8 & hrnumhou <= . & numch == 1 replace hpvcut = 68882 if hrnumhou > 8 & hrnumhou <= . & numch == 2 replace hpvcut = 68102 if hrnumhou > 8 & hrnumhou <= . & numch == 3 replace hpvcut = 66822 if hrnumhou > 8 & hrnumhou <= . & numch == 4 replace hpvcut = 65062 if hrnumhou > 8 & hrnumhou <= . & numch == 5 replace hpvcut = 63469 if hrnumhou > 8 & hrnumhou <= . & numch == 6 replace hpvcut = 63075 if hrnumhou > 8 & hrnumhou <= . & numch == 7 replace hpvcut = 60645 if hrnumhou > 8 & hrnumhou <= . & numch > 7 & numch <= . label var hpvcut "Poverty threshold (2024)" ******************************************************************************** * SECTION 7: CONSTRUCT HOUSEHOLD INCOME AND INCOME-TO-POVERTY RATIO * * Household income is derived from the CPS income variable (hefaminc), which * is reported in categories. We use category midpoints for continuous income. * * Households with allocated (imputed) income are set to missing, as indicated * by hxfaminc > 0. This follows standard practice in food security research * to use only reported income values. ******************************************************************************** * Set allocated (imputed) income values to missing * hxfaminc > 0 indicates the income value was allocated by Census replace hefaminc = . if hxfaminc > 0 * Recode income from categories to continuous (midpoints) * hefaminc is the household income category variable gen hhincome = . replace hhincome = 5000 / 2 if hefaminc == 1 /* Less than $5,000 */ replace hhincome = (5000 + 7500) / 2 if hefaminc == 2 /* $5,000 to $7,499 */ replace hhincome = (7500 + 10000) / 2 if hefaminc == 3 /* $7,500 to $9,999 */ replace hhincome = (10000 + 12500) / 2 if hefaminc == 4 /* $10,000 to $12,499 */ replace hhincome = (12500 + 15000) / 2 if hefaminc == 5 /* $12,500 to $14,999 */ replace hhincome = (15000 + 20000) / 2 if hefaminc == 6 /* $15,000 to $19,999 */ replace hhincome = (20000 + 25000) / 2 if hefaminc == 7 /* $20,000 to $24,999 */ replace hhincome = (25000 + 30000) / 2 if hefaminc == 8 /* $25,000 to $29,999 */ replace hhincome = (30000 + 35000) / 2 if hefaminc == 9 /* $30,000 to $34,999 */ replace hhincome = (35000 + 40000) / 2 if hefaminc == 10 /* $35,000 to $39,999 */ replace hhincome = (40000 + 50000) / 2 if hefaminc == 11 /* $40,000 to $49,999 */ replace hhincome = (50000 + 60000) / 2 if hefaminc == 12 /* $50,000 to $59,999 */ replace hhincome = (60000 + 75000) / 2 if hefaminc == 13 /* $60,000 to $74,999 */ replace hhincome = (75000 + 100000) / 2 if hefaminc == 14 /* $75,000 to $99,999 */ replace hhincome = (100000 + 150000) / 2 if hefaminc == 15 /* $100,000 to $149,999 */ replace hhincome = 160000 if hefaminc == 16 /* $150,000 and over */ label var hhincome "Household income (midpoint)" * Calculate income-to-poverty ratio gen hhincpv = hhincome / hpvcut label var hhincpv "Income-to-poverty ratio" * Flag for missing income gen inc_unknown = missing(hhincpv) label var inc_unknown "Income not reported (1 = yes)" ******************************************************************************** * SECTION 8: CONSTRUCT INCOME-TO-POVERTY CATEGORIES * * We create categories that align with federal program eligibility thresholds: * - Below poverty (< 100% FPL) * - 100-129% FPL (SNAP gross income limit) * - 130-184% FPL (SNAP net income limit; WIC limit) * - 185-299% FPL (above most program eligibility) * - 300-399% FPL * - >= 400% FPL ******************************************************************************** gen inc_pov = . replace inc_pov = 1 if hhincpv < 1.00 replace inc_pov = 2 if hhincpv >= 1.00 & hhincpv < 1.30 replace inc_pov = 3 if hhincpv >= 1.30 & hhincpv < 1.85 replace inc_pov = 4 if hhincpv >= 1.85 & hhincpv < 3.00 replace inc_pov = 5 if hhincpv >= 3.00 & hhincpv < 4.00 replace inc_pov = 6 if hhincpv >= 4.00 & !missing(hhincpv) label define inc_pov_lbl /// 1 "Below poverty" /// 2 "100-129% FPL" /// 3 "130-184% FPL" /// 4 "185-299% FPL" /// 5 "300-399% FPL" /// 6 ">= 400% FPL" label values inc_pov inc_pov_lbl label variable inc_pov "Income-to-poverty category" * Higher income indicator (>= 185% FPL) gen higher_income = (hhincpv >= 1.85) if !missing(hhincpv) label var higher_income "Above 185% FPL (1 = yes)" ******************************************************************************** * SECTION 9: CONSTRUCT FOOD SECURITY STATUS * * The CPS includes pre-calculated food security status variables: * hrfs12md = 12-month detailed food security status (4 categories) * 1 = High food security * 2 = Marginal food security * 3 = Low food security * 4 = Very low food security * * Food insecurity = low or very low food security (categories 3 or 4) ******************************************************************************** * Detailed 4-category food security status gen fs12dcat = hrfs12md if hrfs12md > 0 label define fs12dcat_lbl 1 "High" 2 "Marginal" 3 "Low" 4 "Very low" label values fs12dcat fs12dcat_lbl label var fs12dcat "12-month food security status (detailed)" * Binary food insecurity indicator gen fi = (inlist(fs12dcat, 3, 4)) if !missing(fs12dcat) label var fi "Food insecure (1 = yes)" ******************************************************************************** * SECTION 10: CONSTRUCT FOOD SECURITY ITEM RESPONSES * * The infographic shows endorsement rates for specific food security items * among higher-income food-insecure households. Items are derived from the * raw CPS variables using standard scoring procedures. * * Items use a preliminary screen (hrpoor or affirmative responses to hes9 * or hess1) to skip households with no indication of food hardship. ******************************************************************************** * Preliminary screen: households at risk of food insecurity gen scrn1 = (hrpoor == 1) | inlist(hes9,1,-2) | inlist(hess1,2,3,4,-2) replace scrn1 = 2 if scrn1 == 0 & hes9 < 0 & hess1 < 0 * ---------------------------------------------------------------------------- * Adult/Household Items (Block 1) * ---------------------------------------------------------------------------- * Item 1: Worried food would run out before we got money to buy more * Survey: "In the last 12 months, were you ever worried whether your food * would run out before you got money to buy more?" * Affirmative: Often true (1) or Sometimes true (2) gen fs12ditem1 = hess2 == 1 | hess2 == 2 if hess2 > -2 & inlist(scrn1,0,1) label var fs12ditem1 "Worried food would run out" * Item 2: Food bought didn't last and didn't have money to get more * Survey: "In the last 12 months, did you ever find that the food you bought * just didn't last, and you didn't have money to get more?" gen fs12ditem2 = hess3 == 1 | hess3 == 2 if hess3 > -2 & inlist(scrn1,0,1) label var fs12ditem2 "Food bought didn't last" * Item 3: Couldn't afford to eat balanced meals * Survey: "In the last 12 months, were you able to afford to eat balanced meals?" * (Reverse coded: affirmative = Often true or Sometimes true that could NOT) gen fs12ditem3 = hess4 == 1 | hess4 == 2 if hess4 > -2 & inlist(scrn1,0,1) label var fs12ditem3 "Couldn't afford balanced meals" * ---------------------------------------------------------------------------- * First internal screen for Block 2 * ---------------------------------------------------------------------------- gen qv12_1 = (hess2 > -2 & inlist(scrn1,0,1)) gen qv12_2 = (hess3 > -2 & inlist(scrn1,0,1)) gen qv12_3 = (hess4 > -2 & inlist(scrn1,0,1)) egen nqvadb1 = rowtotal(qv12_1-qv12_3), missing egen nqyadb1 = rowtotal(fs12ditem1-fs12ditem3) if nqvadb1 > 0, missing gen scrn2ad = inlist(hess1,3,4) | nqyadb1 > 0 replace scrn2ad = . if nqvadb1 == 0 & !inlist(hess1,3,4) * ---------------------------------------------------------------------------- * Adult/Household Items (Block 2) * ---------------------------------------------------------------------------- * Item 4: Cut size of or skipped meals because not enough money for food * Survey: "In the last 12 months, did you or other adults in your household * ever cut the size of your meals or skip meals because there wasn't * enough money for food?" gen fs12ditem4 = hesh2 == 1 if hesh2 > -2 & inlist(scrn2ad,0,1) label var fs12ditem4 "Cut size of or skipped meals" * Item 5: Ate less than felt should because not enough money for food * Survey: "In the last 12 months, did you ever eat less than you felt you * should because there wasn't enough money for food?" gen fs12ditem5 = hesh3 == 1 if hesh3 > -2 & inlist(scrn2ad,0,1) label var fs12ditem5 "Ate less than felt should" * Item 6: Frequency of cutting/skipping meals (3+ months) gen fs12ditem6 = heshf2 == 1 | heshf2 == 2 if hesh2 > -2 & heshf2 > -2 & inlist(scrn2ad,0,1) * Item 7: Hungry but didn't eat because couldn't afford enough food * Survey: "In the last 12 months, were you ever hungry but didn't eat because * there wasn't enough money for food?" gen fs12ditem7 = hesh4 == 1 if hesh4 > -2 & inlist(scrn2ad,0,1) label var fs12ditem7 "Hungry but didn't eat" * Item 8: Lost weight because not enough money for food gen fs12ditem8 = hesh5 == 1 if hesh5 > -2 & inlist(scrn2ad,0,1) * ---------------------------------------------------------------------------- * Second internal screen for Block 3 * ---------------------------------------------------------------------------- gen qv12_4 = (hesh2 > -2 & inlist(scrn2ad,0,1)) gen qv12_5 = (hesh2 > -2 & heshf2 > -2 & inlist(scrn2ad,0,1)) gen qv12_6 = (hesh3 > -2 & inlist(scrn2ad,0,1)) gen qv12_7 = (hesh4 > -2 & inlist(scrn2ad,0,1)) gen qv12_8 = (hesh5 > -2 & inlist(scrn2ad,0,1)) egen nqvadb2 = rowtotal(qv12_4-qv12_8), missing egen nqyadb2 = rowtotal(fs12ditem4-fs12ditem8) if nqvadb2 > 0, missing gen scrn3 = nqyadb2 > 0 & !missing(nqyadb2) replace scrn3 = . if nqvadb1 == 0 & nqvadb2 == 0 * ---------------------------------------------------------------------------- * Adult/Household Items (Block 3) * ---------------------------------------------------------------------------- * Item 9: Did not eat for a whole day because not enough money for food * Survey: "In the last 12 months, did you or other adults in your household * ever not eat for a whole day because there wasn't enough money for food?" gen fs12ditem9 = hessh1 == 1 if hessh1 > -2 & inlist(scrn3,0,1) label var fs12ditem9 "Did not eat for a whole day" * Item 10: Frequency of not eating for whole day (3+ months) gen fs12ditem10 = hesshf1 == 1 | hesshf1 == 2 if hessh1 > -2 & hesshf1 > -2 & inlist(scrn3,0,1) ******************************************************************************** * SECTION 11: DEFINE SURVEY DESIGN ******************************************************************************** svyset [pw=hhsupwgt] ******************************************************************************** * SECTION 12: HEADLINE STATISTICS (Infographic Subtitle) * * The infographic subtitle states: * "In 2024, 6.2 million households (7.9%) above 185% of the federal poverty * line — $58,852 for a family of four with two children — were food * insecure." ******************************************************************************** di _n "============================================================" di "SECTION 12: HEADLINE STATISTICS" di "============================================================" _n * Drop households with invalid weights or missing food security status preserve drop if hhsupwtk <= 0 | missing(hhsupwtk) drop if missing(fi) * ---------------------------------------------------------------------------- * Number of food-insecure households above 185% FPL * ---------------------------------------------------------------------------- quietly sum hhsupwtk if higher_income == 1 & fi == 1 local hi_fi_thousands = r(sum) local hi_fi_millions = `hi_fi_thousands' / 1000 di "Food-insecure households above 185% FPL:" di " Weighted count (thousands): " %12.1f `hi_fi_thousands' di " Weighted count (millions): " %12.2f `hi_fi_millions' di " INFOGRAPHIC VALUE: 6.2 million" _n * ---------------------------------------------------------------------------- * Food insecurity rate among households above 185% FPL * ---------------------------------------------------------------------------- di "Food insecurity rate among households above 185% FPL:" svy, subpop(higher_income): proportion fi matrix b = e(b) local hi_fi_rate = b[1,2] * 100 di _n " Point estimate: " %5.1f `hi_fi_rate' "%" di " INFOGRAPHIC VALUE: 7.9%" _n * ---------------------------------------------------------------------------- * Poverty threshold reference values * ---------------------------------------------------------------------------- di "Poverty threshold reference (2024):" di " Family of 4 with 2 children: $31,812" di " 185% of threshold: $" %12.0f (31812 * 1.85) di " INFOGRAPHIC VALUES: $31,812 and $58,852" restore ******************************************************************************** * SECTION 13: THE GRADIENT (Food Insecurity by Income-to-Poverty Ratio) * * The infographic shows food insecurity rates at each income tier. ******************************************************************************** di _n "============================================================" di "SECTION 13: THE GRADIENT" di "Food Insecurity Rate by Income-to-Poverty Ratio" di "============================================================" _n * ---------------------------------------------------------------------------- * Overall food insecurity rate (all households, including income unknown) * ---------------------------------------------------------------------------- preserve drop if missing(fi) drop if hhsupwtk <= 0 | missing(hhsupwtk) di "Overall food insecurity rate (all households):" svy: proportion fi matrix b = e(b) di _n " Point estimate: " %5.1f (b[1,2]*100) "%" di " INFOGRAPHIC VALUE: 13.7%" _n restore * ---------------------------------------------------------------------------- * Food insecurity rate by income-to-poverty category * ---------------------------------------------------------------------------- preserve drop if missing(fi) drop if missing(hhincpv) drop if hhsupwtk <= 0 | missing(hhsupwtk) di "Food insecurity rate by income-to-poverty category:" _n svy, subpop(if inc_pov == 1): proportion fi matrix b = e(b) di " Below poverty: " %5.1f (b[1,2]*100) "% (INFOGRAPHIC: 39.4%)" svy, subpop(if inc_pov == 2): proportion fi matrix b = e(b) di " 100-129% FPL: " %5.1f (b[1,2]*100) "% (INFOGRAPHIC: 34.6%)" svy, subpop(if inc_pov == 3): proportion fi matrix b = e(b) di " 130-184% FPL: " %5.1f (b[1,2]*100) "% (INFOGRAPHIC: 25.6%)" svy, subpop(if inc_pov == 4): proportion fi matrix b = e(b) di " 185-299% FPL: " %5.1f (b[1,2]*100) "% (INFOGRAPHIC: 17.3%)" svy, subpop(if inc_pov == 5): proportion fi matrix b = e(b) di " 300-399% FPL: " %5.1f (b[1,2]*100) "% (INFOGRAPHIC: 8.9%)" svy, subpop(if inc_pov == 6): proportion fi matrix b = e(b) di " >= 400% FPL: " %5.1f (b[1,2]*100) "% (INFOGRAPHIC: 3.6%)" restore * ---------------------------------------------------------------------------- * Food insecurity rate among households with unknown income * ---------------------------------------------------------------------------- preserve drop if missing(fi) drop if hhsupwtk <= 0 | missing(hhsupwtk) di _n "Food insecurity rate among income-unknown households:" svy, subpop(inc_unknown): proportion fi matrix b = e(b) di _n " Point estimate: " %5.1f (b[1,2]*100) "%" di " INFOGRAPHIC VALUE: 10.5%" restore ******************************************************************************** * SECTION 14: ITEM ENDORSEMENT RATES (What They Report) * * The infographic shows the share of food-insecure households above 185% FPL * who affirmed each food security survey item. ******************************************************************************** di _n "============================================================" di "SECTION 14: ITEM ENDORSEMENT RATES" di "Among Food-Insecure Households Above 185% FPL" di "============================================================" _n preserve drop if missing(fi) drop if missing(hhincpv) drop if hhsupwtk <= 0 | missing(hhsupwtk) keep if higher_income == 1 & fi == 1 di "Sample: " _N " food-insecure households above 185% FPL" _n di "Share affirming each food security item:" _n svy: proportion fs12ditem1 if fs12ditem1 >= 0 matrix b = e(b) di " Worried food would run out: " %5.1f (b[1,2]*100) "% (INFOGRAPHIC: 90.6%)" svy: proportion fs12ditem3 if fs12ditem3 >= 0 matrix b = e(b) di " Couldn't afford balanced meals: " %5.1f (b[1,2]*100) "% (INFOGRAPHIC: 84.8%)" svy: proportion fs12ditem2 if fs12ditem2 >= 0 matrix b = e(b) di " Food bought didn't last: " %5.1f (b[1,2]*100) "% (INFOGRAPHIC: 83.6%)" svy: proportion fs12ditem4 if fs12ditem4 >= 0 matrix b = e(b) di " Cut size of or skipped meals: " %5.1f (b[1,2]*100) "% (INFOGRAPHIC: 63.0%)" svy: proportion fs12ditem5 if fs12ditem5 >= 0 matrix b = e(b) di " Ate less than felt should: " %5.1f (b[1,2]*100) "% (INFOGRAPHIC: 62.3%)" svy: proportion fs12ditem7 if fs12ditem7 >= 0 matrix b = e(b) di " Hungry but didn't eat: " %5.1f (b[1,2]*100) "% (INFOGRAPHIC: 34.7%)" svy: proportion fs12ditem9 if fs12ditem9 >= 0 matrix b = e(b) di " Did not eat for a whole day: " %5.1f (b[1,2]*100) "% (INFOGRAPHIC: 11.1%)" restore ******************************************************************************** * SECTION 15: INCOME NON-RESPONSE RATE (Footer Note) * * The infographic footer notes that "analyses exclude households for which * income was not reported (about 21 percent of households)." ******************************************************************************** di _n "============================================================" di "SECTION 15: INCOME NON-RESPONSE RATE" di "============================================================" _n preserve drop if missing(fi) drop if hhsupwtk <= 0 | missing(hhsupwtk) quietly sum hhsupwtk if inc_unknown == 1 local unk_wt = r(sum) quietly sum hhsupwtk local tot_wt = r(sum) local unk_pct = `unk_wt' / `tot_wt' * 100 di "Households with income not reported:" di " Weighted count (thousands): " %12.1f `unk_wt' di " Total households (thousands): " %12.1f `tot_wt' di " Non-response rate: " %5.1f `unk_pct' "%" di " INFOGRAPHIC FOOTER VALUE: about 21%" restore ******************************************************************************** * SUMMARY ******************************************************************************** di _n "============================================================" di "VERIFICATION COMPLETE" di "============================================================" _n di "This program reproduced all statistics shown in the" di "#FoodSecurityFridays Week 3 infographic." _n di "Infographic files:" di " HTML: higher_income_fi_linkedin.html" di " PNG: foodsecurityfridays_week3.png" _n di "Data source:" di " U.S. Census Bureau, Current Population Survey" di " Food Security Supplement, December 2024" di " https://www.census.gov/data/datasets/time-series/demo/cps/" di " cps-supp_cps-repwgt/cps-food-security.html" _n di "For questions about the methodology or data, contact:" di " Matthew P. Rabbitt, PhD" di " matthew.p.rabbitt@gmail.com" log close ******************************************************************************** * END OF PROGRAM ********************************************************************************