# Do single-factor NHANES associations hold in August 2021–August 2023? Analysis plan

This is the registered plan for a replication of published associations between one NHANES variable and one health condition in a cycle of the survey that none of the papers analyzed. The plan's files are this document; `frame.csv`, the papers sampled from; `order.csv`, the order in which they were judged; `eligibility.csv`, the judgment on each; `associations.json`, what was extracted from each sampled paper; `reproduction.json` and `reproduction_summary.json`, what the analysis code gave on each paper's own cycles before registration; `variables_2021_2023.csv`, every variable the 2021–2023 codebooks list; `dry_run.R`, the check that the code runs on files shaped like 2021–2023's (section 3); and `code/` and `env/`, copies of the analysis code and its environment, which run from the bundle's root as `code/` and `env/`.

## 1. Question

Suchak et al. (2025, PLOS Biology, doi:10.1371/journal.pbio.3003152) identified 341 papers, published from 2014 to 2024, each reporting an association between a single predictor and a single health condition in the US National Health and Nutrition Examination Survey (NHANES), mostly without correction for multiple testing; 190 appeared in 2024. When they corrected the p-values of 28 associations with depression for the false discovery rate, 13 remained significant. NHANES August 2021–August 2023 (files ending in `_L`, released from September 2024) is a new, independent national sample that these papers did not analyze.

The questions:

1. Of a random sample of the associations these papers report, how many keep their direction and remain statistically significant in 2021–2023 after correcting for the number of associations tested?
2. How large are the 2021–2023 effects relative to the published ones?
3. As a check on our coding: how many published estimates does our code reproduce on the cycles each paper analyzed?
4. Where do the 2021–2023 estimates differ significantly from the published ones, and how much of each difference was already present in the paper's own data, in what its analysis computed, or arose between cycles?

This is a replication of published estimates. A non-replication says that an association did not hold, or was smaller, in a later national sample analyzed the same way. Where reproducing a paper showed that its analysis computed something other than its text says (section 6.6), the study reports what was computed and how it bears on the estimate; it does not speculate on how or why any paper was produced, and makes no claim about any author's conduct.

## 2. Prior work

On 2026-10-06 we searched PubMed (title/abstract: NHANES with 2021–2023 and replicat* or reproduc*; NHANES with formulaic, paper mill, data dredging, or false discover*, 2025–2026), Europe PMC, medRxiv, and the web for any test of this literature's findings on the 2021–2023 cycle. None was found. Related work: Suchak et al. (2025) and a follow-up on redundant publications (BMC Medicine, 2025) describe the literature but do not test its associations on new data; single papers have analyzed individual associations in 2021–2023 (for example adiposity indices and depression, vitamin D and fatty liver disease), without reference to the earlier papers; and environment-wide association studies test their own discoveries across cycles. The design here is therefore not changed by prior work.

## 3. Blinding

No NHANES 2021–2023 data file has been downloaded or opened, and none will be before this plan is registered. To judge which variables exist in that cycle we read its data-file listings (one page per component), the codebook page of every 2021–2023 file, and NCHS's brief overview of the cycle's design and analytic guidelines. Codebook pages show each variable's marginal frequencies (counts per response category, or counts and ranges for continuous variables); they show no association between variables. The analysis code has been run only on the cycles the papers analyzed, and on stand-ins for the 2021–2023 files built from earlier files (`dry_run.R`: each association's 2017–2018 or 2017–March 2020 files, renamed to 2021–2023 variable names and cut to the variables 2021–2023 has, with records drawn from 2015–2016 for the one component 2017–2018 lacks, sex steroid hormones), to check that it runs.

## 4. Sample

**Frame.** The 341 papers of Table A of S1 Data in Suchak et al. (2025), in the order S1 Data lists them (`frame.csv`: metadata only, without the abstracts S1 Data reproduces).

**Order.** The frame's rows shuffled once with R 4.6.1: `set.seed(20261006, kind = "Mersenne-Twister", normal.kind = "Inversion", sample.kind = "Rejection"); sample(341)` (`code/sample.R`, giving `order.csv`).

**Eligibility.** Papers are judged in that order, each against these criteria, using only the paper and the 2021–2023 documentation. The first criterion a paper fails is recorded in `eligibility.csv` with the reason.

