Child Poverty in Tennessee Counties

Over the past few weeks, an analysis of the U.S. Census Bureau’s most recent American Community Survey has been conducted to study the fastest-growing counties in Tennessee’s midstate area, along with the counties in this area that have the highest density of residents per square mile. A report on the fastest-growing counties in the midstate is available here, while a report on the counties ranked by density is available here.

For this report, the same data was used — but at a statewide level — to analyze the estimate of children living in poverty in all Tennessee counties, ranked from highest to lowest.

Tennessee County Child Poverty Rates

The table below ranks the percentage of children living in poverty for all 95 Tennessee counties, using the most recent results of the U.S. Census Bureau’s American Community Survey. The results show the county with the highest rate of child poverty is Lake County, which is located in the extreme northwest corner of Tennessee bordered by Kentucky to the north and the Mississippi River to the west. Lake County’s estimated child poverty rate is 49.7%.

On the other end of the spectrum is Williamson County in Middle Tennessee, which is an affluent suburb of Davidson County. It is one of the “doughnut counties,” those which share a border with Davidson County, home of Nashville, in the midstate. The estimate of children living in poverty in Williamson County is 4.8%. It’s worth noting that Williamson County is ranked as the fastest-growing county in the midstate area of Tennessee.

Percentage of Children Living Below the Poverty Level by Tennessee County
County Child Poverty Rate (%) Margin of Error (+/- percentage points)
Lake County 49.7 11.9
Pickett County 44.9 17.2
Hancock County 42.3 11.9
Johnson County 39.9 12.3
Cocke County 37.8 7.2
Haywood County 32.4 8.3
Perry County 32.1 13.5
Bledsoe County 32.0 8.6
Hardeman County 29.1 8.4
Lauderdale County 28.8 6.6
Sequatchie County 28.6 9.1
Henry County 27.9 6.3
Cannon County 27.8 10.1
Madison County 27.6 4.1
DeKalb County 27.1 7.6
Scott County 26.9 6.9
Shelby County 26.6 1.5
Decatur County 26.1 8.9
Hardin County 26.1 5.8
Sullivan County 26.0 3.3
Clay County 25.6 12.6
Jackson County 25.5 9.4
Loudon County 25.5 6.5
Weakley County 25.1 5.6
Fentress County 24.9 8.2
Putnam County 24.7 4.0
Crockett County 24.6 7.0
Hamblen County 24.5 4.8
Grainger County 24.4 6.3
Macon County 24.0 6.9
Stewart County 23.3 9.1
Van Buren County 23.0 13.2
Coffee County 22.9 4.4
Bedford County 22.8 5.0
Cumberland County 22.7 6.8
Carter County 22.5 4.9
Obion County 22.5 4.4
Carroll County 22.0 6.2
Benton County 21.7 6.3
Humphreys County 21.2 7.4
Campbell County 21.1 5.3
Davidson County 20.9 1.6
Grundy County 20.8 7.4
Marion County 20.8 6.6
Wayne County 20.6 6.4
Dyer County 20.5 4.7
Trousdale County 20.4 9.5
Warren County 20.4 5.3
Morgan County 20.3 6.7
Unicoi County 20.3 9.4
Claiborne County 20.2 6.3
Giles County 20.2 6.1
Hamilton County 20.2 1.9
Greene County 20.1 5.3
Overton County 20.1 6.7
Henderson County 19.9 5.9
Tipton County 19.8 3.7
Monroe County 19.3 5.6
Sevier County 18.9 3.6
Franklin County 18.8 5.2
Chester County 18.7 5.0
Rhea County 18.5 5.3
McNairy County 17.9 5.6
Fayette County 17.8 6.2
Hawkins County 17.7 3.6
McMinn County 17.4 4.2
Washington County 17.4 3.8
White County 16.9 6.7
Anderson County 16.7 4.0
Lawrence County 16.7 4.0
Lincoln County 16.6 5.9
Bradley County 16.3 3.0
Gibson County 16.1 4.5
Jefferson County 15.9 4.8
Roane County 15.9 4.4
Union County 15.6 4.2
Robertson County 14.7 3.5
Marshall County 14.6 5.0
Dickson County 14.5 3.9
Montgomery County 14.4 1.9
Knox County 13.9 1.5
Polk County 13.5 3.8
Hickman County 13.1 4.8
Maury County 12.8 3.2
Sumner County 12.4 2.0
Lewis County 11.0 8.2
Meigs County 10.9 5.7
Rutherford County 10.7 1.4
Cheatham County 9.7 3.6
Wilson County 9.7 1.9
Blount County 9.4 2.1
Smith County 8.7 4.0
Houston County 8.4 5.5
Moore County 8.0 5.9
Williamson County 4.8 1.1

