BMI Patterns by Income Group

Audience question

Audience: Municipal public-health staff preparing an internal health-equity briefing.

Question: Among adults age 20-80 in the prepared classroom dataset, how does average BMI vary across NHANES cycles for one selected income group?

Setup

library(tidyverse)
library(knitr)

nhanes <- read_csv("data/nhanes_equity_v6.csv", show_col_types = FALSE)

Choose one income group

This small Quarto product uses a render-time control. Change selected_income, then render the page again. The table, title, plot, and interpretation update together.

available_income_groups <- sort(unique(na.omit(nhanes$IncomeGroup)))
selected_income <- "Low Income (<1.3)"

if (!selected_income %in% available_income_groups) {
  selected_income <- available_income_groups[1]
}

selected_income
[1] "Low Income (<1.3)"

Summary table

dashboard_summary <- nhanes |>
  filter(
    Age >= 20,
    Age <= 80,
    IncomeGroup == selected_income,
    !is.na(BMI),
    !is.na(Cycle)
  ) |>
  group_by(Cycle) |>
  summarise(
    n = n(),
    average_bmi = round(mean(BMI), 1),
    .groups = "drop"
  )

kable(
  dashboard_summary,
  col.names = c("NHANES cycle", "Records", "Average BMI (kg/m²)")
)
NHANES cycle Records Average BMI (kg/m²)
1999-2000 1091 28.8
2001-2002 1089 28.7
2003-2004 1183 28.6
2005-2006 1091 29.3
2007-2008 1552 29.1
2009-2010 1817 29.5
2011-2012 1724 29.4
2013-2014 1762 29.5
2015-2016 1568 30.0
2017-2018 1275 30.1
2021-2023 1141 30.4

Cycle pattern

ggplot(dashboard_summary, aes(Cycle, average_bmi, group = 1)) +
  geom_line(linewidth = 0.9, color = "#2f6f73") +
  geom_point(size = 2.4, color = "#2f6f73") +
  expand_limits(y = 0) +
  labs(
    title = paste("Average BMI for", selected_income),
    subtitle = "Adults age 20-80 in the prepared classroom dataset",
    x = "NHANES cycle",
    y = "Average BMI (kg/m²)"
  ) +
  theme_minimal(base_size = 12) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

Average BMI across available NHANES cycles for the selected income group. The vertical scale begins at zero. Values are unweighted and descriptive.

Interpretation

For Low Income (<1.3), the cycle-specific averages range from approximately 28.6 to 30.4 kg/m² in the prepared records. Use the page to identify a pattern or question for a briefing, not to rank communities or infer a cause.

Limitation and privacy caution

This page is an unweighted, descriptive classroom summary. It does not account for the NHANES survey design, estimate the US population, or show that income causes BMI differences. Records with missing BMI, income group, cycle, or ages outside 20-80 are excluded. Only aggregate summaries are displayed; row-level records must not be uploaded to AI tools or shown in a public preview.