- **E0.** It has not been retracted (Europe PMC's record and Crossref's, and any retraction notice citing it). A correction does not exclude a paper; its corrected values are used.
- **E1.** Its full text is available from Europe PMC (through its API, or its PMC page).
- **E2.** It analyzes continuous NHANES (1999 onward), not NHANES III and not the 2012 National Youth Fitness Survey alone.
- **E3.** Its headline association (below) is cross-sectional: exposure and outcome measured on the same participants in the same cycle. Outcomes from linked mortality files or other follow-up are excluded, since 2021–2023 has no follow-up yet.
- **E4.** It has a headline association: a statistically significant whole-population estimate from a regression in the generalized linear model family (linear, logistic, Poisson, log-binomial), weighted or not, possibly with a spline or piecewise term, with a 95% confidence interval. Estimates from mixture models, machine learning, mediation analysis, Mendelian randomization, propensity-score matching, or Cox models do not count.
- **E5.** The exposure, the outcome, and the defining characteristics of the study population of the headline association can each be built from 2021–2023 public-use files with the same measurement or question the paper used. A change of device, assay, or question wording that keeps the construct and its units counts as the same (for example blood pressure measured by an oscillometric device rather than by auscultation). Every component of a composite (an index, a score, a disease definition) must be constructible. A population's defining characteristics are its age range, sex, and any condition it is named by (for example "adults with type 2 diabetes" or "adults with a BMI under 25"). Its other exclusion steps (medications, infections, pregnancy, implausible values, missing data) do not decide eligibility, and neither do covariates: section 6.4 says how those that 2021–2023 lacks are handled. Constructs that need data outside NHANES's files (food pattern equivalents, food classifications such as NOVA, flavonoid databases) are not constructible; published constants (such as the Dietary Inflammatory Index's global means and weights) are allowed.

Where Table A's labels alone settle a criterion (for example an outcome measured by a DXA scan, which 2021–2023 does not include), the paper was judged from the labels and its abstract; every other paper was judged from its full text.

**Headline association.** The association a paper claims, chosen from its main text (abstract, body, and main tables; supplements may supply details but never the headline). An estimate is significant if the paper reports p < 0.05 for it, or, when it gives no p-value, if its 95% confidence interval excludes the null value.

1. Among the estimates the abstract's results report for the association between the paper's predictor and health condition (as Table A labels them) in its whole study population, take the first exposure coding mentioned (an exposure coding is how the exposure enters the model: per unit, per standard deviation, in quantiles, in other categories) and its most-adjusted estimate in the abstract. For a coding with ordered categories whose reference is the lowest, that estimate is its highest category against the reference (quartile 4 versus quartile 1, not quartile 2 versus quartile 1); for any other categorical coding, such as sleep duration with a middle reference, it is the first contrast the abstract reports. If that estimate is significant, it is the headline; if not, go on to the next exposure coding the abstract reports.
2. If the abstract gives no significant whole-population estimate with a 95% confidence interval, take the paper's main regression table (the first table of regression results in its main text): its most-adjusted estimate for the predictor as a continuous variable if significant, otherwise its most-adjusted estimate comparing the highest category with the reference category, if significant.
3. A paper with neither fails E4.

Subgroup estimates are never headlines. An estimate for one segment of a piecewise model is a headline if the rule picks it; its knot is kept as published.

These rules were settled while the first papers were judged, before any 2021–2023 data were downloaded: retraction (E0) after one sampled paper turned out to have been retracted, the significance requirement after one paper's first estimate had a confidence interval spanning the null, the main-text rule after one paper's continuous estimate appeared only in its supplement, the split between defining characteristics and other exclusion steps after one paper's exclusion of glucocorticoid users would otherwise have excluded it, and the highest-category rule after abstracts listing several quartile contrasts were read in two ways. Every paper judged before a rule was settled was judged again under it, and `eligibility.csv` and `associations.json` note where that changed a decision or a headline.

**Sample size.** The first 40 eligible papers in the order. If fewer than 40 of the 341 are eligible, all of them. A paper that turns out, while its analysis is coded and before registration, to fail a criterion is replaced by the next eligible paper in the order, and `eligibility.csv` says so.

**Flow.** Papers were judged in order through rank 206, where the 40th eligible paper was reached; the other 135 were not judged. Of the 206, 2 were retracted (E0), 53 had no full text in Europe PMC (E1), 3 did not analyze continuous NHANES (E2), 4 had no cross-sectional headline (E3), 8 had no headline association as defined (E4), and 96 had an exposure, outcome, or defining characteristic that 2021–2023 can't build (E5: 85 judged from Table A's labels and abstract, 11 from the full text); 40 were eligible.