Child Poverty Rates and Margin of Error

The American Community Survey uses a random sampling method to produce the data, based on the 2024 five-year estimates. As such, the results include a margin of error, which is shown in the far right column of the table above. In a nutshell, this means margin of error creates an interval around the estimate. For example, the estimate shown for Lake County is 49.7%, but with a margin of error of 11.9. This means the estimate of child poverty in Lake County has an interval of 37.8% to 61.6%. This is calculated by taking the stated estimate (49.7%) and subtracting and adding 11.9 to create the interval.

The bar chart below was created to provide a visual reference for the margin of error. The bar for each county shows the estimate, while the line associated with each bar shows the interval based on the margin of error.

Code Appendix

The following R code was used to retrieve, organize, display, and visualize the 2024 American Community Survey data.

############################################################
# STEP 1: Load Packages
############################################################

library(tidycensus)
library(tidyverse)
library(kableExtra)
############################################################
# STEP 2: Verify Census API Key
############################################################

if (!nzchar(Sys.getenv("CENSUS_API_KEY"))) {
  
  stop(
    paste(
      "\nNo Census API key was found.",
      "\n\nTo obtain a free Census API key, visit:",
      "\nhttps://api.census.gov/data/key_signup.html",
      "\n\nThen run the one-time setup code to store your key.",
      "\n"
    )
  )
}
############################################################
# STEP 3: Select ACS Variable
############################################################

# DP03_0129P =
# Percentage of people under age 18 below the poverty level

my_variable <- "DP03_0129P"


############################################################
# STEP 4: Download Tennessee County Data
############################################################

mydata <- get_acs(
  geography = "county",
  state = "TN",
  year = 2024,
  survey = "acs5",
  variables = my_variable
)
############################################################
# STEP 5: Prepare Data
############################################################

mydata <- mydata |>
  transmute(
    County = str_remove(NAME, ", Tennessee$"),
    Poverty_Rate = estimate,
    Margin_of_Error = moe
  ) |>
  arrange(desc(Poverty_Rate))
############################################################
# STEP 6: Display Results as a Table
############################################################

ResultsTable <- mydata |>
  kbl(
    format = "html",
    caption = "Percentage of Children Living Below the Poverty Level by Tennessee County",
    col.names = c(
      "County",
      "Child Poverty Rate (%)",
      "Margin of Error (+/- percentage points)"
    ),
    digits = c(0, 1, 1),
    align = c("l", "r", "r")
  ) |>
  kable_styling(
    bootstrap_options = c(
      "striped",
      "hover",
      "condensed"
    ),
    full_width = FALSE,
    position = "center"
  )

ResultsTable
############################################################
# STEP 7: Create Bar Chart with Margin of Error
############################################################

ggplot(
  mydata,
  aes(
    x = Poverty_Rate,
    y = reorder(County, Poverty_Rate)
  )
) +
  geom_col() +
  geom_errorbar(
    aes(
      xmin = Poverty_Rate - Margin_of_Error,
      xmax = Poverty_Rate + Margin_of_Error
    ),
    width = 0.3
  ) +
  labs(
    title = "Child Poverty Rates in Tennessee Counties",
    subtitle = "2024 American Community Survey 5-Year Estimates",
    x = "Children Below Poverty Level (%)",
    y = "County",
    caption = "Source: U.S. Census Bureau, American Community Survey"
  ) +
  theme_minimal() +
  theme(
    axis.text.y = element_text(size = 7),
    plot.title = element_text(face = "bold")
  )