Home Ownership Rates by County

The distribution of home ownership in Davidson, Williamson and Rutherford counties can tell may stories.

The charts below show the comparison of home ownership by median income per county. Williamson has the highest ownership rate while also having the highest median income. Rutherford and Davidson county are similar to each other which can lead to many interpretations.

Rutherford and Davidson counties could have more populous to poll from while also hosting many stores which need to be staffed. Those employees will make less and rent for cheap causing the different median incomes and ownership rates.

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 = "#4C78A8",
    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