The United States Defence Department’s 1033 program began in 1997, it allows for the transfer of excess military equipment to civilian law enforcement agencies. Most of the equipment obtained is standard, things such as cold weather clothing, diesel generators and flashlights. However, a significant portion of it is explicitly combat-oriented in nature, equipment such as M-16 rifles, tanks, and mine-resistant vehicles.
This is an analysis that explores U.S. civilian law enforcement spending on the acquisition of military equipment that is explicitly combat-oriented. Spending is examined at a state and county level, other county-level data such as crime and poverty rates are incorporated and their relationship to spending is also investigated.
Please e-mail comments and suggestions to vcolano@gmail.com.
In 2014 the New York Times filed a freedom of information act request and received data from the Pentagon on all acquisitions since 2006. The data was made public by the NYT, it can be found here. The NYT wrote a post with an interactive data visualization on the topic: What Military Gear Your Local Police Department Bought.
Load libraries and import the police acquisitions data set.
library(data.table)
library(ggplot2)
library(scales)
library(ggmap)
library(statebins)
library(plyr)
library(readxl)
library(stringr)
library(stringi)
library(extrafont)
## Registering fonts with R
library(USA.county.data)
library(lattice)
#library(devtools)
#devtools::install_github("deleetdk/USA.county.data") # only need to load this once
data = fread("~/projects/policeMilitarySurplus/data/policeAcquisitionOfMilitarySurplus2014.csv")
colnames(data) = make.names(names(data)) # make column names R-friendly (remove spaces)
data$Item.Name = sapply(data$Item.Name, trimws) # trim whitespace
data = data[!(data$Item.Name == ""), ] # get rid of empty string value
# make an appropriate theme for our plots later on
military_theme = theme_classic() +
theme(plot.title=element_text(size=20, color="#0D0A0B", vjust=1, hjust=0.5, family="Courier New"),
text=element_text(size=13, hjust=0.5, family="Courier New"), plot.background=element_rect(color="#F3EFF5"))
Dataset format:
head(data, n=1)
## State County NSN Item.Name Quantity UI
## 1: AK ANCHORAGE 1005-00-073-9421 RIFLE,5.56 MILLIMETER 1 Each
## Acquisition.Cost Ship.Date
## 1: 499 2012-08-30
NSN stands for NATO Stock Number, it’s a unique identifier for military supplies across NATO nations
itemFreq = count(data, "Item.Name")
itemFreq = itemFreq[with(itemFreq, order(-freq)), ]
head(itemFreq, n=10)
## Item.Name freq
## 12840 RIFLE,5.56 MILLIMETER 61548
## 12841 RIFLE,7.62 MILLIMETER 17726
## 13951 SIGHT,REFLEX 9494
## 11529 PISTOL,CALIBER .45,AUTOMATIC 8649
## 16300 TRUCK,UTILITY 5002
## 10680 NIGHT VISION GOGGLE 2279
## 8208 ILLUMINATOR,INFRARED 2275
## 13799 SHIRT,COLD WEATHER 2085
## 8217 IMAGE INTENSIFIER,NIGHT VISION 1870
## 13887 SHOTGUN,12 GAGE,RIOT TYPE 1448
costs_df = itemFreq
costs_df$freq = costs_df$freq + (1 - data$Quantity[match(costs_df$Item.Name, data$Item.Name)])
costs_df$Total.Cost = data$Acquisition.Cost[match(costs_df$Item.Name, data$Item.Name)]
costs_df$Total.Cost = costs_df$Total.Cost*costs_df$freq
costs_df$NSN = data$NSN[match(costs_df$Item.Name, data$Item.Name)] # NSN will be useful to us
costs_df = costs_df[c("NSN", "Item.Name", "freq", "Total.Cost")] # reorder for readability
costs_df = costs_df[with(costs_df, order(-Total.Cost)), ]
head(costs_df, n=20)
## NSN
## 16300 2320-01-146-7190
## 10136 2355-01-555-0908
## 7752 1520-00-087-7637
## 7750 1520-01-020-4216
## 16296 2320-01-272-5029
## 16224 2320-01-050-2084
## 10829 2355-DS-COM-BTV2
## 16250 3930-01-054-3833
## 12840 1005-00-073-9421
## 16234 2320-01-047-8756
## 16302 2320-01-205-2682
## 464 1510-01-070-3661
## 8208 5855-01-465-2168
## 15922 2420-01-160-2754
## 2604 2350-01-068-4077
## 16307 2320-01-047-8754
## 10283 1385-01-456-9129
## 7053 6115-00-394-9576
## 16219 2320-01-074-7642
## 6788 5855-01-519-0337
## Item.Name freq
## 16300 TRUCK,UTILITY 5002
## 10136 MINE RESISTANT VEHICLE 341
## 7752 HELICOPTER,UTILITY 109
## 7750 HELICOPTER,OBSERVATION 282
## 16296 TRUCK TRACTOR 547
## 16224 TRUCK,CARGO 718
## 10829 ONLY COMPLETE COMBAT/ASSAULT/TACTICAL WHEELED VEHICLES 98
## 16250 TRUCK,LIFT,FORK 309
## 12840 RIFLE,5.56 MILLIMETER 61548
## 16234 TRUCK,DUMP 355
## 16302 TRUCK,VAN 173
## 464 AIRPLANE,CARGO-TRANSPORT 27
## 8208 ILLUMINATOR,INFRARED 2272
## 15922 TRACTOR,WHEELED,INDUSTRIAL 138
## 2604 CARRIER,PERSONNEL,FULL TRACKED 53
## 16307 TRUCK,WRECKER 103
## 10283 MK3MOD0 66
## 7053 GENERATOR SET,DIESE 582
## 16219 TRUCK,ARMORED 164
## 6788 FORWARD LOOKING INFRARED IMAGING SYSTEM 19
## Total.Cost
## 16300 195868316
## 10136 140492000
## 7752 100574736
## 7750 53810394
## 16296 53661247
## 16224 50700134
## 10829 45080000
## 16250 30903090
## 12840 30712452
## 16234 30016670
## 16302 25206100
## 464 21623355
## 8208 17690496
## 15922 15180000
## 2604 12976732
## 16307 12950808
## 10283 12741828
## 7053 12111420
## 16219 10671480
## 6788 10345166
$195,868,316 spent on Humvee-like trucks, $140,492,000 on mine-resistant trucks and $100,574,736 on helicopters were the three largest expenses.
There is some equipment which is objectively non-militarized, such as the dump trucks, fork lifts and diesel generators. To focus this analysis on the militarization of US police forces we’ll reduce the data to a subset that is explicitly militarized in nature, items which could serve little to no purpose in the policing of civilians. For simplicity, only the first 100 items with the highest total cost were examined manually. Other items containing keywords which indicate that they are militarized are also added.
Disclaimer: There is subjectivity as to what is “militarized” and what is not. While items were researched by looking up their NSN, the author does not have significant knowledge of this domain.
subset = c("TRUCK,UTILITY", "MINE RESISTANT VEHICLE", "ONLY COMPLETE COMBAT/ASSAULT/TACTICAL WHEELED VEHICLES",
"RIFLE,5.56 MILLIMETER", "ILLUMINATOR,INFRARED", "TRUCK,CARGO", "TRUCK,VAN",
"CARRIER,PERSONNEL,FULL TRACKED", "TRUCK,ARMORED", "FORWARD LOOKING INFRARED IMAGING SYSTEM",
"TRUCK,WRECKER", "NIGHT VISION GOGGLE", "VIEWER,NIGHT VISION", "BOAT,BRIDGE ERECTION,INBOARD ENGINE",
"LIGHT ARMORED VEHICLE", "RANGE FINDER,LASER", "SIGHT,REFLEX",
"SHOP EQUIPMENT,AUTOMOTIVE VEHICLE", "TRUCK,STAKE", "RIFLE,7.62 MILLIMETER", "MINE RESISTANT VEHI",
"TRUCK,TANK", "SIGHT,NIGHT VISION SNIPERSCOPE", "SEMITRAILER,TANK")
subset = c(subset, unique(data$Item.Name[with(data, grepl("RIFLE", Item.Name))]))
subset = c(subset, unique(data$Item.Name[with(data, grepl("TANK", Item.Name))]))
subset = c(subset, unique(data$Item.Name[with(data, grepl("GRENADE", Item.Name))]))
subset = c(subset, unique(data$Item.Name[with(data, grepl("BAYONET", Item.Name))]))
subset = unique(subset) # remove duplicates
subset_df = data[data$Item.Name %in% subset]
subset_costs_df = count(subset_df, "Item.Name")
subset_costs_df = subset_costs_df[with(subset_costs_df, order(-freq)), ]
subset_costs_df$freq = subset_costs_df$freq + (subset_df$Quantity[match(subset_costs_df$Item.Name, subset_df$Item.Name)] - 1)
subset_costs_df$Total.Cost = subset_df$Acquisition.Cost[match(subset_costs_df$Item.Name, subset_df$Item.Name)]*subset_costs_df$freq
subset_costs_df = subset_costs_df[with(subset_costs_df, order(-Total.Cost)), ]
length(subset_costs_df$Total.Cost)
## [1] 175
sum(subset_costs_df$Total.Cost)
## [1] 609879850
sum(subset_costs_df$Total.Cost)/sum(costs_df$Total.Cost)
## [1] 0.4818525
All in all, there are 175 unique items in the subset with a total cost of $609,879,850. Out of all spending 48% of it was combat-oriented in nature.
# Reshape data onto a state level
states_df = aggregate(subset_df$Acquisition.Cost, by=list(state=subset_df$State), FUN=sum)
names(states_df)[names(states_df) == 'x'] = 'spending'
states_df$stateAbr = states_df$state
states_df$state = sapply(state.name[match(states_df$state, state.abb)], tolower)
states_df = states_df[complete.cases(states_df),]
# see who spent the most
suppressWarnings(
ggplot(data = head(states_df[order(-states_df$spending), ], n=10), aes(reorder(state, -spending), spending)) +
geom_histogram(stat="identity", fill="#4b5320") + # army green
scale_x_discrete() +
scale_y_continuous(labels = comma, limits = c(0, 50000000), expand=c(0,0)) +
military_theme + theme(axis.text.x = element_text(angle=45, hjust=1)) +
xlab("State") + ylab("Spending in USD") + ggtitle("Top 10 Spenders"))
# Adjust for population
states_pop = fread("~/projects/policeMilitarySurplus/data/statePopulation.csv")
states_df$spendingPerCapita = states_df$spending / states_pop[match(states_df$state, sapply(states_pop$state, tolower))]$pop_est_2014
suppressWarnings(
ggplot(data = head(states_df[order(-states_df$spendingPerCapita), ], n=10), aes(reorder(state, -spendingPerCapita), spendingPerCapita)) +
geom_histogram(stat="identity", fill="#4b5320") +
scale_x_discrete() +
scale_y_continuous(labels = comma, limits = c(0, 10), expand=c(0,0)) +
military_theme +
theme(axis.text.x = element_text(angle=45, hjust=1, size = 12)) +
xlab("State") + ylab("Spending per capita in USD") +
ggtitle("Top 10 Spenders per Capita"))
# let's see this on a map
suppressWarnings(
statebins(states_df, "stateAbr", "spending", legend_position = "right", breaks=5,
labels=c("<$10m","<$20m","<$30m","<$40m","<$50m"), font_size = 5, legend_title="Spending in USD",
brewer_pal = "Greens", text_color = "black",
plot_title = "Total Spending from 2006-2014",
title_position = "top"))
suppressWarnings(
statebins(states_df, "stateAbr", "spendingPerCapita", legend_position = "right",
legend_title="Spending per capita in USD", font_size = 5,
breaks = 5, labels=c("<$2","<$4","<$6","<$8","<$10"),
brewer_pal = "Greens", text_color = "black",
plot_title = "Spending per Capita from 2006-2014",
title_position = "top"))
## county state spending
## 35 jefferson alabama 8112570
## 74 maricopa arizona 6363911
## 1405 monmouth new jersey 5340412
## 542 lake illinois 4800179
## 516 cook illinois 4656017
## 161 los angeles california 4575273
## 27 etowah alabama 4173705
## 78 pinal arizona 3939089
## 8 calhoun alabama 3825812
## 2073 harris texas 3781767
## DEFINEDNAME: 00 00 00 11 0b 00 00 00 00 00 00 00 00 00 00 45 58 43 45 4c 5f 50 4f 50 30 31 41 5f 31 30 50 4b 3b 00 00 00 00 7e 0c 00 00 29 00
## DEFINEDNAME: 00 00 00 11 0b 00 00 00 00 00 00 00 00 00 00 45 58 43 45 4c 5f 50 4f 50 30 31 41 5f 31 30 50 4b 3b 00 00 00 00 7e 0c 00 00 29 00
## DEFINEDNAME: 00 00 00 11 0b 00 00 00 00 00 00 00 00 00 00 45 58 43 45 4c 5f 50 4f 50 30 31 41 5f 31 30 50 4b 3b 00 00 00 00 7e 0c 00 00 29 00
## DEFINEDNAME: 00 00 00 11 0b 00 00 00 00 00 00 00 00 00 00 45 58 43 45 4c 5f 50 4f 50 30 31 41 5f 31 30 50 4b 3b 00 00 00 00 7e 0c 00 00 29 00
# There are 3144 counties in the US (https://en.wikipedia.org/wiki/List_of_counties_by_U.S._state)
print(length(counties_df$county)) # Counties with spending > 0
## [1] 2378
print(length(counties_df$county)/3144)
## [1] 0.7563613
Out of the 3144 counties in the US, 2378, or 75%, had some spending on militarized equipment. Counties which have spent nothing on militarized equipment are not taken into account in the following analyses.
# Is population correlated with spending?
spendPopCor = format(cor(counties_df$population, counties_df$spending, use = "complete"), digits = 4)
suppressWarnings(
ggplot(data = counties_df, aes(x = log(counties_df$population), y = log(counties_df$spending))) +
military_theme + xlab("Population (log smoothed)") +
ylab("Spending (log smoothed)") +
geom_point(colour="#4b5320") + geom_smooth(method='lm', formula=y~x, colour="#454955") +
ggtitle(paste("Correlation between spending and population = ", spendPopCor)))
The correlation coefficient of 0.47 implies that there is a positive relationship between a county’s police departments’ spending on militarized equipment and the county’s population. In simpler terms, counties with more people tend to have more militarized equipment.
# plot distribution of spending
suppressWarnings(
ggplot(data = counties_df, aes(x=counties_df$spending)) +
stat_density(aes(y=..count..), color="#454955", fill="dark green", alpha=0.3) +
stat_density(aes(y=..count..), color="#454955", fill="dark green", alpha=0.3) +
scale_x_continuous(breaks=c(0, 100, 1000, 5000, 25000, 100000, 500000, 1000000, 3000000, 10000000),
labels=c("$0","$100","$1k","$5k","$25k","$100k","$500k","$1mil","$3mil","$10mil"),
trans="log1p", expand=c(0,0), limits=c(0,100000000)) +
scale_y_continuous(breaks=c(0, 50, 100, 150, 200, 250, 300, 350, 400), expand=c(0,0), limits=c(0,400)) +
military_theme + xlab("Spending Per Capita in USD") + ylab("Count") +
theme(axis.text.x = element_text(angle=45, hjust=1)) +
ggtitle("Total Spending Density on a County Level"))
# plot distribution of spending per capita
suppressWarnings(
ggplot(data = counties_df, aes(x=counties_df$spendingPerCapita)) +
stat_density(aes(y=..count..), color="#454955", fill="dark green", alpha=0.3) +
stat_density(aes(y=..count..), color="#454955", fill="dark green", alpha=0.3) +
scale_x_continuous(breaks=c(-1,0,1,2,3,4,5,10,30,100,300,500,1000), trans="log1p", expand=c(0,0), limits=c(0,1750)) +
scale_y_continuous(breaks=c(250,500,750,1000,1250,1500,1750,2000), expand=c(0,0), limits=c(0,2000)) +
military_theme + xlab("Spending Per Capita in USD") + ylab("Number of counties") +
ggtitle("Spending Per Capita Density on a County Level"))
# plot the counties which spent the most
suppressWarnings(
ggplot(data = head(counties_df[order(-counties_df$spending), ], n=10), aes(x=reorder(Area_name, -spending), y=spending)) +
geom_histogram(stat="identity", fill="#4b5320") +
scale_y_continuous(breaks=c(2000000, 4000000, 6000000, 8000000),
labels=c("$2mil", "$4mil", "$6mil", "$8mil")) +
military_theme + theme(axis.text.x = element_text(angle=45, hjust=1), plot.title = element_text(hjust = 0)) +
xlab("Counties") + ylab("Total Spending in USD") +
ggtitle("Highest spending by County"))
# plot the counties which spent the most per capita
suppressWarnings(
ggplot(data = head(counties_df[order(-counties_df$spendingPerCapita), ], n=10), aes(reorder(county, -spendingPerCapita), spendingPerCapita)) +
geom_histogram(stat="identity", fill="#4b5320") +
scale_x_discrete(labels=counties_df$Area_name) +
scale_y_continuous(labels = comma, limits = c(0, 300)) +
military_theme + theme(axis.text.x = element_text(angle=45, hjust=1), plot.title = element_text(hjust = 0)) +
xlab("Counties") + ylab("Spending per capita in USD") +
ggtitle("Highest spending per capita by county"))
Most of these counties are very rural with populatiosn under 5000, a couple large purchases (such as 2 tanks and 4 trucks in the case of Divide, ND) give them their high spending per capita.
This data comes from three sources:
1. US Census County Data
2. 2012 Presidential Election County-Level Data from The Guardian
3. A Multifactor US County-Level Dataset put together by Emil O. W. Kirkegaard for his 2016 paper Inequality across US counties: an S factor analysis * The factors in this data set do not have detailed descriptions and it has no data from 2008-2012, though most of the factors are from other time spans in between 2006-2014. Only factors with titles that were easily interpretable are used.
# 2012 presidential election
election_df = read_excel("~/projects/policeMilitarySurplus/data/election2012CountyData.xls", sheet = 1)
## Warning in xls_cols(path, sheet, col_names = col_names, col_types =
## col_types, : Expecting numeric in [1430, 5] got `error`
## Warning in xls_cols(path, sheet, col_names = col_names, col_types =
## col_types, : Expecting numeric in [1430, 7] got `error`
election_df$Area_name = paste0(election_df$`County Name`, ", ", election_df$`State Postal`)
election_df = election_df[!duplicated(election_df[,"Area_name"]),]
election_df = election_df[!is.na(election_df$Area_name),]
counties_df$percentRomney = election_df$percentRomney[match(counties_df$Area_name, election_df$Area_name)]
republicanVoteSpendingCor = format(cor(counties_df$percentRomney, counties_df$spending, use = "complete"), digits = 4)
# Population density in 2010
pop_dense_df = read_excel("~/projects/policeMilitarySurplus/data/censusCountyPopulationTotal1.xls", sheet = 3)
counties_df$popDensity = pop_dense_df$POP060210D[match(counties_df$Area_name, pop_dense_df$Area_name)]
spendPopDenseCor = format(cor(counties_df$popDensity, counties_df$spending, use = "complete"), digits = 4)
# Crime
crime_df = read_excel("~/projects/policeMilitarySurplus/data/censusCountyCrime1.xls", sheet = 3)
# Averge number of violent crimes per year known to police over 2006, 2007 and 2008
counties_df$crime= (crime_df$CRM110208D[match(counties_df$Area_name, crime_df$Areaname)] +
crime_df$CRM110207D[match(counties_df$Area_name, crime_df$Areaname)] +
crime_df$CRM110208D[match(counties_df$Area_name, crime_df$Areaname)]) / 3
spendCrimeCor = format(cor(counties_df$crime, counties_df$spending, use = "complete"), digits = 4)
# Poverty
income_pov_df = read_excel("~/projects/policeMilitarySurplus/data/censusCountyIncomeAndPovertyData.xls", sheet = 3)
# Average people of all ages in poverty per year from 2006-2009
counties_df$poverty = (income_pov_df$IPE110209D[match(counties_df$Area_name, income_pov_df$Areaname)] +
income_pov_df$IPE110208D[match(counties_df$Area_name, income_pov_df$Areaname)] +
income_pov_df$IPE110207D[match(counties_df$Area_name, income_pov_df$Areaname)] +
income_pov_df$IPE110206D[match(counties_df$Area_name, income_pov_df$Areaname)]) / 4
spendPovCor = format(cor(counties_df$poverty, counties_df$spending, use = "complete"), digits = 4)
# Bring in a huge set of count-level data from https://github.com/Deleetdk/USA.county.data
data(USA_county_data)
counties_df$fips = election_df$FIPS[match(counties_df$Area_name, election_df$Area_name)]
USA_county_delta = USA_county_data[sapply(USA_county_data, is.numeric)]
USA_county_delta$spending = counties_df$spending[match(USA_county_delta$fips, counties_df$fips)]
USA_county_delta$percentVotersVotedRomney2008 = counties_df$percentRomney[match(USA_county_delta$fips, counties_df$fips)]
USA_county_delta$popDensity2010 = counties_df$popDensity[match(USA_county_delta$fips, counties_df$fips)]
USA_county_delta$avgViolentCrime06to08 = counties_df$crime[match(USA_county_delta$fips, counties_df$fips)]
USA_county_delta$avgNumPeopleInPoverty06to09 = counties_df$population[match(USA_county_delta$fips, counties_df$fips)]
USA_county_delta = USA_county_delta[!(USA_county_delta$spending==0 | is.na(USA_county_delta$spending)),]
names(USA_county_delta)
# reduce data down to appropriate, understandable factors
keeps = c("spending", "Mixedness", "Infant.mortality", "Injury.deaths", "Homicide.rate",
"Unemployment", "Uninsured", "HIV.prevalence.rate", "Sexually.transmitted.infections",
"Diabetes", "Adult.obesity", "Adult.smoking", "Children.in.single.parent.households", "Teen.births",
"Low.birthweight", "median_age", "Amerindian", "Black", "percentVotersVotedRomney2008", "popDensity2010",
"White", "Production.transportation.and.material.moving.occupations", "Less.Than.High.School",
"At.Least.High.School.Diploma", "At.Least.Bachelor.s.Degree", "Graduate.Degree", "School.Enrollment",
"Median.Earnings.2010.dollars", "White.not.Latino.Population", "African.American.Population",
"Native.American.Population", "Asian.American.Population", "Population.some.other.race.or.races",
"Latino.Population", "Children.Under.6.Living.in.Poverty", "Adults.65.and.Older.Living.in.Poverty",
"Total.Population", "Preschool.Enrollment.Ratio.enrolled.ages.3.and.4", "Poverty.Rate.below.federal.poverty.threshold",
"Child.Poverty.living.in.families.below.the.poverty.line", "avgViolentCrime06to08", "avgNumPeopleInPoverty06to09",
"Management.professional.and.related.occupations", "Service.occupations", "Sales.and.office.occupations",
"Farming.fishing.and.forestry.occupations", "Construction.extraction.maintenance.and.repair.occupations")
USA_county_delta = USA_county_delta[keeps]
spending_cors = sort(cor(as.matrix(USA_county_delta), use="pairwise.complete.obs")["spending",])
spending_cors = head(spending_cors, -1) # remove spending factor
my.cols <- colorRampPalette(c("blue","red"))
res <- data.frame(spending_cors=spending_cors, x=seq(1,length(spending_cors)), y=rep(1,length(spending_cors)), row.names = names(spending_cors))
trellis.par.set(clip=list(panel="off"), axis.line=list(col="transparent"))
levelplot(spending_cors~y*x, data=res, col.regions=my.cols,
colorkey=list(), region=T, xlab="", ylab="", scales=list(draw=F), pretty = TRUE,
main=list(label="Correlation with Spending", fontfamily="Courier New"),
panel=function(...) {
panel.levelplot(...)
panel.text(x=rep(1, length(spending_cors)), y=seq(1, length(spending_cors)),
lab=rownames(res), fontfamily="Courier New")
})
Most of the factors have correlation coefficients very close to 0 which implies those factors probably do not have any relationship at all with spending.
The most telling factors are the top three. The positive correlation of total population and spending is somewhat intuitive, however the positive correlation of crime and poverty with spending is more interesting. What this tells us is that poorer, more crime-ridden counties tend to have higher spending on combat-oriented equipment.
There is also a more nuanced relationship explained by the variables with weaker correlations. We see that non-white populations have weak positive correlations and white population has a weak negative correlation, median age has a weak negative correlation, population density has a weak positive correlation and white collar occupations have weak positive correlation while blue collar occupations have weak negative correlations. What does all of this tell us? Counties that are whiter, more rural, older and more blue collar slightlytend to have less spending on combat-oriented equipment than less white, more white collar and more urban ones do.
ggplot(counties_df, aes(x = log(poverty), y = log(spending))) +
military_theme + theme(plot.title = element_text(hjust = 0)) +
geom_point(colour="#4b5320") + geom_smooth(method='lm', formula=y~x, colour="#454955") +
xlab("Average Number of People in Poverty per Year from 2006-2009 (log smoothed)") + ylab("Spending (log smoothed)") +
ggtitle(label="Spending vs. Poverty on a County Level",
subtitle=paste("Correlation between spending and poverty = ", spendPovCor))
suppressWarnings(
ggplot(USA_county_delta, aes(x = White, y = log(spending))) +
military_theme + theme(plot.title = element_text(hjust = 0)) +
geom_point(colour="#4b5320") + geom_smooth(method='lm', formula=y~x, colour="#454955") +
xlab("Percent White") + ylab("Spending (log smoothed)") +
ggtitle(label="Spending vs. Percent Whiteness on a County Level",
subtitle=paste("Correlation between spendinnd Whiteness = ", spending_cors["White"])))
## Warning: Removed 3 rows containing non-finite values (stat_smooth).
## Warning: Removed 3 rows containing missing values (geom_point).
suppressWarnings(
ggplot(USA_county_delta, aes(x = White, y = log(spending))) +
military_theme + theme(plot.title = element_text(hjust = 0)) +
geom_point(colour="#4b5320") + geom_smooth(method='lm', formula=y~x, colour="#454955") +
xlab("Percent White") + ylab("Spending (log smoothed)") +
ggtitle(label="Spending vs. Percent Whiteness on a County Level",
subtitle=paste("Correlation between spendinnd Whiteness = ", spending_cors["White"])))
## Warning: Removed 3 rows containing non-finite values (stat_smooth).
## Warning: Removed 3 rows containing missing values (geom_point).
suppressWarnings(
ggplot(USA_county_delta, aes(x = median_age, y = log(spending))) +
military_theme + theme(plot.title = element_text(hjust = 0)) +
geom_point(colour="#4b5320") + geom_smooth(method='lm', formula=y~x, colour="#454955") +
xlab("Median Age") + ylab("Spending (log smoothed)") +
ggtitle(label="Spending vs. Median Age on a County Level",
subtitle=paste("Correlation between spending and median age = ", spending_cors["median_age"])))
## Warning: Removed 3 rows containing non-finite values (stat_smooth).
## Warning: Removed 3 rows containing missing values (geom_point).
Roughly half of all money spent through the 1033 program from 2006 to May 2016 was on equipment that is combat-oriented in nature. In total over the almost 10-year period, $609,879,850 was spent by counties on combat-oriented equipment.
On a state level, Alabama and Tennessee are noteable outliers, they ranked in the top 3 highest total spending and per capita spending state.
Three quarters of all counties in the U.S. spent something on combat-oriented military equipment and most spent less than $100,000. The counties with the highest spending per capita are rural low-population counties.
Counties with higher crime and poverty rates tend to have more spending, while whiter and older counties tend to have a bit less.