## 5. Extraction

For each sampled paper we recorded from its full text, with the verbatim sentence or table cell for every number: the headline estimate, its measure (odds ratio, prevalence ratio, regression coefficient), 95% confidence interval, exposure contrast (per unit, per standard deviation, quartile 4 versus 1), model and covariates, and analytic sample size; the cycles analyzed; the study population and each exclusion; the exposure's and outcome's definitions, with the NHANES variables and files that build them; each covariate's coding; the weights and design variables; the model; how missing data were handled; and every choice needed to re-run the analysis that the paper leaves unstated. Extractions are in `associations.json`, one entry per association, with the source of each value. Every quoted number was checked against the full text by string matching, and every estimate was checked by reproducing it (section 6.3).

Eligibility judgments, extractions, and the association files were written by AI agents (Claude models), each working from one paper's full text (Europe PMC's XML, or its PMC page, converted to text) under a written brief, with the rules in this plan; every rule settled along the way was applied to every paper judged before it (section 4). Quotes were checked against the full text by code, and each extraction was read again, against the paper's tables, when its analysis was coded; where that showed the paper had computed its headline otherwise than its text says, the association's file follows the computation (section 6.2) and says why.

## 6. Analysis

### 6.1 Re-implementation

Each association has its own file, `code/associations/<id>.R`, which builds the exposure, outcome, covariates, and study population from each cycle's NHANES files as the paper's Methods describe, using shared functions in `code/lib/` for variables that many papers use. Models are fitted with the survey package (version 4.5) in R 4.6.1: `svyglm` with Taylor-linearized variance over NHANES's masked strata and PSUs, the design built on every participant with a positive weight and the study population analyzed as a domain (`subset` of the design), and strata with a single PSU handled by `survey.lonely.psu = "adjust"`. A paper that did not weight its analysis is re-run unweighted. A paper that weighted its estimates but computed their intervals as if the sample were a simple random one (weights without the survey design, which its interval widths show) is re-run with the design, as NCHS directs, so its interval here is wider than the published one. Confidence intervals and p-values use the t distribution with the design's degrees of freedom, the number of PSUs minus the number of strata, as NCHS's guidelines do (`survey::degf`); `svyglm`'s own residual degrees of freedom subtract the number of coefficients, which a model with many covariates can drive to zero. Unweighted models use the normal distribution. Ratio measures are analyzed on the log scale.

The NHANES files are CDC's public-use SAS transport files, carried in the bundle compressed with xz; before reading each, the code checks it against the SHA-256 and size of the file as downloaded from CDC (`data/nhanes/sources.csv`).

### 6.2 Choices a paper leaves unstated

Most papers leave some analytic choice unstated (which weight, how a covariate is coded, how missing values are handled). Each is settled by the first of these that applies, and recorded with its reason in the association's file (`choices`) and in `reproduction.json`:

1. What the paper says elsewhere (Table 1, its footnotes, figure legends, supplements).
2. NCHS's analytic guidelines: the weight of the smallest subsample whose variables the analysis uses (fasting, dietary day 1 or two-day, examination, interview), each cycle's weight scaled by its share of the pooled years, four-year weights for 1999–2002, domain estimation.
3. The convention most common in this literature where the paper uses its terms: complete-case analysis; PHQ-9 total score of 10 or more for depression; the CKD-EPI 2009 equation for eGFR; smoking as never (fewer than 100 cigarettes), former, or current; and so on.
4. If more than one choice remains plausible, the one whose estimate on the paper's own cycles comes closest to the published estimate (on the analysis scale). This is decided before the 2021–2023 data are seen, so it cannot favor replication.

Papers in this literature often fit every model on one analytic sample (those with complete data for the most-adjusted model), and so does the re-implementation. Their simpler models (crude, or adjusted for age, sex, and race), which most report, are fitted too, as checks on the population, exposure, and outcome before covariates enter. A paper that filled in missing values by a fixed rule (a mean or median, a category for missing values, a deterministic imputation model) is followed; multiple imputation, whose random draws can't be reproduced, is replaced by complete cases, with a single imputation that keeps the paper's sample as a variant where one is feasible.

