Methods
Based on Table 1 of https://www.fns.usda.gov/sites/default/files/ops/SNAPFoodsTypicallyPurchased-Summary.pdf
Methods
Based on Table 1 of https://www.fns.usda.gov/sites/default/files/ops/SNAPFoodsTypicallyPurchased-Summary.pdf
| library(dplyr) | |
| # load data | |
| dat <- read.csv('snap_report_summary.csv', stringsAsFactors=FALSE) | |
| # annotate SNAP status | |
| snap_cols <- 2:4 | |
| non_snap_cols <- 5:7 | |
| dat_non_snap <- dat %>% select(1, non_snap_cols) | |
| dat_snap <- dat %>% select(1, snap_cols) | |
| dat_non_snap$household <- "non-SNAP" | |
| dat_snap$household <- "SNAP" | |
| # combine data | |
| names(dat_non_snap)[snap_cols] <- names(dat_snap)[snap_cols] | |
| dat_combined <- rbind(dat_snap, dat_non_snap) | |
| # convert to $ | |
| dat_combined$expenditures <- 1e6 * as.numeric(gsub('(\\$|,)', '', as.character(dat_combined$raw))) | |
| dat_combined$percent <- as.numeric(gsub('(\\%)', '', as.character(dat_combined$percent))) | |
| d <- dat_combined # for bevity | |
| # look SNAP vs non-SNAP expenditures | |
| library(tidyr) | |
| d_summary <- select(d, commodity, household, percent) %>% | |
| group_by(household) %>% | |
| mutate(id = row_number()) %>% | |
| spread(household, percent) | |
| d_summary <- d_summary[order(d_summary$SNAP - d_summary$`non-SNAP`, decreasing=TRUE), ] | |
| d_summary$`Broad Category` <- factor(d_summary$commodity, levels=d_summary$commodity) | |
| # does the distribution among categories differ between SNAP and non-SNAP | |
| # households? | |
| # the broad categories used in the summary do not differ | |
| d_chisq <- with(d_summary, chisq.test(`non-SNAP`, SNAP)) # dists are same | |
| library(ggplot2) | |
| png('absolute_differences.png') | |
| ggplot(d_summary) + | |
| geom_hline(aes(yintercept=0)) + | |
| geom_bar(aes(x=`Broad Category`, y=SNAP - `non-SNAP`), stat='identity') + | |
| ylab("difference in % expenses (SNAP - non-SNAP)") + | |
| labs( | |
| title='How food budgets really differ between SNAP and non-SNAP households*', | |
| caption=paste0("*They don't (p=", round(d_chisq$p.value, 2), " in Chi Sq test).\nBased on Table 1 of\nhttps://www.fns.usda.gov/sites/default/files/ops/SNAPFoodsTypicallyPurchased-Summary.pdf\nSee https://gist.github.com/ashander/6f55b569df0eb933ec1c5d976ff7a849") | |
| ) + | |
| theme(axis.text.x = element_text(angle=90, vjust=0.5)) | |
| dev.off() | |
| png('proportional_differences.png') | |
| ggplot(d_summary) + | |
| geom_hline(aes(yintercept=1)) + | |
| geom_bar(aes(x=`Broad Category`, y=SNAP / `non-SNAP`), stat='identity') + | |
| ylab("proportional % expenses (SNAP / non-SNAP)") + | |
| labs( | |
| title='How food budgets really differ between SNAP and non-SNAP households*', | |
| caption=paste0("*They don't (p=", round(d_chisq$p.value, 2), " in Chi Sq test) but that Baby Food.\nBased on Table 1 of\nhttps://www.fns.usda.gov/sites/default/files/ops/SNAPFoodsTypicallyPurchased-Summary.pdf\nSee https://gist.github.com/ashander/6f55b569df0eb933ec1c5d976ff7a849") | |
| ) + | |
| theme(axis.text.x = element_text(angle=90, vjust=0.5)) | |
| dev.off() |
| dat <- read.csv('tabula-SNAPFoodsTypicallyPurchased-Summary.csv') | |
| names(dat) <- c("commodity", "rank", "raw", "percent", "rank", "raw", "percent") | |
| write.csv(dat, 'snap_report_summary.csv', row.names=FALSE) |
| commodity | rank | raw | percent | rank | raw | percent | |
|---|---|---|---|---|---|---|---|
| Meat, Poultry and Seafood | 1 | $1,262.90 | 19.2% | 1 | $5,016.30 | 15.9% | |
| Sweetened Beverages | 2 | $608.70 | 9.3% | 5 | $2,238.80 | 7.1% | |
| Vegetables | 3 | $473.40 | 7.2% | 2 | $2,873.90 | 9.1% | |
| Frozen Prepared Foods | 4 | $455.20 | 6.9% | 8 | $1,592.30 | 5.1% | |
| Prepared Desserts | 5 | $453.80 | 6.9% | 6 | $2,021.20 | 6.4% | |
| High Fat Dairy/Cheese | 6 | $427.80 | 6.5% | 3 | $2,483.20 | 7.9% | |
| Bread and Crackers | 7 | $354.90 | 5.4% | 7 | $1,978.20 | 6.3% | |
| Fruits | 8 | $308.20 | 4.7% | 4 | $2,271.20 | 7.2% | |
| Milk | 9 | $232.70 | 3.5% | 9 | $1,211.00 | 3.8% | |
| Salty Snacks | 10 | $225.60 | 3.4% | 10 | $969.70 | 3.1% | |
| Prepared Foods | 11 | $202.20 | 3.1% | 14 | $707.00 | 2.2% | |
| Cereal | 12 | $186.90 | 2.8% | 11 | $933.90 | 3.0% | |
| Condiments and Seasoning | 13 | $174.60 | 2.7% | 12 | $878.90 | 2.8% | |
| Fats and Oils | 14 | $155.10 | 2.4% | 13 | $766.90 | 2.4% | |
| Candy | 15 | $138.20 | 2.1% | 15 | $701.40 | 2.2% | |
| Baby Food | 16 | $126.80 | 1.9% | 27 | $198.20 | 0.6% | |
| Juices | 17 | $110.40 | 1.7% | 16 | $605.40 | 1.9% | |
| Coffee and Tea | 18 | $83.40 | 1.3% | 17 | $568.80 | 1.8% | |
| Bottled Water | 19 | $78.10 | 1.2% | 22 | $377.40 | 1.2% | |
| Eggs | 20 | $73.80 | 1.1% | 21 | $388.20 | 1.2% | |
| Other Dairy Products | 21 | $69.80 | 1.1% | 18 | $549.50 | 1.7% | |
| Pasta, Cornmeal, Other Cereal Products | 22 | $66.40 | 1.0% | 23 | $281.50 | 0.9% | |
| Soups | 23 | $62.70 | 1.0% | 20 | $414.10 | 1.3% | |
| Sugars | 24 | $60.90 | 0.9% | 24 | $260.30 | 0.8% | |
| Nuts and Seeds | 25 | $53.20 | 0.8% | 19 | $445.90 | 1.4% | |
| Beans | 26 | $38.30 | 0.6% | 25 | $234.50 | 0.7% | |
| Rice | 27 | $30.10 | 0.5% | 28 | $131.00 | 0.4% | |
| Jams, Jellies, Preserves and Other Sweets | 28 | $29.10 | 0.4% | 29 | $117.50 | 0.4% | |
| Flour and Prepared Flour Mixes | 29 | $18.70 | 0.3% | 30 | $94.90 | 0.3% | |
| Miscellaneous | 30 | $18.60 | 0.3% | 26 | $202.60 | 0.6% |
| com | Rank | $ (millions) | % of total | Rank | $ (millions) | % of total | |
|---|---|---|---|---|---|---|---|
| Meat, Poultry and Seafood | 1 | $1,262.90 | 19.2% | 1 | $5,016.30 | 15.9% | |
| Sweetened Beverages | 2 | $608.70 | 9.3% | 5 | $2,238.80 | 7.1% | |
| Vegetables | 3 | $473.40 | 7.2% | 2 | $2,873.90 | 9.1% | |
| Frozen Prepared Foods | 4 | $455.20 | 6.9% | 8 | $1,592.30 | 5.1% | |
| Prepared Desserts | 5 | $453.80 | 6.9% | 6 | $2,021.20 | 6.4% | |
| High Fat Dairy/Cheese | 6 | $427.80 | 6.5% | 3 | $2,483.20 | 7.9% | |
| Bread and Crackers | 7 | $354.90 | 5.4% | 7 | $1,978.20 | 6.3% | |
| Fruits | 8 | $308.20 | 4.7% | 4 | $2,271.20 | 7.2% | |
| Milk | 9 | $232.70 | 3.5% | 9 | $1,211.00 | 3.8% | |
| Salty Snacks | 10 | $225.60 | 3.4% | 10 | $969.70 | 3.1% | |
| Prepared Foods | 11 | $202.20 | 3.1% | 14 | $707.00 | 2.2% | |
| Cereal | 12 | $186.90 | 2.8% | 11 | $933.90 | 3.0% | |
| Condiments and Seasoning | 13 | $174.60 | 2.7% | 12 | $878.90 | 2.8% | |
| Fats and Oils | 14 | $155.10 | 2.4% | 13 | $766.90 | 2.4% | |
| Candy | 15 | $138.20 | 2.1% | 15 | $701.40 | 2.2% | |
| Baby Food | 16 | $126.80 | 1.9% | 27 | $198.20 | 0.6% | |
| Juices | 17 | $110.40 | 1.7% | 16 | $605.40 | 1.9% | |
| Coffee and Tea | 18 | $83.40 | 1.3% | 17 | $568.80 | 1.8% | |
| Bottled Water | 19 | $78.10 | 1.2% | 22 | $377.40 | 1.2% | |
| Eggs | 20 | $73.80 | 1.1% | 21 | $388.20 | 1.2% | |
| Other Dairy Products | 21 | $69.80 | 1.1% | 18 | $549.50 | 1.7% | |
| Pasta, Cornmeal, Other Cereal Products | 22 | $66.40 | 1.0% | 23 | $281.50 | 0.9% | |
| Soups | 23 | $62.70 | 1.0% | 20 | $414.10 | 1.3% | |
| Sugars | 24 | $60.90 | 0.9% | 24 | $260.30 | 0.8% | |
| Nuts and Seeds | 25 | $53.20 | 0.8% | 19 | $445.90 | 1.4% | |
| Beans | 26 | $38.30 | 0.6% | 25 | $234.50 | 0.7% | |
| Rice | 27 | $30.10 | 0.5% | 28 | $131.00 | 0.4% | |
| Jams, Jellies, Preserves and Other Sweets | 28 | $29.10 | 0.4% | 29 | $117.50 | 0.4% | |
| Flour and Prepared Flour Mixes | 29 | $18.70 | 0.3% | 30 | $94.90 | 0.3% | |
| Miscellaneous | 30 | $18.60 | 0.3% | 26 | $202.60 | 0.6% |