Home Ownership Patterns Across Middle Tennessee Show A Clear Pattern Of Economic Divide

Rising household income is closely tied to higher home ownership rates across Middle Tennessee, with Williamson County far outpacing Davidson and Rutherford in both income and ownership levels.

The scatter plot highlights a strong positive relationship between median household income and home ownership, with Williamson County’s high‑income districts clustered near the top of the chart. The box plot reinforces this pattern by showing Williamson with the highest median home ownership rate and the narrowest spread. Rutherford County sits in the middle, with moderate variability, while Davidson County shows the lowest median ownership and the widest distribution, reflecting its more diverse economic landscape. The histogram adds another layer by revealing that most districts fall between 40% and 90% ownership, with a notable concentration around 70%, that indicates average ownership levels are the most common across the region.


Home Ownership Rates Across Davidson, Rutherford and Williamson.


Code:

# ----------------------------------------------------------
# Step 1: Install required packages (if missing)
# ----------------------------------------------------------

if (!require("tidyverse"))
  install.packages("tidyverse")
if (!require("plotly"))
  install.packages("plotly")

# ----------------------------------------------------------
# Step 2: Load libraries
# ----------------------------------------------------------

library(tidyverse)
library(plotly)

# ----------------------------------------------------------
# Step 3: Read data from CSV file
# ----------------------------------------------------------

mydata <- read_csv(
  "https://raw.githubusercontent.com/drkblake/Data/main/MGRData.csv"
)
Histogram <- plot_ly(
  data = mydata,
  x = ~ Ownership,
  type = "histogram",
  nbinsx = 40,
  opacity = 0.6,
  marker = list(
    color = "#d73027",
    line = list(color = "black", width = 1)
  )
) %>%
  layout(
    title = "Distribution of Home Ownership",
    xaxis = list(title = "Home Ownership (%))"),
    yaxis = list(title = "Number of Districts")
  )

Histogram
Boxplot <- plot_ly(
  data = mydata,
  x = ~County,
  y = ~Ownership,
  type = "box",
  color = ~County,
  colors = c(
    "Davidson"   = "#d73027",
    "Rutherford" = "#fc8d59",
    "Williamson" = "#1a9850"
  ),
  boxpoints = "outliers",
  opacity = 0.8
) %>%
  layout(
    title = "Home Ownership Rate by County",
    xaxis = list(title = "County"),
    yaxis = list(title = "Home Ownership Rate (%)"),
    showlegend = FALSE   # optional, since x-axis already labels groups
  )

Boxplot
Scatterplot <- plot_ly(
  data = mydata,
  x = ~Med_Income,
  y = ~Ownership,
  type = "scatter",
  mode = "markers",
  text = ~County,
  hoverinfo = "text+x+y",
  color = ~County,
  colors = c(
    "Davidson"   = "#d73027",
    "Rutherford" = "#fc8d59",
    "Williamson" = "#1a9850"
  ),
  marker = list(
    size = 8,
    opacity = 0.7
  )
) %>%
  add_trace(
    type = "scatter",
    mode = "lines",
    x = ~Med_Income,
    y = fitted(lm(Ownership ~ Med_Income, data = mydata)),
    name = "OLS trend",
    line = list(color = "black", width = 2),
    inherit = FALSE
  ) %>%
  layout(
    title = "Home Ownership Rate by Median Household Income",
    xaxis = list(title = "Median Household Income"),
    yaxis = list(title = "Home Ownership Rate (%)"),
    legend = list(title = list(text = "County"))
  )

Scatterplot