What the replication tests is the published estimate, so the re-implementation follows the computation that produced it, as far as the paper's own numbers reveal it, even where that departs from the paper's text: an unweighted analysis in a paper that says it weighted (a common pattern in papers analyzed with EmpowerStats), an index computed otherwise than its printed formula, non-fasting values described as fasting, a cycle the paper names but its sample lost, a covariate list that differs from the one the text gives, a sample that complete-case coding restricted. A coding the paper applied to questions that 2021–2023 asks the same way (one that leaves missing the people a question's skip pattern passes over, for example) is followed in both versions, so the replication computes what the paper computed. A data-handling failure peculiar to a paper's own files (a variable merged for one cycle only, a cycle lost in merging) is reproduced in the paper version where it explains the published estimate, but has no counterpart in 2021–2023, so the harmonized version uses the variable as defined. The text's version is fitted as a variant, and in 2021–2023 an analysis re-run unweighted is also reported weighted. Two exceptions, where following the computation would misrepresent what the paper reports: participants counted twice (from stacking the 2017–2018 files with the 2017–March 2020 files, which already contain them) are counted once, and an outcome coded in reverse is coded as the paper states it. There the re-implementation corrects the error, and a variant shows whether the error accounts for the published numbers.

Every alternative tried on an association's own cycles is kept in its file as a variant and reported with its estimate in `reproduction.json`, so no choice made by closeness to the published estimate is hidden.

### 6.3 Coding check on the original cycles

Before registration, each association was run on the cycles its paper analyzed. An association is **reproduced** if our point estimate lies inside the published 95% confidence interval. We also report the ratio of our estimate to the published one (on the analysis scale) and our analytic sample size beside the published one. Associations are not dropped for failing to reproduce: the replication runs on all of them, and results are reported both for all and for the reproduced ones.

**Result.** All 40 associations ran on their papers' cycles (`reproduction.json`, summarized in `reproduction_summary.json`), and 39 reproduced. The one that did not (row 257, zinc intake and asthma) modeled the absence of asthma while reporting the odds of asthma: coded as the paper states it, its estimate is 1.41 against the published 0.71, and the reversed coding reproduces 0.71 exactly (a variant), so its replication tests the published direction against the outcome as stated. The ratio of our estimate to the published one on the analysis scale has median 0.988 (95% confidence interval 0.917 to 1.012; quartiles 0.906 and 1.028); 27 estimates are within 10% of the published ones and 34 within 25%. Twenty-five analyses are weighted and 15 unweighted, as their papers' numbers show they were computed. Our analytic sample is within 5% of the paper's for 17 of the 39 papers that report one; most others are smaller because the re-implementation uses complete cases where a paper used multiple imputation, counts stacked 2017–2018 participants once, or keeps the subsample a paper's own numbers show it analyzed, and each association's file says why. In our fits on the papers' cycles, 32 of the 40 estimates have the published sign with p < 0.05. Of the other 8, row 257 has the opposite sign, and 7 have intervals that include the null: design-based intervals where the paper's ignored the design, smaller complete-case samples, or (row 40) a stated model whose covariates, total and HDL cholesterol, nearly determine its exposure, the log of their ratio.

**Departures.** In 36 of the 40 papers the coding check found at least one departure bearing on the headline estimate (section 6.6): of coding in 31, of the sample in 15, of reporting in 11, of weighting in 8, and of the model in 5. In 11 papers the re-implementation does not follow one of them, because it corrects it (participants counted twice, an outcome coded in reverse) or because the paper's numbers rule out the stated computation without revealing the one used. Three published intervals are less than two thirds as wide as ours on the same data (rows 40, 101, and 284).

**Expected power.** Projected from each published standard error, scaled to one two-year cycle with 15 design degrees of freedom (`projected_power` in `reproduction.json`), 12 of the 40 tests would have power of at least 0.80 to detect the published effect in 2021–2023 (median 0.43). Most single replications are therefore expected to be uninformative on their own, which is why section 6.5 reports the primary outcome among the informative tests as well and summarizes the effect ratios over all of them.

### 6.4 Replication in 2021–2023

After registration, the same code runs on 2021–2023 with these rules, fixed now:

- **Weights.** The 2021–2023 counterpart of the paper's weight: the same weight where 2021–2023 has it, except where two components moved to smaller subsamples and NCHS's documentation for this cycle directs their weights. The examination weight becomes the phlebotomy weight (`WTPH2YR`) whenever a blood analyte is in the model; and the examination or interview weight becomes the dietary day-one weight (`WTDRD1`) whenever the model uses the 30-day dietary supplement questionnaire, which 2021–2023 asked by telephone after the first dietary recall (NCHS: for any analysis using it, "either alone or when Dietary Supplement data are used in conjunction with MEC data"). Dietary and fasting-subsample weights keep their names (`WTDRD1`, `WTDR2D`, `WTSAF2YR`). The cycle is analyzed alone (30 PSUs).
- **Constants.** Category cutpoints, standard deviations used as units, knots of piecewise models, and other constants keep the values the paper used: those it published (unless its own counts show a printed value to be a misprint, which the association's file records), or, where it published none, the values computed on its own cycles before registration (recorded in `reproduction.json`). An effect "per SD" is per the original SD, so the contrast is the same in both samples.
- **Covariates and exclusion steps.** A covariate that 2021–2023 measures differently is built the closest way listed in its association's file (for example physical activity: 2021–2023 asks only about leisure time). A covariate it lacks is left out, and so is an exclusion step it can't build (for example excluding glucocorticoid users, since 2021–2023 releases no drug names). Each association is therefore fitted in two versions: the paper's ("paper", the coding check, on its own cycles) and the harmonized one, with exactly what 2021–2023 can build, which is fitted on both the paper's own cycles and 2021–2023, so what leaving things out changes is measured on the original data. The replication is the harmonized version on 2021–2023, and its comparisons with the paper's own cycles use the harmonized version there.
- **Measurement changes.** Blood pressure is oscillometric in 2021–2023; the first dietary recall was by telephone rather than in person; serum triglycerides are named `LBXTLG`. Such changes are listed per association and discussed, not corrected.

### 6.5 Outcomes

For each association the replication yields an estimate, its 95% confidence interval, and a two-sided p-value. Then:

- **Primary.** An association is **replicated** if its 2021–2023 estimate has the same sign as the published estimate and its p-value, corrected by Benjamini and Hochberg's procedure over all sampled associations, is below 0.05. We report the number replicated out of all, with an exact 95% confidence interval.
- **Power.** For each association, the power of its 2021–2023 test (two-sided, α = 0.05, noncentral t on the design's degrees of freedom) to detect the published effect, given the 2021–2023 standard error. Tests with power of at least 0.80 are **informative**. An association that fails to replicate in an uninformative test is reported as uninformative, not as a failure. The primary outcome is reported for all associations and for the informative ones.
- **Effect ratio.** The ratio of the 2021–2023 estimate to the published estimate on the analysis scale (log odds ratio, log prevalence ratio, or regression coefficient), summarized by its median with a distribution-free 95% confidence interval and quartiles, over all associations and over informative ones.
- **Secondary.** Same sign and unadjusted p < 0.05; the 2021–2023 estimate inside the published 95% confidence interval; opposite sign with corrected p < 0.05 (reversals); the ratio of the 2021–2023 estimate to our own estimate on the original cycles with the replication's covariates, and a test of their difference (two independent samples, z on the analysis scale, Benjamini-Hochberg corrected); replication among the associations that reproduced in 6.3.
- **Difference from the published estimate.** For each association, a two-sided test of the difference between its 2021–2023 estimate and the published one (independent samples; z on the analysis scale, with the published standard error taken from its 95% confidence interval), Benjamini-Hochberg corrected over all associations. The report lists every association that differs significantly (corrected p < 0.05), and whether its 2021–2023 estimate is smaller than published, larger, or of the opposite sign.
- **Where a difference arose.** On the analysis scale, the ratio of the 2021–2023 estimate to the published one is the product of three ratios, each reported for every association: our estimate on the paper's own cycles to the published one (what reproducing the paper's analysis gives, including the departures of section 6.6), the harmonized estimate to ours on those cycles (what leaving out what 2021–2023 lacks changes), and the 2021–2023 estimate to the harmonized one on the paper's cycles (what changed between cycles: the population, measurement changes listed for the association, and sampling error, with the heterogeneity test above). With each, the published estimate's z statistic is reported, since estimates selected for significance overstate effects most when that z is small.
- **Models that can't be fitted.** A covariate with a single value in an association's 2021–2023 analytic sample is left out of its model there, and reported. An association whose 2021–2023 model still can't be fitted counts as tested and not replicated (p = 1 in the correction), with power 0, and is reported with the reason; anything done afterward to make it run is a deviation (section 6.7), reported beside it.
- **Sensitivity.** The primary outcome with the paper's own weight (the examination or interview weight) in place of the weights NCHS directs for 2021–2023's subsamples.

### 6.6 What the published analyses computed

Reproducing each paper on its own cycles (section 6.3) showed where its analysis computed something other than its text says. Each association's file lists these findings (`departures`), each established by the paper's own numbers, of one of five kinds:

- **weighting:** survey weights or the survey design stated but not used (unweighted estimates, or weighted ones with intervals that ignore the design);
- **sample:** a sample other than the one described (participants counted twice, exclusions or restrictions not described, a different age range);
- **coding:** an exposure, outcome, or covariate computed otherwise than described (an outcome coded in reverse, units misread, non-fasting values described as fasting, a variable merged for one cycle only, cutpoints other than those printed);
- **model:** covariates or a model other than those stated (a covariate left out or added);
- **reporting:** a reported number other than what its label says (a per-unit estimate within one quartile labeled a contrast between quartiles), or a misprinted number.

Each also says whether it bears on the headline estimate and whether the re-implementation follows it (section 6.2) or not (it corrects it, or the paper's numbers rule out the stated computation without revealing the one used). These findings were recorded before registration, from the original cycles alone. The report counts the associations with a departure bearing on the headline, by kind and in all, and those with one the re-implementation doesn't follow (`code/run` tallies them); findings that don't bear on the headline are reported but not counted, since how thoroughly a paper's other tables were checked varied. For every association whose 2021–2023 estimate differs significantly from the published one, it sets out which departures bear on it. It also gives, for each association, the ratio of the published interval's width to ours on the paper's cycles (design-based where the paper weighted), which shows where a published interval is narrower than the data support, whatever the paper's text says of its methods.

### 6.7 Deviations

Anything done after registration other than as written here, including any fix to the code, is listed in the reporting bundle's `deviations.json` with what was planned and what was done, and the analysis as planned is reported beside it when both can run.

## 7. Claims planned

The reporting bundle will make at most 30 claims, the headline ones aggregates over all sampled associations, each a computation that `code/run` reproduces from the bundle's data:

- the number replicated (primary outcome) out of all, with its exact 95% confidence interval, and out of the informative ones;
- the median ratio of the 2021–2023 effect to the published effect, with its distribution-free 95% confidence interval, over all and over the informative ones;
- the number whose 2021–2023 estimate falls inside the published 95% confidence interval, the number with the same sign and unadjusted p < 0.05, and the number reversed;
- the number reproduced on the paper's own cycles (the coding check), and the median ratio of our estimate there to the published one;
- the median ratio of the 2021–2023 effect to our own estimate on the paper's cycles, and the number whose difference is significant after correction;
- the primary outcome among the reproduced associations, and with the paper's own weight in place of the subsample weights 2021–2023 directs;
- the number whose 2021–2023 estimate differs significantly from the published one, by direction (smaller, larger, opposite sign);
- the number of published analyses with a departure of each kind bearing on the headline estimate (section 6.6).

Per-association results (each published estimate, our estimate on the paper's cycles, the harmonized estimate there, the 2021–2023 estimate with its confidence interval, p-value, corrected p-value, power, the test of its difference from the published estimate, the three ratios of section 6.5, and the departures of section 6.6) go in the bundle's `results/`, with a table in the paper.

## 8. Ethics and data

NHANES is conducted by the National Center for Health Statistics under protocols approved by the NCHS Research Ethics Review Board, with written informed consent from participants: Protocol #98-12 (1999–2004), #2005-06 (2005–2010), #2011-17 (2011–2016, and 2017 through October 26, 2017), #2018-01 (from October 26, 2017, through March 2020), and #2021-05 (August 2021–August 2023, which NCHS lists as "2021-2022"). This study uses only the de-identified public-use files, as NCHS's data use restrictions permit, and makes no attempt to identify anyone. The bundle carries the files it uses, as CDC published them (compressed, each checked against its SHA-256 at download), so the analysis does not depend on files CDC may later re-release. The original papers are cited only as bibliographic references, and this study characterizes associations, not papers or authors.

## 9. Timing

The 2021–2023 files are downloaded only after this plan is registered. The analysis then runs as written; the report is expected within weeks, and the registered report-by date leaves room for verification of the reporting bundle.

## 10. Software

R 4.6.1 in the `rocker/r-ver:4.6.1` image pinned by digest (amd64 and arm64), with survey 4.5 and jsonlite 2.0.0 from the Posit Package Manager snapshot of 2026-10-01 (`env/Dockerfile`); NHANES files are read with R's foreign package. Floating-point results can differ in their last digits between platforms' math libraries, so declared results are rounded to the precision their uncertainty supports and carry tolerances only where that rounding leaves a difference possible.
