From bf1f2de9c560990ce7d497ec404d7b2e38e3ec34 Mon Sep 17 00:00:00 2001 From: Doug Manuel Date: Fri, 28 Aug 2026 09:28:58 -0400 Subject: [PATCH 1/8] Task 1.2: estimation window starts when the earliest cohort reaches the initiation floor The initiation denominator began in 1965 (apc.period_min) while initiation events before 1965 were kept, so those cells had events equal to population (26% of weighted events in the synthetic reproduction). The window start is now derived, apc_period_min(cfg) = cohort_min + initiation_floor_age (PUMF 1933, Master 1928); a configured period_min is an error. build_initiation_data() stops if any event falls outside the window. The cessation denominator is bounded by each person's entry age and cohort_min only. Rate tables and reported histories start at apc.report_period_min (1965). Tests: every event above the floor has the same cohort at risk in the year before it; 0 <= weighted events <= population in every cell; an early-cohort initiation in 1940 keeps its risk years. Protocol v0.4.2 records the amendment (section 3.4.1). --- R/apc-model.R | 14 ++++++-- R/config-utils.R | 20 ++++++++++++ config.yml | 8 ++++- docs/protocol/full-protocol.qmd | 9 ++++-- docs/workflow/7-apc-data-preparation.qmd | 2 ++ tests/testthat/test-apc-data.R | 41 +++++++++++++++++++++++- 6 files changed, 87 insertions(+), 7 deletions(-) diff --git a/R/apc-model.R b/R/apc-model.R index 13d006d..7e2fa1b 100644 --- a/R/apc-model.R +++ b/R/apc-model.R @@ -122,7 +122,7 @@ build_initiation_data <- function(data, cfg, variable_details_sheet) { never_code <- survey_code(cfg, "smoking_status", "never_code") floor_age <- initiation_floor(cfg) cohort_min <- cfg$apc$cohort_min - period_min <- cfg$apc$period_min + period_min <- apc_period_min(cfg) period_max <- cfg$apc$period_max data <- data[!is.na(data$cohort) & data$cohort >= cohort_min, ] @@ -192,6 +192,16 @@ build_initiation_data <- function(data, cfg, variable_details_sheet) { ) period_range <- seq(period_min, period_max) denominator <- expand_denominator(denom_source, period_range, floor_age) + # Task 1.2 invariant: every event lies inside the estimation window, so its cell has + # person-years at risk (initiators contribute their own risk years from the floor). + outside <- numerator$period < period_min | numerator$period > period_max + if (any(outside)) { + stop( + sum(outside), " initiation event(s) fall outside the estimation window [", + period_min, ", ", period_max, "] (period range ", min(numerator$period), "-", + max(numerator$period), "). Check cohort_min, initiation_floor_age and period_max." + ) + } out <- rbind(numerator, denominator) attr(out, "initiation_diagnostics") <- diag @@ -358,7 +368,7 @@ build_cessation_data <- function(data, cfg, variable_details_sheet) { durability <- cfg$apc$cessation_durability_years if (is.null(durability)) stop("cfg$apc$cessation_durability_years is not set.") cohort_min <- cfg$apc$cohort_min - period_min <- cfg$apc$period_min + period_min <- as.integer(cohort_min) # cessation: bounded by entry age and cohort_min only period_max <- cfg$apc$period_max data <- data[!is.na(data$cohort) & data$cohort >= cohort_min, ] diff --git a/R/config-utils.R b/R/config-utils.R index 5f0be4e..32c9c91 100644 --- a/R/config-utils.R +++ b/R/config-utils.R @@ -85,3 +85,23 @@ survey_bound <- function(cfg, key, bound) { if (is.null(val)) stop("survey_bound: no '", bound, "' for key '", key, "' source '", src, "'") val } + +#' First calendar year of the APC estimation window +#' +#' The window starts when the earliest cohort (`cfg$apc$cohort_min`) reaches the +#' initiation floor (`initiation_floor(cfg)`), so every initiation event has person-years +#' at risk in the same age-period-cohort cells (remediation task 1.2). The reporting +#' start for rate tables (`cfg$apc$report_period_min`, 1965) is a separate, later year. +#' +#' @param cfg Config list +#' @return Integer calendar year +apc_period_min <- function(cfg) { + if (!is.null(cfg$apc$period_min)) { + stop( + "cfg$apc$period_min is set (", cfg$apc$period_min, "). The estimation window start is ", + "derived as cohort_min + initiation_floor_age; remove the key (see config.yml)." + ) + } + if (is.null(cfg$apc$cohort_min)) stop("cfg$apc$cohort_min is not set.") + as.integer(cfg$apc$cohort_min + initiation_floor(cfg)) +} diff --git a/config.yml b/config.yml index ddd9e8b..8b808b1 100644 --- a/config.yml +++ b/config.yml @@ -264,7 +264,13 @@ default: # Period and cohort range for denominator construction # period_max is the last observed CCHS cycle year (PUMF: 2022; Master: 2023 via statscan profile) # projection_max is the final projection year for rate tables and smoking histories - period_min: 1965 + # period_min is not set here: the estimation window starts in the calendar year the + # earliest cohort (cohort_min) reaches the initiation floor, apc_period_min(cfg) = + # cohort_min + initiation_floor_age (PUMF 1933, Master 1928). Setting it later than + # that (the former 1965) left initiation events before 1965 with no person-years at + # risk in the same cells (task 1.2). Rate tables and reported histories start at + # report_period_min. + report_period_min: 1965 period_max: 2022 # statscan profile overrides to 2023 projection_max: 2050 # rate tables and smoking histories projected to this year cohort_min: 1920 diff --git a/docs/protocol/full-protocol.qmd b/docs/protocol/full-protocol.qmd index 9be40aa..c8442dc 100644 --- a/docs/protocol/full-protocol.qmd +++ b/docs/protocol/full-protocol.qmd @@ -2,9 +2,12 @@ title: "A Canadian Smoking Histories Model: a study protocol to generate smoking cohorts from 1940 and project to 2050" status: "Draft" version-summary: - date: "2026-08-27" - version: "0.4.1" + date: "2026-08-28" + version: "0.4.2" version-history: + - version: "0.4.2" + date: "2026-08-28" + description: "Estimation window aligned with the data (remediation task 1.2). The APC models are estimated on person-years from the calendar year in which the earliest birth cohort (1920) reaches the initiation floor (1933 in the PUMF; 1928 in the Master files) to the last survey year. Previously the person-years at risk began in 1965 while initiation events before 1965 were kept, so those cells had no one at risk without an event. Reported rates and reconstructed histories still start in 1965 (section 3.4.1)." - version: "0.4.1" date: "2026-08-27" description: "Two previously open study decisions ratified (public issue #5). The PUMF initiation-age floor stays at 13: the lowest PUMF category (ages 5 to 11, midpoint 8) is too coarse to date initiation events below that age, so initiation is modelled from 13 in the PUMF, while an established smoker who reports starting below 13 is still followed for cessation from the category midpoint of 8; Master files use exact ages with a floor of 8 (section 3.3). The first CCHS cycle is assigned survey year 2001 for cohort assignment (section 3.2). Editorial revisions from PI review of the Word render (wording and plain-language edits throughout; no methodological change). Ethics statement rewritten to describe secondary analysis of de-identified data and the Statistics Canada Open Licence. Study team updated (co-led with BC Cancer Research Institute; Canadian Partnership Against Cancer named among knowledge users). Fixed NHIS typo. Document production: Word rendering restored as a docstyle subproject (docs/protocol/_quarto.yml) with protocol-specific spacing; reporting-guideline placeholder moved so the sensitivity-analysis list renders as a list; redundant page break before Background removed; the three references previously rendered by citeproc (Holford 2006; Rao, Wu and Yue 1992; Statistics Canada 2023) added to the Zotero citation store so the reference list is complete and in one place." @@ -153,7 +156,7 @@ The CSHM uses a two-stage analytical framework. In the first stage, we estimate The model estimates transitions between three smoking states: **never**, **current**, and **former**. Each person is in exactly one state at each age. This is the framework of Holford et al. (2014) [@Holford_AJPM_2014], which has been applied in several jurisdictions, and of Manuel et al. (2020) [@Manuel_HR_2020] for Ontario using the CCHS. This study follows the Manuel et al. implementation because it uses the same survey. A person enters the current state (initiation) at the age they smoked their first whole cigarette, provided they meet the study definition of an ever-smoker. A person leaves the current state (cessation) when they stop smoking completely; stopping daily smoking while continuing to smoke occasionally is not cessation. Starting to smoke daily and the number of cigarettes smoked per day are treated as characteristics of current smokers (section 3.4.4), not as separate transitions. -The model operates in one-year steps and assigns each person at most one smoking period, from initiation to cessation. A person's cessation risk begins at the age they entered the current state. The primary definition of cessation is the most recent quit that lasted at least two years. People who quit less than two years before the survey have not yet met this definition: they are classified as current smokers at the survey, and in the cessation model they contribute time at risk up to their reported quit age, after which they are censored, with no cessation event recorded. This follows the Holford and Manuel implementations. When initiation and cessation are reported at the same whole-year age, the data cannot show which came first within the year. We will state the rule for these cases in the analysis specification before fitting the models, and we will run a prespecified sensitivity analysis that excludes or interval-censors them. The CCHS records one quit per person, so relapse cannot be modelled directly; its influence is examined in sensitivity analyses (section 3.5). +The APC models are estimated on person-years from the calendar year in which the earliest birth cohort (1920) reaches the initiation floor (1933 in the PUMF, where the floor is 13; 1928 in the Master files, where it is 8) to the last survey year. Every initiation event therefore has people at risk in the same age, period and cohort cell; a window that started later would keep the early events while removing the years at risk before them. Reported rates and reconstructed histories start in 1965; the earlier years are used for estimation only. The model operates in one-year steps and assigns each person at most one smoking period, from initiation to cessation. A person's cessation risk begins at the age they entered the current state. The primary definition of cessation is the most recent quit that lasted at least two years. People who quit less than two years before the survey have not yet met this definition: they are classified as current smokers at the survey, and in the cessation model they contribute time at risk up to their reported quit age, after which they are censored, with no cessation event recorded. This follows the Holford and Manuel implementations. When initiation and cessation are reported at the same whole-year age, the data cannot show which came first within the year. We will state the rule for these cases in the analysis specification before fitting the models, and we will run a prespecified sensitivity analysis that excludes or interval-censors them. The CCHS records one quit per person, so relapse cannot be modelled directly; its influence is examined in sensitivity analyses (section 3.5). The target population is the Canadian household population covered by the CCHS. For immigrants, the years before immigration are excluded from the reconstructed history (section 3.3), so no one contributes time before entering the Canadian population. Respondents whose age at initiation is missing or implausible are handled by multiple imputation (section 3.4.2 and Appendix D); they are not excluded, and they are not reclassified as never-smokers. diff --git a/docs/workflow/7-apc-data-preparation.qmd b/docs/workflow/7-apc-data-preparation.qmd index 90f52f0..f867791 100644 --- a/docs/workflow/7-apc-data-preparation.qmd +++ b/docs/workflow/7-apc-data-preparation.qmd @@ -91,6 +91,8 @@ The spline basis columns are built in Stage 8 (`build_spline_basis()`), not stor **Mortality adjustment.** Ever-smokers are less likely to survive to survey date than never-smokers, creating survival bias. No correction is applied yet: `cfg$apc$mortality_method` is `"none"`, the `weight` column holds the survey weight alone, and the datasets carry an `estimand_note` attribute stating that results describe respondents who survived to be surveyed. MPoRT (primary) and Peto (sensitivity) are not yet implemented (protocol section 3.4.5). +**Estimation window (task 1.2).** The estimation window starts in the calendar year the earliest cohort (`apc.cohort_min`, 1920) reaches the initiation floor: `apc_period_min(cfg)` = 1933 in the PUMF and 1928 in the Master files. It ends at `apc.period_max`. The window is derived, not configured: setting it later (the former 1965) removed the person-years at risk for initiation events that happened before 1965 while keeping the events, so those cells had events equal to population. `build_initiation_data()` stops if any event falls outside the window. Rate tables and reported histories start at `apc.report_period_min` (1965); the earlier years are used for estimation only. The cessation model is bounded by each person's entry age and `apc.cohort_min`. + **Cessation model: who is included and when time at risk begins.** The cessation model includes established smokers: people who have smoked 100 or more cigarettes in their lifetime (`smoked_100_lifetime`), whatever their current smoking pattern. The event is stopping smoking completely, dated by `time_quit_smoking_complete`. Each person's time at risk begins at their own age at first whole cigarette; there is no fixed minimum age. The entry age must lie within the range for `age_first_cigarette` in the variable-details worksheet for the respondent's database (the same check the initiation model applies); an entry age outside it is excluded and counted as `excluded_entry_invalid`. The initiation floor (`initiation_floor(cfg)`, `apc.initiation_floor_age`) applies to the initiation model only. A quit that has lasted fewer than `cfg$apc$cessation_durability_years` (2) years at the survey does not count as cessation: the person is a current smoker at the survey and their time at risk ends at the quit age without an event. A person who started and stopped at the same age contributes one year at risk with the event in it. People with a missing smoking status or a missing 100-cigarette answer are counted before the established-smoker filter (`excluded_status_missing`, `excluded_criterion_missing`). People with a missing entry age or missing quit timing (including the whole 2001 cycle and the 2022 PUMF cycle, where the stopped-completely timing is not available) are excluded here and counted in the `cessation_diagnostics` attribute; imputation (task 1.8c) will supply their values. See `docs/development/estimand-specification.md`. **Four separate data frames, not one.** Men and women are modelled separately (consistent with Manuel et al. 2020). Initiation and cessation are separate models. Keeping four data frames lets Stage 8 fit all four models in parallel using `{targets}` branching. diff --git a/tests/testthat/test-apc-data.R b/tests/testthat/test-apc-data.R index 5180334..5d71942 100644 --- a/tests/testthat/test-apc-data.R +++ b/tests/testthat/test-apc-data.R @@ -78,10 +78,39 @@ test_that("build_initiation_data: denominator period within [period_min, period_ result <- build_initiation_data(data[data[[sex_col]] == 1, ], cfg, TEST_DETAILS) denom <- result[result$event == 0, ] - expect_true(all(denom$period >= cfg$apc$period_min)) + expect_true(all(denom$period >= apc_period_min(cfg))) expect_true(all(denom$period <= cfg$apc$period_max)) }) +test_that("apc_period_min: cohort_min + initiation floor; a configured period_min is an error", { + cfg <- config::get() + expect_equal(apc_period_min(cfg), cfg$apc$cohort_min + initiation_floor(cfg)) + cfg$apc$period_min <- 1965 + expect_error(apc_period_min(cfg), "period_min is set") +}) + +test_that("initiation (task 1.2): no event cell without person-years at risk; 0 <= events <= population", { + cfg <- config::get() + data <- make_apc_test_data(cfg) + sex_col <- survey_var(cfg, "sex") + result <- build_initiation_data(data[data[[sex_col]] == 1, ], cfg, TEST_DETAILS) + floor_age <- initiation_floor(cfg) + # Every event at an age above the floor has the same cohort at risk in the years before it + events <- result[result$event == 1 & result$age > floor_age, ] + denom <- result[result$event == 0, ] + has_support <- mapply(function(co, a) any(denom$cohort == co & denom$age == a - 1L), events$cohort, events$age) + expect_true(all(has_support)) + # Aggregated cells: weighted events never exceed weighted population (the event row is a trial) + key <- paste(result$age, result$cohort) + d <- tapply(result$weight * result$event, key, sum) + pop <- tapply(result$weight, key, sum) + expect_true(all(d >= 0 & d <= pop)) + # Nothing before the window; the window starts when cohort_min reaches the floor + expect_true(all(result$period >= apc_period_min(cfg))) + expect_equal(apc_period_min(cfg), cfg$apc$cohort_min + floor_age) +}) + + cess_cfg <- function() { cfg <- config::get() cfg$apc$mortality_method <- "none" @@ -486,3 +515,13 @@ test_that("per_respondent_range fails closed on unknown cycle codes and unresolv # ... but a non-missing value with no worksheet range is an error, not a pass. expect_error(outside_range(c(16, NA), rng), "no range in the variable-details worksheet") }) + +test_that("initiation (task 1.2): an early-cohort initiation before 1965 keeps its risk years", { + cfg <- config::get() + # Born 1925, first cigarette at 15 (1940), surveyed 2005 at 80 + p <- one_person(cfg, status = 1, age_first = 15, age = 80, survey_year = 2005) + out <- build_initiation_data(p, cfg, TEST_DETAILS) + expect_equal(out$period[out$event == 1], 1940) + expect_equal(sort(out$age[out$event == 0]), seq(initiation_floor(cfg), 14)) + expect_true(all(out$period >= apc_period_min(cfg))) +}) From 81e11d68630524bfa59f6183313c4e02613bff19 Mon Sep 17 00:00:00 2001 From: Doug Manuel Date: Fri, 28 Aug 2026 09:55:59 -0400 Subject: [PATCH 2/8] Protocol v0.4.2: age and time ranges made explicit (section 3.4.1); age-range conventions note Reference conventions (Holford 2014, Manuel 2020): initiation from 8, cessation from 15, two-year durability, age-85 ceiling. Where this study differs: PUMF initiation floor of 13 as a data limit; cessation risk from each person's own entry age, reported from 15. Reported-value ranges come from the cchsflow recoding rules and are not analysis limits. docs/development/age-range-conventions.md records the sources and the derived ranges. --- docs/development/age-range-conventions.md | 58 +++++++++++++++++++++++ docs/protocol/full-protocol.qmd | 6 ++- 2 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 docs/development/age-range-conventions.md diff --git a/docs/development/age-range-conventions.md b/docs/development/age-range-conventions.md new file mode 100644 index 0000000..ea9965a --- /dev/null +++ b/docs/development/age-range-conventions.md @@ -0,0 +1,58 @@ +# Age and duration ranges: what the protocol says, what the references used, what the worksheet gives + +Working note, 2026-08-28. Written so the protocol can be made explicit about minimum and maximum ages for initiation and cessation, and so the cchsflow variable-details rules can be checked against those conventions. Nothing here is a decision; the decisions are marked as open. + +## 1. Where the numbers come from today + +Three different things set an age or duration limit in the pipeline, and they are not the same: + +| Kind | Where it lives | Examples | +|---|---|---| +| **Analysis decision** | `config.yml` under `apc:` | `initiation_floor_age` (PUMF 13, Master 8); `cessation_durability_years` (2); `cohort_min` (1920); estimation window start derived as `cohort_min + initiation_floor_age` (task 1.2) | +| **Variable range** (what a reported value can be) | derived from the variable-details worksheet by `details_range()` / `survey_range()`; never in config | age at first cigarette 8–51 (PUMF midpoints); years since quitting 0.5–5 (PUMF 2003+) | +| **Reference-study convention** | the protocol (should be), citing Holford and Manuel | initiation zero before 8; cessation zero before 15; age 85 ceiling | + +The second row was settled on 2026-08-27 (Sol round 1 on PR #7, PI decision): the worksheet is the reference for min and max; config points at it (`range: variable_details`); a non-missing value with no worksheet range stops the pipeline. + +## 2. What the reference studies used + +| Convention | Holford et al. 2014 (AJPM; NCI SHG) | Manuel et al. 2020 (Health Reports; Ontario CCHS) | SAS reference (Modeling2013.sas) | +|---|---|---|---| +| Initiation probability zero before | age 8 | age 8 | `if age lt 8 ... delete` (initiation risk set) | +| Cessation probability zero before | age 15 | age 15 | `if age lt 15 ... delete` (cessation risk set); `if age ge 15` | +| No person-year after | survey age | survey date | `age gt surveyage then delete` | +| Upper age | NHIS ages 18–84; cessation probability held at the age-85 level above 85; histories reported to age 99 | CCHS aged 12+ | — | +| Durable cessation | quit at least 2 years before interview; otherwise observation truncated at the quit age | same rule (Holford lineage) | — | +| Missing age sentinel | — | — | 101 | +| Cohorts | 1890–2035 estimated; before-1920 intensity constrained to 1920 | 1920s cohort earliest reported | — | + +Meza et al. 2023 (AJPM, race/ethnicity SHG) follows the same Holford construction; its stated limits were not extracted in this pass (the full text is in Zotero, item 9LGL8F9F) — check before citing. + +## 3. Where the current protocol and code differ from those conventions + +1. **Cessation floor.** Holford and Manuel set cessation probability to zero before age 15; the SAS reference drops cessation person-years before 15. The current code (task 1.3) starts each person's cessation risk at their own age at first cigarette with **no fixed minimum**, and the protocol (v0.4.1 §3.4.1) says so. This is a deliberate departure argued in the adjudication (a floor never substitutes for person-specific entry), but the protocol does not say that it departs from the reference studies or why. **Open:** keep person-specific entry (and say so), or add a 15-year reporting floor for comparability with Manuel 2020, or both (estimate person-specific; report from 15). +2. **Initiation floor.** Holford/Manuel: 8. Current: 8 in Master, 13 in PUMF (issue #5 decision; the PUMF 5–11 category is too coarse). Protocol §3.3 records this. Consistent, but the protocol should state the reference value (8) and that 13 is a PUMF data limit, not a methodological choice. +3. **Upper age.** No protocol statement. The PUMF age variable is grouped and capped (`DHHGAGE_cont` 13–85 for 2001–2018; 14.5–75 for 2019–20 and 2022, where the top category is 65+ with midpoint 75). Holford held cessation at the age-85 level beyond 85 and reported to 99. **Open:** state the maximum modelled age (85 seems the natural choice given the CCHS top code) and how rates above it are carried. +4. **Maximum age at initiation / duration of smoking.** Reference studies have no explicit maximum; "few initiate after 30" is an observation, not a rule. The worksheet gives 8–51 for age at first cigarette in the PUMF (grouped midpoints; the top group is 50+ → 51) — a reporting range, not a limit. **Open:** whether the protocol should state a maximum initiation age or leave it to the data. +5. **Quit duration.** PUMF top group "3 or more years" (midpoint 5) for 2003–2014 makes long-term former smokers quit too late; refinable with SMKG09C (2007–14) and SMKDGSTP (2015–22) — see `phase1-1.9-1.10-investigation.md`. Holford's "at least 2 years" durability rule is implementable in every cycle since the 2–3 / 3+ boundary exists. +6. **The 2019–20 and 2022 PUMF age variable** (five broad groups) cannot place a person within a year of age; the APC model is limited to 2001–2018 for age-specific estimation (`project_age_variable_constraints` memory). The protocol should say this. + +## 4. What the worksheet currently derives (PUMF, `details_range()`) + +| Variable | 2001 | 2003–2014 | 2015–16 | 2017–18 | 2019–20 | 2022 | +|---|---|---|---|---|---|---| +| `age_first_cigarette` | 8–51 | 8–51 | 8–47 | 8–51 | 8–51 | none (no rule) | +| `age_start_smoking` | 8–51 | 8–51 | 8–51 | 8–51 | none | none | +| `time_quit_smoking_complete` | none (not asked) | 0.5–5 | 0.5–5 | 0.5–5 | 0.5–5 | none | +| `time_quit_smoking_daily` | 0.5–15 | 0.5–5 | 0.5–5 | 0.5–5 | 0.5–5 | none | +| `DHHGAGE_cont` | 13–85 | 13–85 | 13–85 | 13–85 | 14.5–75 | 14.5–75 | + +Two rows point at worksheet gaps rather than data facts: `age_first_cigarette` has no `cchs2022_p` rule although its feeder `SMKG01C_cont` does, and 2015–16 tops out at 47 (a different midpoint set) — both worth a cchsflow issue. + +## 5. Suggested protocol text (for discussion, not applied) + +A short "Age and time ranges" paragraph in §3.4.1, in this order: (a) reference conventions (Holford 2014; Manuel 2020): initiation from 8, cessation from 15, histories to 85 (Holford to 99), durable cessation two years; (b) what this study does and where it differs (person-specific cessation entry; PUMF initiation floor 13 as a data limit; maximum modelled age 85 with rates carried forward); (c) that reported-value ranges come from the CCHS recoding rules in cchsflow (variable details), are checked per cycle, and are not analysis limits. + +## 6. Status of the PI's protocol edits (2026-08-28) + +At 09:31 the protocol QMD was saved in the working copy on branch `fix/phase1-1.2-initiation-window`, but `git status` shows no change: either the edits are not yet saved in Positron, or they were made to the rendered Word file (`docs/protocol/output/full-protocol.docx`, rendered 09:25). Check before editing the QMD. diff --git a/docs/protocol/full-protocol.qmd b/docs/protocol/full-protocol.qmd index c8442dc..f628d38 100644 --- a/docs/protocol/full-protocol.qmd +++ b/docs/protocol/full-protocol.qmd @@ -7,7 +7,7 @@ version-summary: version-history: - version: "0.4.2" date: "2026-08-28" - description: "Estimation window aligned with the data (remediation task 1.2). The APC models are estimated on person-years from the calendar year in which the earliest birth cohort (1920) reaches the initiation floor (1933 in the PUMF; 1928 in the Master files) to the last survey year. Previously the person-years at risk began in 1965 while initiation events before 1965 were kept, so those cells had no one at risk without an event. Reported rates and reconstructed histories still start in 1965 (section 3.4.1)." + description: "Estimation window aligned with the data (remediation task 1.2). The APC models are estimated on person-years from the calendar year in which the earliest birth cohort (1920) reaches the initiation floor (1933 in the PUMF; 1928 in the Master files) to the last survey year. Previously the person-years at risk began in 1965 while initiation events before 1965 were kept, so those cells had no one at risk without an event. Reported rates and reconstructed histories still start in 1965. Age and time ranges made explicit (section 3.4.1): reference conventions of Holford et al. (2014) and Manuel et al. (2020) (initiation from 8, cessation from 15, two-year durability, age-85 ceiling), the two places this study differs (PUMF initiation floor of 13 as a data limit; cessation risk from each person's own entry age, reported from 15), and that reported-value ranges come from the cchsflow recoding rules and are not analysis limits." - version: "0.4.1" date: "2026-08-27" description: "Two previously open study decisions ratified (public issue #5). The PUMF initiation-age floor stays at 13: the lowest PUMF category (ages 5 to 11, midpoint 8) is too coarse to date initiation events below that age, so initiation is modelled from 13 in the PUMF, while an established smoker who reports starting below 13 is still followed for cessation from the category midpoint of 8; Master files use exact ages with a floor of 8 (section 3.3). The first CCHS cycle is assigned survey year 2001 for cohort assignment (section 3.2). Editorial revisions from PI review of the Word render (wording and plain-language edits throughout; no methodological change). Ethics statement rewritten to describe secondary analysis of de-identified data and the Statistics Canada Open Licence. Study team updated (co-led with BC Cancer Research Institute; Canadian Partnership Against Cancer named among knowledge users). Fixed NHIS typo. Document production: Word rendering restored as a docstyle subproject (docs/protocol/_quarto.yml) with protocol-specific spacing; reporting-guideline placeholder moved so the sensitivity-analysis list renders as a list; redundant page break before Background removed; the three references previously rendered by citeproc (Holford 2006; Rao, Wu and Yue 1992; Statistics Canada 2023) added to the Zotero citation store so the reference list is complete and in one place." @@ -156,7 +156,9 @@ The CSHM uses a two-stage analytical framework. In the first stage, we estimate The model estimates transitions between three smoking states: **never**, **current**, and **former**. Each person is in exactly one state at each age. This is the framework of Holford et al. (2014) [@Holford_AJPM_2014], which has been applied in several jurisdictions, and of Manuel et al. (2020) [@Manuel_HR_2020] for Ontario using the CCHS. This study follows the Manuel et al. implementation because it uses the same survey. A person enters the current state (initiation) at the age they smoked their first whole cigarette, provided they meet the study definition of an ever-smoker. A person leaves the current state (cessation) when they stop smoking completely; stopping daily smoking while continuing to smoke occasionally is not cessation. Starting to smoke daily and the number of cigarettes smoked per day are treated as characteristics of current smokers (section 3.4.4), not as separate transitions. -The APC models are estimated on person-years from the calendar year in which the earliest birth cohort (1920) reaches the initiation floor (1933 in the PUMF, where the floor is 13; 1928 in the Master files, where it is 8) to the last survey year. Every initiation event therefore has people at risk in the same age, period and cohort cell; a window that started later would keep the early events while removing the years at risk before them. Reported rates and reconstructed histories start in 1965; the earlier years are used for estimation only. The model operates in one-year steps and assigns each person at most one smoking period, from initiation to cessation. A person's cessation risk begins at the age they entered the current state. The primary definition of cessation is the most recent quit that lasted at least two years. People who quit less than two years before the survey have not yet met this definition: they are classified as current smokers at the survey, and in the cessation model they contribute time at risk up to their reported quit age, after which they are censored, with no cessation event recorded. This follows the Holford and Manuel implementations. When initiation and cessation are reported at the same whole-year age, the data cannot show which came first within the year. We will state the rule for these cases in the analysis specification before fitting the models, and we will run a prespecified sensitivity analysis that excludes or interval-censors them. The CCHS records one quit per person, so relapse cannot be modelled directly; its influence is examined in sensitivity analyses (section 3.5). +The APC models are estimated on person-years from the calendar year in which the earliest birth cohort (1920) reaches the initiation floor (1933 in the PUMF, where the floor is 13; 1928 in the Master files, where it is 8) to the last survey year. Every initiation event therefore has people at risk in the same age, period and cohort cell; a window that started later would keep the early events while removing the years at risk before them. Reported rates and reconstructed histories start in 1965; the earlier years are used for estimation only. **Age and time ranges.** The reference studies use the same limits. Holford et al. (2014) [@Holford_AJPM_2014] and Manuel et al. (2020) [@Manuel_HR_2020] set the probability of initiation to zero before age 8 and the probability of cessation to zero before age 15, count a quit as cessation only when it has lasted at least two years at the survey, and follow histories to age 85 (Holford et al. report to age 99, holding cessation rates at the age-85 level beyond 85). This study keeps the two-year rule and the age-85 ceiling: the CCHS reports ages to 85 in the PUMF, and rates for ages above 85 are held at the age-85 values. It differs from the reference studies in two places. First, initiation is modelled from age 8 in the Master files but from age 13 in the PUMF, because the lowest PUMF age category (5 to 11 years) cannot place a first cigarette within a year (section 3.3); the PUMF floor is a data limit, not a change of method. Second, cessation risk begins at each person's own age at first whole cigarette rather than at a fixed age of 15, so that no one contributes time at risk of quitting before they smoked; for comparison with Manuel et al., cessation rates are reported from age 15. The ranges of reported values (age at first cigarette, years since quitting, age at survey) come from the CCHS recoding rules in cchsflow (the variable-details worksheet) and are checked for each survey cycle; they describe what respondents can report, and they are not analysis limits. The 2019--2020 and 2022 PUMF cycles report age in five broad groups, so age-specific estimation uses the 2001 to 2017--2018 cycles; the later cycles inform cross-sectional prevalence only. + +The model operates in one-year steps and assigns each person at most one smoking period, from initiation to cessation. A person's cessation risk begins at the age they entered the current state. The primary definition of cessation is the most recent quit that lasted at least two years. People who quit less than two years before the survey have not yet met this definition: they are classified as current smokers at the survey, and in the cessation model they contribute time at risk up to their reported quit age, after which they are censored, with no cessation event recorded. This follows the Holford and Manuel implementations. When initiation and cessation are reported at the same whole-year age, the data cannot show which came first within the year. We will state the rule for these cases in the analysis specification before fitting the models, and we will run a prespecified sensitivity analysis that excludes or interval-censors them. The CCHS records one quit per person, so relapse cannot be modelled directly; its influence is examined in sensitivity analyses (section 3.5). The target population is the Canadian household population covered by the CCHS. For immigrants, the years before immigration are excluded from the reconstructed history (section 3.3), so no one contributes time before entering the Canadian population. Respondents whose age at initiation is missing or implausible are handled by multiple imputation (section 3.4.2 and Appendix D); they are not excluded, and they are not reclassified as never-smokers. From 5989efeaef06a5f000a607b59b3c0fbb460078c6 Mon Sep 17 00:00:00 2001 From: Doug Manuel Date: Fri, 28 Aug 2026 09:56:28 -0400 Subject: [PATCH 3/8] Protocol wording; reporting limits (report_cessation_min_age, max_age) in config for Stage 9; note updated --- config.yml | 6 ++++++ docs/development/age-range-conventions.md | 2 +- docs/protocol/full-protocol.qmd | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/config.yml b/config.yml index 8b808b1..382261b 100644 --- a/config.yml +++ b/config.yml @@ -271,6 +271,12 @@ default: # risk in the same cells (task 1.2). Rate tables and reported histories start at # report_period_min. report_period_min: 1965 + # Reporting limits for rate tables and histories (protocol v0.4.2, section 3.4.1): + # cessation rates are reported from age 15 for comparison with Manuel et al. (2020), + # although cessation risk is estimated from each person's own entry age; rates for ages + # above max_age are held at the max_age values (Holford et al. 2014). Stage 9 consumes these. + report_cessation_min_age: 15 + max_age: 85 period_max: 2022 # statscan profile overrides to 2023 projection_max: 2050 # rate tables and smoking histories projected to this year cohort_min: 1920 diff --git a/docs/development/age-range-conventions.md b/docs/development/age-range-conventions.md index ea9965a..191171b 100644 --- a/docs/development/age-range-conventions.md +++ b/docs/development/age-range-conventions.md @@ -1,6 +1,6 @@ # Age and duration ranges: what the protocol says, what the references used, what the worksheet gives -Working note, 2026-08-28. Written so the protocol can be made explicit about minimum and maximum ages for initiation and cessation, and so the cchsflow variable-details rules can be checked against those conventions. Nothing here is a decision; the decisions are marked as open. +Working note, 2026-08-28. Written so the protocol can be made explicit about minimum and maximum ages for initiation and cessation, and so the cchsflow variable-details rules can be checked against those conventions. Update, later the same day: protocol v0.4.2 (section 3.4.1, PR #9) resolves the open items in section 3 as follows: cessation risk stays person-specific and is reported from age 15; the PUMF initiation floor of 13 is stated as a data limit against the reference value of 8; the maximum modelled age is 85 with rates held at the age-85 values above it; reported-value ranges are stated to come from the cchsflow recoding rules. `apc.report_cessation_min_age` and `apc.max_age` were added to `config.yml` for Stage 9. Items 4 (maximum initiation age: left to the data) and 5 (quit-duration grouping: cchsflow fix, task 1.10) remain. ## 1. Where the numbers come from today diff --git a/docs/protocol/full-protocol.qmd b/docs/protocol/full-protocol.qmd index f628d38..8644be2 100644 --- a/docs/protocol/full-protocol.qmd +++ b/docs/protocol/full-protocol.qmd @@ -156,7 +156,7 @@ The CSHM uses a two-stage analytical framework. In the first stage, we estimate The model estimates transitions between three smoking states: **never**, **current**, and **former**. Each person is in exactly one state at each age. This is the framework of Holford et al. (2014) [@Holford_AJPM_2014], which has been applied in several jurisdictions, and of Manuel et al. (2020) [@Manuel_HR_2020] for Ontario using the CCHS. This study follows the Manuel et al. implementation because it uses the same survey. A person enters the current state (initiation) at the age they smoked their first whole cigarette, provided they meet the study definition of an ever-smoker. A person leaves the current state (cessation) when they stop smoking completely; stopping daily smoking while continuing to smoke occasionally is not cessation. Starting to smoke daily and the number of cigarettes smoked per day are treated as characteristics of current smokers (section 3.4.4), not as separate transitions. -The APC models are estimated on person-years from the calendar year in which the earliest birth cohort (1920) reaches the initiation floor (1933 in the PUMF, where the floor is 13; 1928 in the Master files, where it is 8) to the last survey year. Every initiation event therefore has people at risk in the same age, period and cohort cell; a window that started later would keep the early events while removing the years at risk before them. Reported rates and reconstructed histories start in 1965; the earlier years are used for estimation only. **Age and time ranges.** The reference studies use the same limits. Holford et al. (2014) [@Holford_AJPM_2014] and Manuel et al. (2020) [@Manuel_HR_2020] set the probability of initiation to zero before age 8 and the probability of cessation to zero before age 15, count a quit as cessation only when it has lasted at least two years at the survey, and follow histories to age 85 (Holford et al. report to age 99, holding cessation rates at the age-85 level beyond 85). This study keeps the two-year rule and the age-85 ceiling: the CCHS reports ages to 85 in the PUMF, and rates for ages above 85 are held at the age-85 values. It differs from the reference studies in two places. First, initiation is modelled from age 8 in the Master files but from age 13 in the PUMF, because the lowest PUMF age category (5 to 11 years) cannot place a first cigarette within a year (section 3.3); the PUMF floor is a data limit, not a change of method. Second, cessation risk begins at each person's own age at first whole cigarette rather than at a fixed age of 15, so that no one contributes time at risk of quitting before they smoked; for comparison with Manuel et al., cessation rates are reported from age 15. The ranges of reported values (age at first cigarette, years since quitting, age at survey) come from the CCHS recoding rules in cchsflow (the variable-details worksheet) and are checked for each survey cycle; they describe what respondents can report, and they are not analysis limits. The 2019--2020 and 2022 PUMF cycles report age in five broad groups, so age-specific estimation uses the 2001 to 2017--2018 cycles; the later cycles inform cross-sectional prevalence only. +The APC models are estimated on person-years from the calendar year in which the earliest birth cohort (1920) reaches the initiation floor (1933 in the PUMF, where the floor is 13; 1928 in the Master files, where it is 8) to the last survey year. Every initiation event therefore has people at risk in the same age, period and cohort cell; a window that started later would keep the early events while removing the years at risk before them. Reported rates and reconstructed histories start in 1965; the earlier years are used for estimation only. **Age and time ranges.** The reference studies use the same limits. Holford et al. (2014) [@Holford_AJPM_2014] and Manuel et al. (2020) [@Manuel_HR_2020] set the probability of initiation to zero before age 8 and the probability of cessation to zero before age 15, count a quit as cessation only when it has lasted at least two years at the survey, and follow histories to age 85 (Holford et al. report to age 99, holding cessation rates at the age-85 level beyond 85). This study keeps the two-year rule and the age-85 ceiling: the CCHS reports ages to 85 in the PUMF, and rates for ages above 85 are held at the age-85 values. It differs from the reference studies in two places. First, initiation is modelled from age 8 in the Master files but from age 13 in the PUMF, because the lowest PUMF age category (5 to 11 years) cannot place a first cigarette within a year (section 3.3); the PUMF floor is a data limit; the method is the same in both files. Second, cessation risk begins at each person's own age at first whole cigarette rather than at a fixed age of 15, so that no one contributes time at risk of quitting before they smoked; for comparison with Manuel et al., cessation rates are reported from age 15. The ranges of reported values (age at first cigarette, years since quitting, age at survey) come from the CCHS recoding rules in cchsflow (the variable-details worksheet) and are checked for each survey cycle; they describe what respondents can report, and they are not analysis limits. The 2019--2020 and 2022 PUMF cycles report age in five broad groups, so age-specific estimation uses the 2001 to 2017--2018 cycles; the later cycles inform cross-sectional prevalence only. The model operates in one-year steps and assigns each person at most one smoking period, from initiation to cessation. A person's cessation risk begins at the age they entered the current state. The primary definition of cessation is the most recent quit that lasted at least two years. People who quit less than two years before the survey have not yet met this definition: they are classified as current smokers at the survey, and in the cessation model they contribute time at risk up to their reported quit age, after which they are censored, with no cessation event recorded. This follows the Holford and Manuel implementations. When initiation and cessation are reported at the same whole-year age, the data cannot show which came first within the year. We will state the rule for these cases in the analysis specification before fitting the models, and we will run a prespecified sensitivity analysis that excludes or interval-censors them. The CCHS records one quit per person, so relapse cannot be modelled directly; its influence is examined in sensitivity analyses (section 3.5). From 627cd3a534e23c0a464265008a93c0297d7807a8 Mon Sep 17 00:00:00 2001 From: Doug Manuel Date: Fri, 28 Aug 2026 10:19:38 -0400 Subject: [PATCH 4/8] Protocol and workflow wording per the style guide (no antithesis, plain verbs; version entry as sentences) --- docs/development/age-range-conventions.md | 6 +++--- docs/protocol/full-protocol.qmd | 4 ++-- docs/workflow/7-apc-data-preparation.qmd | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/development/age-range-conventions.md b/docs/development/age-range-conventions.md index 191171b..113dd0c 100644 --- a/docs/development/age-range-conventions.md +++ b/docs/development/age-range-conventions.md @@ -30,10 +30,10 @@ Meza et al. 2023 (AJPM, race/ethnicity SHG) follows the same Holford constructio ## 3. Where the current protocol and code differ from those conventions -1. **Cessation floor.** Holford and Manuel set cessation probability to zero before age 15; the SAS reference drops cessation person-years before 15. The current code (task 1.3) starts each person's cessation risk at their own age at first cigarette with **no fixed minimum**, and the protocol (v0.4.1 §3.4.1) says so. This is a deliberate departure argued in the adjudication (a floor never substitutes for person-specific entry), but the protocol does not say that it departs from the reference studies or why. **Open:** keep person-specific entry (and say so), or add a 15-year reporting floor for comparability with Manuel 2020, or both (estimate person-specific; report from 15). -2. **Initiation floor.** Holford/Manuel: 8. Current: 8 in Master, 13 in PUMF (issue #5 decision; the PUMF 5–11 category is too coarse). Protocol §3.3 records this. Consistent, but the protocol should state the reference value (8) and that 13 is a PUMF data limit, not a methodological choice. +1. **Cessation floor.** Holford and Manuel set cessation probability to zero before age 15; the SAS reference drops cessation person-years before 15. The current code (task 1.3) starts each person's cessation risk at their own age at first cigarette with **no fixed minimum**, and the protocol (v0.4.1 §3.4.1) says so. This is a deliberate departure argued in the adjudication (a floor cannot replace person-specific entry), but the protocol does not say that it departs from the reference studies or why. **Open:** keep person-specific entry (and say so), or add a 15-year reporting floor for comparability with Manuel 2020, or both (estimate person-specific; report from 15). +2. **Initiation floor.** Holford/Manuel: 8. Current: 8 in Master, 13 in PUMF (issue #5 decision; the PUMF 5–11 category is too coarse). Protocol §3.3 records this. Consistent, but the protocol should state the reference value (8) and that 13 is a PUMF data limit rather than a methodological choice. 3. **Upper age.** No protocol statement. The PUMF age variable is grouped and capped (`DHHGAGE_cont` 13–85 for 2001–2018; 14.5–75 for 2019–20 and 2022, where the top category is 65+ with midpoint 75). Holford held cessation at the age-85 level beyond 85 and reported to 99. **Open:** state the maximum modelled age (85 seems the natural choice given the CCHS top code) and how rates above it are carried. -4. **Maximum age at initiation / duration of smoking.** Reference studies have no explicit maximum; "few initiate after 30" is an observation, not a rule. The worksheet gives 8–51 for age at first cigarette in the PUMF (grouped midpoints; the top group is 50+ → 51) — a reporting range, not a limit. **Open:** whether the protocol should state a maximum initiation age or leave it to the data. +4. **Maximum age at initiation / duration of smoking.** Reference studies have no explicit maximum; "few initiate after 30" is an observation rather than a rule. The worksheet gives 8–51 for age at first cigarette in the PUMF (grouped midpoints; the top group is 50+ → 51) — a reporting range rather than a limit. **Open:** whether the protocol should state a maximum initiation age or leave it to the data. 5. **Quit duration.** PUMF top group "3 or more years" (midpoint 5) for 2003–2014 makes long-term former smokers quit too late; refinable with SMKG09C (2007–14) and SMKDGSTP (2015–22) — see `phase1-1.9-1.10-investigation.md`. Holford's "at least 2 years" durability rule is implementable in every cycle since the 2–3 / 3+ boundary exists. 6. **The 2019–20 and 2022 PUMF age variable** (five broad groups) cannot place a person within a year of age; the APC model is limited to 2001–2018 for age-specific estimation (`project_age_variable_constraints` memory). The protocol should say this. diff --git a/docs/protocol/full-protocol.qmd b/docs/protocol/full-protocol.qmd index 8644be2..c4731e4 100644 --- a/docs/protocol/full-protocol.qmd +++ b/docs/protocol/full-protocol.qmd @@ -7,7 +7,7 @@ version-summary: version-history: - version: "0.4.2" date: "2026-08-28" - description: "Estimation window aligned with the data (remediation task 1.2). The APC models are estimated on person-years from the calendar year in which the earliest birth cohort (1920) reaches the initiation floor (1933 in the PUMF; 1928 in the Master files) to the last survey year. Previously the person-years at risk began in 1965 while initiation events before 1965 were kept, so those cells had no one at risk without an event. Reported rates and reconstructed histories still start in 1965. Age and time ranges made explicit (section 3.4.1): reference conventions of Holford et al. (2014) and Manuel et al. (2020) (initiation from 8, cessation from 15, two-year durability, age-85 ceiling), the two places this study differs (PUMF initiation floor of 13 as a data limit; cessation risk from each person's own entry age, reported from 15), and that reported-value ranges come from the cchsflow recoding rules and are not analysis limits." + description: "Estimation window start derived from the data (remediation task 1.2). The APC models are estimated on person-years from the calendar year in which the earliest birth cohort (1920) reaches the initiation floor (1933 in the PUMF; 1928 in the Master files) to the last survey year. Previously the person-years at risk began in 1965 while initiation events before 1965 were kept, so those cells held events and no one at risk who had not yet started. Reported rates and reconstructed histories still start in 1965. Section 3.4.1 now states the age and time ranges: the conventions of Holford et al. (2014) and Manuel et al. (2020) (initiation from age 8, cessation from age 15, two-year durability, age-85 ceiling); the two places this study differs (a PUMF initiation floor of 13, which is a data limit, and cessation risk from each person's own entry age, reported from age 15); and the source of reported-value ranges (the cchsflow recoding rules), which are separate from analysis limits." - version: "0.4.1" date: "2026-08-27" description: "Two previously open study decisions ratified (public issue #5). The PUMF initiation-age floor stays at 13: the lowest PUMF category (ages 5 to 11, midpoint 8) is too coarse to date initiation events below that age, so initiation is modelled from 13 in the PUMF, while an established smoker who reports starting below 13 is still followed for cessation from the category midpoint of 8; Master files use exact ages with a floor of 8 (section 3.3). The first CCHS cycle is assigned survey year 2001 for cohort assignment (section 3.2). Editorial revisions from PI review of the Word render (wording and plain-language edits throughout; no methodological change). Ethics statement rewritten to describe secondary analysis of de-identified data and the Statistics Canada Open Licence. Study team updated (co-led with BC Cancer Research Institute; Canadian Partnership Against Cancer named among knowledge users). Fixed NHIS typo. Document production: Word rendering restored as a docstyle subproject (docs/protocol/_quarto.yml) with protocol-specific spacing; reporting-guideline placeholder moved so the sensitivity-analysis list renders as a list; redundant page break before Background removed; the three references previously rendered by citeproc (Holford 2006; Rao, Wu and Yue 1992; Statistics Canada 2023) added to the Zotero citation store so the reference list is complete and in one place." @@ -156,7 +156,7 @@ The CSHM uses a two-stage analytical framework. In the first stage, we estimate The model estimates transitions between three smoking states: **never**, **current**, and **former**. Each person is in exactly one state at each age. This is the framework of Holford et al. (2014) [@Holford_AJPM_2014], which has been applied in several jurisdictions, and of Manuel et al. (2020) [@Manuel_HR_2020] for Ontario using the CCHS. This study follows the Manuel et al. implementation because it uses the same survey. A person enters the current state (initiation) at the age they smoked their first whole cigarette, provided they meet the study definition of an ever-smoker. A person leaves the current state (cessation) when they stop smoking completely; stopping daily smoking while continuing to smoke occasionally is not cessation. Starting to smoke daily and the number of cigarettes smoked per day are treated as characteristics of current smokers (section 3.4.4), not as separate transitions. -The APC models are estimated on person-years from the calendar year in which the earliest birth cohort (1920) reaches the initiation floor (1933 in the PUMF, where the floor is 13; 1928 in the Master files, where it is 8) to the last survey year. Every initiation event therefore has people at risk in the same age, period and cohort cell; a window that started later would keep the early events while removing the years at risk before them. Reported rates and reconstructed histories start in 1965; the earlier years are used for estimation only. **Age and time ranges.** The reference studies use the same limits. Holford et al. (2014) [@Holford_AJPM_2014] and Manuel et al. (2020) [@Manuel_HR_2020] set the probability of initiation to zero before age 8 and the probability of cessation to zero before age 15, count a quit as cessation only when it has lasted at least two years at the survey, and follow histories to age 85 (Holford et al. report to age 99, holding cessation rates at the age-85 level beyond 85). This study keeps the two-year rule and the age-85 ceiling: the CCHS reports ages to 85 in the PUMF, and rates for ages above 85 are held at the age-85 values. It differs from the reference studies in two places. First, initiation is modelled from age 8 in the Master files but from age 13 in the PUMF, because the lowest PUMF age category (5 to 11 years) cannot place a first cigarette within a year (section 3.3); the PUMF floor is a data limit; the method is the same in both files. Second, cessation risk begins at each person's own age at first whole cigarette rather than at a fixed age of 15, so that no one contributes time at risk of quitting before they smoked; for comparison with Manuel et al., cessation rates are reported from age 15. The ranges of reported values (age at first cigarette, years since quitting, age at survey) come from the CCHS recoding rules in cchsflow (the variable-details worksheet) and are checked for each survey cycle; they describe what respondents can report, and they are not analysis limits. The 2019--2020 and 2022 PUMF cycles report age in five broad groups, so age-specific estimation uses the 2001 to 2017--2018 cycles; the later cycles inform cross-sectional prevalence only. +The APC models are estimated on person-years from the calendar year in which the earliest birth cohort (1920) reaches the initiation floor (1933 in the PUMF, where the floor is 13; 1928 in the Master files, where it is 8) to the last survey year. Every initiation event therefore has people at risk in the same age, period and cohort cell. A window that started later would keep the early events and remove the years at risk before them. Reported rates and reconstructed histories start in 1965; the earlier years are used for estimation only. **Age and time ranges.** The reference studies use the same limits. Holford et al. (2014) [@Holford_AJPM_2014] and Manuel et al. (2020) [@Manuel_HR_2020] set the probability of initiation to zero before age 8 and the probability of cessation to zero before age 15, count a quit as cessation only when it has lasted at least two years at the survey, and follow histories to age 85 (Holford et al. report to age 99, holding cessation rates at the age-85 level beyond 85). This study keeps the two-year rule and the age-85 ceiling: the CCHS reports ages to 85 in the PUMF, and rates for ages above 85 are held at the age-85 values. It differs from the reference studies in two places. First, initiation is modelled from age 8 in the Master files but from age 13 in the PUMF, because the lowest PUMF age category (5 to 11 years) cannot place a first cigarette within a year (section 3.3); the PUMF floor is a data limit; the method is the same in both files. Second, cessation risk begins at each person's own age at first whole cigarette rather than at a fixed age of 15, so that no one contributes time at risk of quitting before they smoked; for comparison with Manuel et al., cessation rates are reported from age 15. The ranges of reported values (age at first cigarette, years since quitting, age at survey) come from the CCHS recoding rules in cchsflow (the variable-details worksheet) and are checked for each survey cycle; they describe what respondents can report; the analysis limits are stated above. The 2019--2020 and 2022 PUMF cycles report age in five broad groups, so age-specific estimation uses the 2001 to 2017--2018 cycles; the later cycles are used for cross-sectional prevalence only. The model operates in one-year steps and assigns each person at most one smoking period, from initiation to cessation. A person's cessation risk begins at the age they entered the current state. The primary definition of cessation is the most recent quit that lasted at least two years. People who quit less than two years before the survey have not yet met this definition: they are classified as current smokers at the survey, and in the cessation model they contribute time at risk up to their reported quit age, after which they are censored, with no cessation event recorded. This follows the Holford and Manuel implementations. When initiation and cessation are reported at the same whole-year age, the data cannot show which came first within the year. We will state the rule for these cases in the analysis specification before fitting the models, and we will run a prespecified sensitivity analysis that excludes or interval-censors them. The CCHS records one quit per person, so relapse cannot be modelled directly; its influence is examined in sensitivity analyses (section 3.5). diff --git a/docs/workflow/7-apc-data-preparation.qmd b/docs/workflow/7-apc-data-preparation.qmd index f867791..a34370e 100644 --- a/docs/workflow/7-apc-data-preparation.qmd +++ b/docs/workflow/7-apc-data-preparation.qmd @@ -91,7 +91,7 @@ The spline basis columns are built in Stage 8 (`build_spline_basis()`), not stor **Mortality adjustment.** Ever-smokers are less likely to survive to survey date than never-smokers, creating survival bias. No correction is applied yet: `cfg$apc$mortality_method` is `"none"`, the `weight` column holds the survey weight alone, and the datasets carry an `estimand_note` attribute stating that results describe respondents who survived to be surveyed. MPoRT (primary) and Peto (sensitivity) are not yet implemented (protocol section 3.4.5). -**Estimation window (task 1.2).** The estimation window starts in the calendar year the earliest cohort (`apc.cohort_min`, 1920) reaches the initiation floor: `apc_period_min(cfg)` = 1933 in the PUMF and 1928 in the Master files. It ends at `apc.period_max`. The window is derived, not configured: setting it later (the former 1965) removed the person-years at risk for initiation events that happened before 1965 while keeping the events, so those cells had events equal to population. `build_initiation_data()` stops if any event falls outside the window. Rate tables and reported histories start at `apc.report_period_min` (1965); the earlier years are used for estimation only. The cessation model is bounded by each person's entry age and `apc.cohort_min`. +**Estimation window (task 1.2).** The estimation window starts in the calendar year the earliest cohort (`apc.cohort_min`, 1920) reaches the initiation floor: `apc_period_min(cfg)` = 1933 in the PUMF and 1928 in the Master files. It ends at `apc.period_max`. The window is derived from `apc.cohort_min` and the initiation floor and has no config key of its own. Setting it later (the former 1965) removed the person-years at risk for initiation events before 1965 while keeping the events, so those cells had events equal to population. `build_initiation_data()` stops if any event falls outside the window. Rate tables and reported histories start at `apc.report_period_min` (1965); the earlier years are used for estimation only. The cessation model is bounded by each person's entry age and `apc.cohort_min`. **Cessation model: who is included and when time at risk begins.** The cessation model includes established smokers: people who have smoked 100 or more cigarettes in their lifetime (`smoked_100_lifetime`), whatever their current smoking pattern. The event is stopping smoking completely, dated by `time_quit_smoking_complete`. Each person's time at risk begins at their own age at first whole cigarette; there is no fixed minimum age. The entry age must lie within the range for `age_first_cigarette` in the variable-details worksheet for the respondent's database (the same check the initiation model applies); an entry age outside it is excluded and counted as `excluded_entry_invalid`. The initiation floor (`initiation_floor(cfg)`, `apc.initiation_floor_age`) applies to the initiation model only. A quit that has lasted fewer than `cfg$apc$cessation_durability_years` (2) years at the survey does not count as cessation: the person is a current smoker at the survey and their time at risk ends at the quit age without an event. A person who started and stopped at the same age contributes one year at risk with the event in it. People with a missing smoking status or a missing 100-cigarette answer are counted before the established-smoker filter (`excluded_status_missing`, `excluded_criterion_missing`). People with a missing entry age or missing quit timing (including the whole 2001 cycle and the 2022 PUMF cycle, where the stopped-completely timing is not available) are excluded here and counted in the `cessation_diagnostics` attribute; imputation (task 1.8c) will supply their values. See `docs/development/estimand-specification.md`. From b0ad94d3fb8cc476169ec3a83f85c0911b0058bb Mon Sep 17 00:00:00 2001 From: Doug Manuel Date: Fri, 28 Aug 2026 10:21:55 -0400 Subject: [PATCH 5/8] Protocol: plain verbs throughout (uses, records, imputes, harmonizes) in place of operates, ensures, enables, handles, captures --- docs/protocol/full-protocol.qmd | 46 ++++++++++++++++----------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/docs/protocol/full-protocol.qmd b/docs/protocol/full-protocol.qmd index c4731e4..39dfb9d 100644 --- a/docs/protocol/full-protocol.qmd +++ b/docs/protocol/full-protocol.qmd @@ -7,13 +7,13 @@ version-summary: version-history: - version: "0.4.2" date: "2026-08-28" - description: "Estimation window start derived from the data (remediation task 1.2). The APC models are estimated on person-years from the calendar year in which the earliest birth cohort (1920) reaches the initiation floor (1933 in the PUMF; 1928 in the Master files) to the last survey year. Previously the person-years at risk began in 1965 while initiation events before 1965 were kept, so those cells held events and no one at risk who had not yet started. Reported rates and reconstructed histories still start in 1965. Section 3.4.1 now states the age and time ranges: the conventions of Holford et al. (2014) and Manuel et al. (2020) (initiation from age 8, cessation from age 15, two-year durability, age-85 ceiling); the two places this study differs (a PUMF initiation floor of 13, which is a data limit, and cessation risk from each person's own entry age, reported from age 15); and the source of reported-value ranges (the cchsflow recoding rules), which are separate from analysis limits." + description: "Estimation window start derived from the data (remediation task 1.2). The APC models are estimated on person-years from the calendar year in which the earliest birth cohort (1920) reaches the initiation floor (1933 in the PUMF; 1928 in the Master files) to the last survey year. Previously the person-years at risk began in 1965 while initiation events before 1965 were kept, so those cells held events and no one at risk who had not yet started. Reported rates and reconstructed histories still start in 1965. Section 3.4.1 now states the age and time ranges: the conventions of Holford et al. (2014) and Manuel et al. (2020) (initiation from age 8, cessation from age 15, two-year durability, age-85 ceiling); the two places this study differs (a PUMF initiation floor of 13, which is a data limit, and cessation risk from each person's own entry age, reported from age 15); and the source of reported-value ranges (the cchsflow recoding rules), which are separate from analysis limits. Wording throughout replaced with plain verbs (uses, records, imputes, harmonizes) in place of operates, ensures, enables, handles and captures." - version: "0.4.1" date: "2026-08-27" description: "Two previously open study decisions ratified (public issue #5). The PUMF initiation-age floor stays at 13: the lowest PUMF category (ages 5 to 11, midpoint 8) is too coarse to date initiation events below that age, so initiation is modelled from 13 in the PUMF, while an established smoker who reports starting below 13 is still followed for cessation from the category midpoint of 8; Master files use exact ages with a floor of 8 (section 3.3). The first CCHS cycle is assigned survey year 2001 for cohort assignment (section 3.2). Editorial revisions from PI review of the Word render (wording and plain-language edits throughout; no methodological change). Ethics statement rewritten to describe secondary analysis of de-identified data and the Statistics Canada Open Licence. Study team updated (co-led with BC Cancer Research Institute; Canadian Partnership Against Cancer named among knowledge users). Fixed NHIS typo. Document production: Word rendering restored as a docstyle subproject (docs/protocol/_quarto.yml) with protocol-specific spacing; reporting-guideline placeholder moved so the sensitivity-analysis list renders as a list; redundant page break before Background removed; the three references previously rendered by citeproc (Holford 2006; Rao, Wu and Yue 1992; Statistics Canada 2023) added to the Zotero citation store so the reference list is complete and in one place." - version: "0.4.0" date: "2026-08-07" - description: "Methodological amendments following the review (2026-08-07). New section 3.4.1 defines the smoking states and transitions: never, current, and former, following Holford et al. (2014) and Manuel et al. (2020); initiation is the first whole cigarette; cessation is stopping smoking completely; daily smoking and intensity are characteristics of current smokers; one smoking spell per person, with cessation risk starting at the age of entry; a two-year definition of cessation; the rule for same-age initiation and cessation to be set before fitting, with a sensitivity analysis. Section 3.4.3: the split of the linear trend between age, period, and cohort is stated as an explicit assumption (cohort linear trend set to zero, following Manuel et al. 2020; the alternative allocation is a sensitivity analysis); the rules that extend the model for projection are distinguished from the rule that fixes it; the spline basis is saved at fitting and reused; each fitted model is checked before use (Holford 2006). Section 3.5: uncertainty from CCHS bootstrap replicate weights in the Master-file analysis, combined across imputations and carried through to the rate tables; an approximate bootstrap for public-use analyses; simulated weights (MockData) test code only. Section 3.4.5: MPoRT remains the primary mortality adjustment if it passes life-table and simulation checks; where the adjustment enters the calculation to be settled before implementation; unadjusted results labelled as estimates among survivors. Section 3.4.2 and Appendix D: imputation follows the structure of the smoking questions, with ordering rules applied within the procedure, every imputed dataset analysed, and the number of imputations set by stability (at least five). Validation: within the CCHS, using held-out cycles and recall-consistency checks; no comparison with other surveys in this version, with reasons given. Subsections of 3.4 renumbered." + description: "Methodological amendments following the review (2026-08-07). New section 3.4.1 defines the smoking states and transitions: never, current, and former, following Holford et al. (2014) and Manuel et al. (2020); initiation is the first whole cigarette; cessation is stopping smoking completely; daily smoking and intensity are characteristics of current smokers; one smoking period per person, with cessation risk starting at the age of entry; a two-year definition of cessation; the rule for same-age initiation and cessation to be set before fitting, with a sensitivity analysis. Section 3.4.3: the split of the linear trend between age, period, and cohort is stated as an explicit assumption (cohort linear trend set to zero, following Manuel et al. 2020; the alternative allocation is a sensitivity analysis); the rules that extend the model for projection are distinguished from the rule that fixes it; the spline basis is saved at fitting and reused; each fitted model is checked before use (Holford 2006). Section 3.5: uncertainty from CCHS bootstrap replicate weights in the Master-file analysis, combined across imputations and carried through to the rate tables; an approximate bootstrap for public-use analyses; simulated weights (MockData) test code only. Section 3.4.5: MPoRT remains the primary mortality adjustment if it passes life-table and simulation checks; where the adjustment enters the calculation to be settled before implementation; unadjusted results labelled as estimates among survivors. Section 3.4.2 and Appendix D: imputation follows the structure of the smoking questions, with ordering rules applied within the procedure, every imputed dataset analysed, and the number of imputations set by stability (at least five). Validation: within the CCHS, using held-out cycles and recall-consistency checks; no comparison with other surveys in this version, with reasons given. Subsections of 3.4 renumbered." - version: "0.3.2" date: "2026-06-10" description: "Imputation specification refined after implementation review (Appendix D): NA(c) cycle-level absence is not imputed in the base pipeline (the taxonomy previously implied it was) -- extending the where matrix to NA(c) is the documented mechanism, gated on the Phase 4 sensitivity analysis (imputed values shifted by set amounts) with the RDC Master files as the external check. Added the predictor-matrix specification: variables with structural missingness may be imputed but are not used as predictors (mice excludes rows with missing predictors, so structural-NA predictors made item non-response in other variables unpredictable). Derived-variable recomputation (pack-years) implemented as specified." @@ -44,7 +44,7 @@ version-history: **Background** -Understanding historical and projected smoking behaviour across Canadian populations informs the evaluation of tobacco control policies and smoking-attributable disease burden. While the U.S. Smoking History Generator (SHG) supports cancer risk modelling, a pan-Canadian equivalent does not yet exist. +Historical and projected smoking behaviour across Canadian populations is needed to evaluate tobacco control policies and to estimate the smoking-attributable disease burden. While the U.S. Smoking History Generator (SHG) supports cancer risk modelling, a pan-Canadian equivalent does not yet exist. **Objectives** @@ -62,11 +62,11 @@ The model will be publicly accessible and used for policy evaluation and disease # 1. Background -Smoking behaviour varies across birth cohorts in ways that affect projections of tobacco-attributable disease and the evaluation of tobacco control policies in Canada. While smoking prevalence has declined since the mid-20th century, tobacco remains the leading cause of preventable disease and death in Canada, killing approximately 48,000 Canadians annually and costing over $11 billion per year in healthcare, lost productivity, and other costs [@HealthCanada_SmokingMortality_2024; @CSUCH_2023]. The smoking health burden is concentrated among lower-income and other equity-deserving populations, with lung cancer incidence nearly three times higher among Canadians with the lowest educational attainment [@mitra2015]. National trends mask heterogeneity across birth cohorts and provinces, driven by evolving social norms and regional tobacco control measures. +Smoking behaviour varies across birth cohorts in ways that affect projections of tobacco-attributable disease and the evaluation of tobacco control policies in Canada. While smoking prevalence has declined since the mid-20th century, tobacco remains the leading cause of preventable disease and death in Canada, killing approximately 48,000 Canadians annually and costing over $11 billion per year in healthcare, lost productivity, and other costs [@HealthCanada_SmokingMortality_2024; @CSUCH_2023]. The smoking health burden is concentrated among lower-income and other equity-deserving populations, with lung cancer incidence nearly three times higher among Canadians with the lowest educational attainment [@mitra2015]. National trends hide differences between birth cohorts and provinces that follow from changing social norms and regional tobacco control measures. The Smoking History Generator (SHG) framework, developed by the National Cancer Institute (NCI) CISNET Smoking Working Group, characterizes these patterns in the United States using Age-Period-Cohort (APC) models [@Holford_AJPM_2014]. This approach was adapted for Ontario [@Manuel_HR_2020], demonstrating that Canadian Community Health Survey (CCHS) data can be used to reconstruct birth-cohort-specific smoking histories from 1965 to 2013. A pan-Canadian equivalent covering all provinces and territories has not yet been developed. -Three gaps motivate the CSHM. First, Canada’s tobacco control landscape occurs at both the national and regional levels, with provincial variation in taxation, smoke-free legislation, and cessation support. Second, Canadian smoking initiation and cessation patterns differ from those in other countries, particularly in the timing of peak prevalence and the rate of decline among younger cohorts. Third, Canadian health policy models (e.g., OncoSim, POHEM, SimSmoke) rely on behaviour transition parameters from the 1994--2004 National Population Health Survey (NPHS), now over 20 years old, with no planned replacement [@hennessy2015; @gauvreau2017; @chaiton2021]. These parameters no longer reflect contemporary patterns, particularly among younger cohorts, immigrant populations, and lower-income groups. The CCHS [@beland2002], with over 1.4 million respondents and annual data collection since 2001, provides an unparalleled opportunity to address this gap. The methods and infrastructure developed here build on those of other similar studies [@kopasker2023; @vasquezlavin2022]. This study addresses these gaps by introducing an open-source framework for generating smoking histories across all Canadian jurisdictions. +Three gaps motivate the CSHM. First, tobacco control in Canada is set at both the national and regional levels, with provincial variation in taxation, smoke-free legislation, and cessation support. Second, Canadian smoking initiation and cessation patterns differ from those in other countries, particularly in the timing of peak prevalence and the rate of decline among younger cohorts. Third, Canadian health policy models (e.g., OncoSim, POHEM, SimSmoke) rely on behaviour transition parameters from the 1994--2004 National Population Health Survey (NPHS), now over 20 years old, with no planned replacement [@hennessy2015; @gauvreau2017; @chaiton2021]. These parameters no longer reflect contemporary patterns, particularly among younger cohorts, immigrant populations, and lower-income groups. The CCHS [@beland2002], with over 1.4 million respondents and annual data collection since 2001, provides an unparalleled opportunity to address this gap. The methods and infrastructure developed here build on those of other similar studies [@kopasker2023; @vasquezlavin2022]. This study addresses these gaps by introducing an open-source framework for generating smoking histories across all Canadian jurisdictions. # 2. Objectives @@ -95,15 +95,15 @@ The conceptual framework for the CSHM is structured as a discrete-time Markov st - **Current Smoker** (daily or occasional use) - **Former Smoker** (quit for $\ge$ 1 year). -Individuals transition between these states according to annual probabilities of **initiation** (from Never to Current) and **cessation** (from Current to Former). To ensure precision in tobacco "dose" estimation, the Current Smoker compartment is further characterized by smoking intensity (cigarettes per day). +Individuals transition between these states according to annual probabilities of **initiation** (from Never to Current) and **cessation** (from Current to Former). To estimate tobacco "dose", the Current Smoker compartment is further described by smoking intensity (cigarettes per day). > ISPOR-SMDM: Model structure; STRESS: Conceptualization The APC framework separates temporal trends into three distinct components: age effects (developmental influences), period effects (e.g., policy shifts or social norms), and cohort effects (generational differences). This framework is used for three reasons: -1. **Identifiability:** It addresses the fundamental APC identity ($cohort = period - age$) through cubic splines, enabling the estimation of unique generational trends. -2. **Historical reconstruction:** It enables the back-calculation of smoking rates for birth cohorts, using current survivors to understand historical patterns. -3. **Survival bias mitigation:** It provides a method to correct for differential mortality (the "healthy survivor" effect), ensuring that estimated historical initiation and cessation rates reflect the original population rather than only those who survived to be surveyed. +1. **Identifiability:** It addresses the fundamental APC identity ($cohort = period - age$) through cubic splines, which allows generational trends to be estimated. +2. **Historical reconstruction:** It back-calculates smoking rates for birth cohorts from the histories of current survivors. +3. **Survival bias mitigation:** It corrects for differential mortality (the "healthy survivor" effect), so that estimated historical initiation and cessation rates reflect the original population rather than only those who survived to be surveyed. > ISPOR-SMDM: Analytical approach; GATHER: Methods overview @@ -124,9 +124,9 @@ See [Appendix C: Data availability and computational environment] for data acces ## 3.3 Exposure ascertainment -We will use the `cchsflow` R package (version 3.0) to harmonize smoking-related variables across all CCHS cycles. This library provides a standardized metadata-driven approach to recoding survey responses into unified variables, ensuring consistency despite changes in survey questions and coding over time. +We will use the `cchsflow` R package (version 3.0) to harmonize smoking-related variables across all CCHS cycles. This library provides a standardized metadata-driven approach to recoding survey responses into unified variables, which keeps coding consistent despite changes in survey questions over time. -Compared to the US National Health Interview Survey (NHIS) used in existing CISNET models, the CCHS provides more granular data on non-daily smoking. While the NHIS categorizes current smokers as "every day" or "some days," the CCHS captures more detailed information about occasional smokers. The NHIS has fewer annual respondents (approximately 27,000 for the NHIS versus 65,000 for the CCHS), but with an earlier start date for tobacco questions (1965 for NHIS versus 2001 for the CCHS) [@backinger2008]. The potential effect of these differences are more statistically stable earlier birth cohorts for NHIS, and greater statistical power for regional estimates using the CCHS. +Compared to the US National Health Interview Survey (NHIS) used in existing CISNET models, the CCHS provides more granular data on non-daily smoking. While the NHIS categorizes current smokers as "every day" or "some days," the CCHS records more detail about occasional smokers. The NHIS has fewer annual respondents (approximately 27,000 for the NHIS versus 65,000 for the CCHS), but with an earlier start date for tobacco questions (1965 for NHIS versus 2001 for the CCHS) [@backinger2008]. The potential effect of these differences are more statistically stable earlier birth cohorts for NHIS, and greater statistical power for regional estimates using the CCHS. Key smoking parameters to be extracted and harmonized include: @@ -144,7 +144,7 @@ The following sociodemographic covariates will also be extracted for use in impu - **Education:** Three-category classification (less than high school, high school graduate, postsecondary graduate), used in imputation models. Note that education variables differ across cycles and between PUMF and Master files; harmonization will follow the `cchsflow` approach using `EDUDR03`. - **Province:** Used for provincial stratification and regional imputation models (`GEOGPRV`). -Inconsistent or biologically implausible responses (e.g., age at initiation greater than current age) will be identified and handled during the data cleaning stage. Missing data on smoking history parameters will be addressed using multiple imputation by chained equations (MICE), incorporating the sociodemographic and health-related predictors listed above. +Inconsistent or biologically implausible responses (e.g., age at initiation greater than current age) will be identified during the data cleaning stage. Missing data on smoking history parameters will be addressed using multiple imputation by chained equations (MICE), incorporating the sociodemographic and health-related predictors listed above. > STROBE: Statistical methods; GATHER: Data processing @@ -158,9 +158,9 @@ The model estimates transitions between three smoking states: **never**, **curre The APC models are estimated on person-years from the calendar year in which the earliest birth cohort (1920) reaches the initiation floor (1933 in the PUMF, where the floor is 13; 1928 in the Master files, where it is 8) to the last survey year. Every initiation event therefore has people at risk in the same age, period and cohort cell. A window that started later would keep the early events and remove the years at risk before them. Reported rates and reconstructed histories start in 1965; the earlier years are used for estimation only. **Age and time ranges.** The reference studies use the same limits. Holford et al. (2014) [@Holford_AJPM_2014] and Manuel et al. (2020) [@Manuel_HR_2020] set the probability of initiation to zero before age 8 and the probability of cessation to zero before age 15, count a quit as cessation only when it has lasted at least two years at the survey, and follow histories to age 85 (Holford et al. report to age 99, holding cessation rates at the age-85 level beyond 85). This study keeps the two-year rule and the age-85 ceiling: the CCHS reports ages to 85 in the PUMF, and rates for ages above 85 are held at the age-85 values. It differs from the reference studies in two places. First, initiation is modelled from age 8 in the Master files but from age 13 in the PUMF, because the lowest PUMF age category (5 to 11 years) cannot place a first cigarette within a year (section 3.3); the PUMF floor is a data limit; the method is the same in both files. Second, cessation risk begins at each person's own age at first whole cigarette rather than at a fixed age of 15, so that no one contributes time at risk of quitting before they smoked; for comparison with Manuel et al., cessation rates are reported from age 15. The ranges of reported values (age at first cigarette, years since quitting, age at survey) come from the CCHS recoding rules in cchsflow (the variable-details worksheet) and are checked for each survey cycle; they describe what respondents can report; the analysis limits are stated above. The 2019--2020 and 2022 PUMF cycles report age in five broad groups, so age-specific estimation uses the 2001 to 2017--2018 cycles; the later cycles are used for cross-sectional prevalence only. -The model operates in one-year steps and assigns each person at most one smoking period, from initiation to cessation. A person's cessation risk begins at the age they entered the current state. The primary definition of cessation is the most recent quit that lasted at least two years. People who quit less than two years before the survey have not yet met this definition: they are classified as current smokers at the survey, and in the cessation model they contribute time at risk up to their reported quit age, after which they are censored, with no cessation event recorded. This follows the Holford and Manuel implementations. When initiation and cessation are reported at the same whole-year age, the data cannot show which came first within the year. We will state the rule for these cases in the analysis specification before fitting the models, and we will run a prespecified sensitivity analysis that excludes or interval-censors them. The CCHS records one quit per person, so relapse cannot be modelled directly; its influence is examined in sensitivity analyses (section 3.5). +The model uses one-year steps and assigns each person at most one smoking period, from initiation to cessation. A person's cessation risk begins at the age they entered the current state. The primary definition of cessation is the most recent quit that lasted at least two years. People who quit less than two years before the survey have not yet met this definition: they are classified as current smokers at the survey, and in the cessation model they contribute time at risk up to their reported quit age, after which they are censored, with no cessation event recorded. This follows the Holford and Manuel implementations. When initiation and cessation are reported at the same whole-year age, the data cannot show which came first within the year. We will state the rule for these cases in the analysis specification before fitting the models, and we will run a prespecified sensitivity analysis that excludes or interval-censors them. The CCHS records one quit per person, so relapse cannot be modelled directly; its influence is examined in sensitivity analyses (section 3.5). -The target population is the Canadian household population covered by the CCHS. For immigrants, the years before immigration are excluded from the reconstructed history (section 3.3), so no one contributes time before entering the Canadian population. Respondents whose age at initiation is missing or implausible are handled by multiple imputation (section 3.4.2 and Appendix D); they are not excluded, and they are not reclassified as never-smokers. +The target population is the Canadian household population covered by the CCHS. For immigrants, the years before immigration are excluded from the reconstructed history (section 3.3), so no one contributes time before entering the Canadian population. Respondents whose age at initiation is missing or implausible are included through multiple imputation (section 3.4.2 and Appendix D); they are not excluded, and they are not reclassified as never-smokers. > ISPOR-SMDM: Model structure; STROBE: Variables @@ -169,7 +169,7 @@ The target population is the Canadian household population covered by the CCHS. Analysis datasets will be produced through a standardized pipeline. 1. **Cleaning:** Distribution checks and truncation of extreme values for continuous variables (e.g., smoking intensity). -2. **Imputation:** Item non-response (don't know or refused; tagged NA(b)) on smoking status, initiation age, and cessation timing will be handled with multiple imputation by chained equations (MICE), with at least *m* = 5 imputations. The final number of imputations will be chosen so that the rate-table estimates are stable across repeated runs. Only item non-response is imputed. Values that are missing by design are kept as missing: not applicable (NA(a), for example initiation age for never-smokers) and not asked in that cycle (NA(c)). Imputation follows the structure of the smoking questions. Where a person's smoking status is itself missing, status is imputed first; initiation age and quit timing are then imputed only if the imputed status makes those questions applicable, using the other smoking-history variables as predictors. Ordering rules (first cigarette no later than cessation; cessation no later than survey age) are applied within the imputation procedure, not corrected afterward. The imputation model includes the survey design variables (cycle, sampling weight), the sociodemographic variables (age, sex, province, education), and the smoking-history variables, making it at least as detailed as the analysis models. It also includes auxiliary variables (marital status, alcohol use, body mass index, self-rated general and mental health, life stress, community belonging, chronic conditions, and physical activity), which improve imputation and describe the study base for planned related studies. Derived variables such as pack-years are recalculated from the imputed variables rather than imputed directly. Every completed dataset is carried through person-year expansion and model fitting, and estimates are pooled across imputations (section 3.5). The full specification, including the diagnostic and sensitivity plan, is in [Appendix D: Missing data and imputation plan](appendix-imputation.qmd). +2. **Imputation:** Item non-response (don't know or refused; tagged NA(b)) on smoking status, initiation age, and cessation timing will be imputed with multiple imputation by chained equations (MICE), with at least *m* = 5 imputations. The final number of imputations will be chosen so that the rate-table estimates are stable across repeated runs. Only item non-response is imputed. Values that are missing by design are kept as missing: not applicable (NA(a), for example initiation age for never-smokers) and not asked in that cycle (NA(c)). Imputation follows the structure of the smoking questions. Where a person's smoking status is itself missing, status is imputed first; initiation age and quit timing are then imputed only if the imputed status makes those questions applicable, using the other smoking-history variables as predictors. Ordering rules (first cigarette no later than cessation; cessation no later than survey age) are applied within the imputation procedure, not corrected afterward. The imputation model includes the survey design variables (cycle, sampling weight), the sociodemographic variables (age, sex, province, education), and the smoking-history variables, making it at least as detailed as the analysis models. It also includes auxiliary variables (marital status, alcohol use, body mass index, self-rated general and mental health, life stress, community belonging, chronic conditions, and physical activity), which improve imputation and describe the study base for planned related studies. Derived variables such as pack-years are recalculated from the imputed variables rather than imputed directly. Every completed dataset is carried through person-year expansion and model fitting, and estimates are pooled across imputations (section 3.5). The full specification, including the diagnostic and sensitivity plan, is in [Appendix D: Missing data and imputation plan](appendix-imputation.qmd). 3. **Descriptive statistics:** Baseline characteristics will be reported pre-imputation (Table 1a), which discloses the amount and type of missing data, and post-imputation (Table 1b), averaged across the *m* completed datasets. Both tables present unweighted n with survey-weighted percentages (and weighted median/IQR for continuous variables) -- the unweighted n reflects the information content of each cell, while the weighted statistics describe the population; a fully unweighted variant is provided in the appendix. Table 1 will include stratification for sex and survey year. Descriptive statistics will be examined for potential discontinuities across CCHS design eras (2001--2005, 2007--2014, 2015--2021, 2022+), which reflect major changes to the survey frame, recruitment, and collection mode [@gagne2017; @backinger2008]. Although smoking variables can be harmonized across cycles, changes to the sampling frame and mode may introduce measurement differences that are not fully correctable through harmonization alone [@chen2020joinpoint]. ### 3.4.3 Age-period-cohort modelling @@ -193,11 +193,11 @@ Knot placement for the splines follows established standards: We will use a dual approach to characterize smoking intensity (cigarettes per day; CPD): 1. **Simple descriptives:** We will first calculate mean CPD and intensity distributions by age, sex, and survey year. This descriptive analysis will identify broad temporal shifts and assess whether intensity has remained stagnant across cohorts, as observed in other jurisdictions such as Brazil [@Tam_AJPM_2023]. -2. **APC intensity model:** We will fit an APC model to estimate the expected CPD by birth cohort. These parameters are the "tobacco dose" inputs for the simulation stage, enabling the reconstruction of pack-year histories. For occasional smokers, we will apply a standardized CPD adjustment based on their reported frequency of use. +2. **APC intensity model:** We will fit an APC model to estimate the expected CPD by birth cohort. These parameters are the "tobacco dose" inputs for the simulation stage, from which pack-year histories are reconstructed. For occasional smokers, we will apply a standardized CPD adjustment based on their reported frequency of use. ### 3.4.5 Mortality adjustment -To address survival bias (ever-smokers having lower survival to survey date than never-smokers), we will apply mortality adjustments using the Mortality Population Risk Tool (MPoRT) [@Manuel_HR_2020]. MPoRT weights are adjusted for age, sex, smoking status, years since quitting, and immigration status. For each respondent, the one-year probability of death for each historical year up to the survey date is calculated; the survival-bias weight is the proportion of ever-smokers who would have died before the survey date. This adjustment ensures that the reconstructed historical prevalence reflects the original population rather than only the survivors, following the approach of Manuel et al. (2020) [@Manuel_HR_2020]. +To address survival bias (ever-smokers having lower survival to survey date than never-smokers), we will apply mortality adjustments using the Mortality Population Risk Tool (MPoRT) [@Manuel_HR_2020]. MPoRT weights are adjusted for age, sex, smoking status, years since quitting, and immigration status. For each respondent, the one-year probability of death for each historical year up to the survey date is calculated; the survival-bias weight is the proportion of ever-smokers who would have died before the survey date. With this adjustment the reconstructed historical prevalence reflects the original population rather than only the survivors, following the approach of Manuel et al. (2020) [@Manuel_HR_2020]. The exact form of the adjustment will be documented and reviewed before it is implemented. The main open question is where the adjustment enters the calculation: as an adjustment to each respondent's weight before the APC models are fitted (as described above), or as a correction to the fitted transition probabilities afterward (as in the original Ontario code). The two approaches do not necessarily yield the same answer, and whichever is chosen must apply the correction only once. Before use, the adjustment will be checked in three ways: predicted deaths by age, sex, and calendar year compared with Canadian life tables; the size and stability of the adjustment factors, with limits set in advance; and recovery of known rates from simulated cohorts in which smokers die at higher rates (section 3.5). MPoRT remains the primary method if it passes these checks [@Manuel_HR_2020]. Until an adjustment is in place, unadjusted results are labelled as estimates among survivors and are not presented as birth-cohort smoking histories. @@ -216,7 +216,7 @@ Estimated initiation, cessation, and intensity rates will be extrapolated to 205 ### 3.4.7 Provincial and territorial estimates -Separate APC models will be estimated for each province and territory, stratified by sex. Provinces and territories with limited sample sizes may require pooled CCHS cycles or adjusted model constraints to ensure stable estimates. The simulation engine runs on individual CCHS respondents, enabling regional projections that are consistent with national aggregates. +Separate APC models will be estimated for each province and territory, stratified by sex. Provinces and territories with limited sample sizes may require pooled CCHS cycles or adjusted model constraints for stable estimates. The simulation engine runs on individual CCHS respondents, which gives regional projections that are consistent with national aggregates. > GATHER: Statistical methods; ISPOR-SMDM: Subgroup analysis @@ -238,7 +238,7 @@ The model will be validated through: 4. **Sensitivity testing and measurement error:** - **Self-report bias:** Assessing the impact of misclassification using Simulation Extrapolation (SIMEX) informed by CHMS biomarker (cotinine) data. Corrected parameters will be propagated through the simulation engine to quantify the impact on final projections. Consideration will also be given to sensitivity testing for measurement differences attributable to CCHS survey design changes across eras. - - **Recall bias and relapse:** Quantifying the impact of CCHS’s single-event history capture (missing relapse cycles) by comparing net transition rates against observed longitudinal dynamics in the National Population Health Survey (NPHS) panel. + - **Recall bias and relapse:** Quantifying the effect of the CCHS single-event history (relapse cycles are not recorded) by comparing net transition rates against observed longitudinal dynamics in the National Population Health Survey (NPHS) panel. - **Back-casting comparison:** Reconstructing smoking prevalence for the 1994--2000 period and comparing against observed NPHS data -- interpreted as a consistency check rather than validation, since NPHS carries its own frame and measurement error structure (see §3.5 item 2). - **Model specification:** Testing the sensitivity of results to spline knot placement and alternative constraints for the period effects in the APC models. We will also compare two spline implementations: natural splines (`splines2::nsp()`, primary analysis) versus restricted cubic splines (`splines2::rcs()`), which may better characterize the boundary behaviour of period and cohort effects. - **Mortality adjustment method:** The primary analysis uses the MPoRT algorithm for mortality adjustment. We will conduct a sensitivity analysis using the Peto approach (a constant mortality risk ratio by smoking status), consistent with the original Holford et al. (2014) US implementation, to quantify the influence of the mortality adjustment method on historical prevalence estimates. @@ -262,7 +262,7 @@ Specific outputs include: 2. **Total smoking burden estimates:** Annual estimates of the total number of cigarettes smoked in Canada by calendar year, derived by combining smoking prevalence, intensity (cigarettes per day), and population counts. This aggregate measure provides a direct indicator of national tobacco exposure over time and can be used to contextualize tobacco policy impacts and project future cigarette consumption. 3. **Individual-level smoking histories:** Synthetic birth-cohort-specific smoking histories will be generated directly from the estimated APC rate tables, following the approach of Manuel et al. (2020) [@Manuel_HR_2020] and Holford et al. (2014) [@Holford_AJPM_2014]. For each birth cohort, the probability of being a current, former, or never smoker at each age is derived by combining the initiation and cessation rate tables with the mortality adjustment. These histories provide the inputs needed for microsimulation models of tobacco-attributable disease burden in Canada. -4. **Open-source repository:** All R code, metadata worksheets, and documentation will be made publicly available on GitHub to ensure full reproducibility and allow for future updates as new CCHS cycles are released. +4. **Open-source repository:** All R code, metadata worksheets, and documentation will be made publicly available on GitHub so that the analysis can be reproduced and updated as new CCHS cycles are released. > GATHER: Access to data and analytics; STRESS: Implementation details @@ -360,9 +360,9 @@ The NHIS is the data source for the US Smoking History Generator. It is not used The CSHM is implemented in the R programming environment (version 4.2+). The project architecture uses a reproducible data science workflow: -- **Pipeline management:** The `{targets}` R package manages the dependency graph and ensures that only outdated targets are recomputed when inputs change. -- **Environment management:** The `{renv}` package records the exact versions of all R packages and ensures a consistent software environment across development, production, and the Statistics Canada RDC environment. -- **Harmonization:** The `{cchsflow}` package (version 3.0) handles survey data harmonization across CCHS cycles. +- **Pipeline management:** The `{targets}` R package manages the dependency graph and recomputes only the targets whose inputs have changed. +- **Environment management:** The `{renv}` package records the exact versions of all R packages and keeps the software environment the same across development, production, and the Statistics Canada RDC environment. +- **Harmonization:** The `{cchsflow}` package (version 3.0) harmonizes survey data across CCHS cycles. All code will be hosted on GitHub under the MIT licence. The repository will include full documentation, metadata worksheets, and instructions for replication on both PUMF and Master file environments. From 5fbf395c0f1ae839ecbab4d1670c3218d28452ab Mon Sep 17 00:00:00 2001 From: Doug Manuel Date: Fri, 28 Aug 2026 10:22:34 -0400 Subject: [PATCH 6/8] Protocol: Canadian spelling (analyse) --- docs/protocol/full-protocol.qmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/protocol/full-protocol.qmd b/docs/protocol/full-protocol.qmd index 39dfb9d..1f1d6be 100644 --- a/docs/protocol/full-protocol.qmd +++ b/docs/protocol/full-protocol.qmd @@ -75,7 +75,7 @@ This study will develop a Canadian Smoking Histories Model (CSHM) that describes > Note: the starting date (1965) may need revision based on model performance. 1. **Estimate historical and current smoking parameters:** Reconstruct rates of smoking initiation, cessation, and intensity (cigarettes per day) by birth cohort (1890--2030) for each province and territory. -2. **Examine regional and temporal variations:** Analyze how smoking patterns have evolved across Canadian jurisdictions in response to differing policy environments and social trends. +2. **Examine regional and temporal variations:** Analyse how smoking patterns have evolved across Canadian jurisdictions in response to differing policy environments and social trends. 3. **Project future smoking prevalence:** Model future trends in smoking prevalence and related parameters through 2050 under status quo policy conditions. 4. **Develop an open-access model:** Create a publicly-accessible, reproducible R-based model that can be used and updated by researchers, policy analysts, and health system planners. From 8d76133c46d4fe4c2b93fecbc3bace8b040540c5 Mon Sep 17 00:00:00 2001 From: Doug Manuel Date: Fri, 28 Aug 2026 10:31:41 -0400 Subject: [PATCH 7/8] Protocol: PI wording edits (section 3.4) --- docs/protocol/full-protocol.qmd | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/protocol/full-protocol.qmd b/docs/protocol/full-protocol.qmd index 1f1d6be..131d1b7 100644 --- a/docs/protocol/full-protocol.qmd +++ b/docs/protocol/full-protocol.qmd @@ -156,7 +156,7 @@ The CSHM uses a two-stage analytical framework. In the first stage, we estimate The model estimates transitions between three smoking states: **never**, **current**, and **former**. Each person is in exactly one state at each age. This is the framework of Holford et al. (2014) [@Holford_AJPM_2014], which has been applied in several jurisdictions, and of Manuel et al. (2020) [@Manuel_HR_2020] for Ontario using the CCHS. This study follows the Manuel et al. implementation because it uses the same survey. A person enters the current state (initiation) at the age they smoked their first whole cigarette, provided they meet the study definition of an ever-smoker. A person leaves the current state (cessation) when they stop smoking completely; stopping daily smoking while continuing to smoke occasionally is not cessation. Starting to smoke daily and the number of cigarettes smoked per day are treated as characteristics of current smokers (section 3.4.4), not as separate transitions. -The APC models are estimated on person-years from the calendar year in which the earliest birth cohort (1920) reaches the initiation floor (1933 in the PUMF, where the floor is 13; 1928 in the Master files, where it is 8) to the last survey year. Every initiation event therefore has people at risk in the same age, period and cohort cell. A window that started later would keep the early events and remove the years at risk before them. Reported rates and reconstructed histories start in 1965; the earlier years are used for estimation only. **Age and time ranges.** The reference studies use the same limits. Holford et al. (2014) [@Holford_AJPM_2014] and Manuel et al. (2020) [@Manuel_HR_2020] set the probability of initiation to zero before age 8 and the probability of cessation to zero before age 15, count a quit as cessation only when it has lasted at least two years at the survey, and follow histories to age 85 (Holford et al. report to age 99, holding cessation rates at the age-85 level beyond 85). This study keeps the two-year rule and the age-85 ceiling: the CCHS reports ages to 85 in the PUMF, and rates for ages above 85 are held at the age-85 values. It differs from the reference studies in two places. First, initiation is modelled from age 8 in the Master files but from age 13 in the PUMF, because the lowest PUMF age category (5 to 11 years) cannot place a first cigarette within a year (section 3.3); the PUMF floor is a data limit; the method is the same in both files. Second, cessation risk begins at each person's own age at first whole cigarette rather than at a fixed age of 15, so that no one contributes time at risk of quitting before they smoked; for comparison with Manuel et al., cessation rates are reported from age 15. The ranges of reported values (age at first cigarette, years since quitting, age at survey) come from the CCHS recoding rules in cchsflow (the variable-details worksheet) and are checked for each survey cycle; they describe what respondents can report; the analysis limits are stated above. The 2019--2020 and 2022 PUMF cycles report age in five broad groups, so age-specific estimation uses the 2001 to 2017--2018 cycles; the later cycles are used for cross-sectional prevalence only. +The APC models are estimated on person-years from the calendar year in which the earliest birth cohort (1920) reaches the initiation floor (1933 in the PUMF, where the floor is 13; 1928 in the Master files, where it is 8) to the last survey year. Every initiation event therefore has people at risk in the same age, period and cohort cell. A window that started later would keep the early events and remove the years at risk before them. Reported rates and reconstructed histories start in 1965; the earlier years are used for estimation only. **Age and time ranges.** The reference studies use the same limits. Holford et al. (2014) [@Holford_AJPM_2014] and Manuel et al. (2020) [@Manuel_HR_2020] set the probability of initiation to zero before age 8 and the probability of cessation to zero before age 15, count a quit as cessation only when it has lasted at least two years at the survey, and follow histories to age 85 (Holford et al. report to age 99, holding cessation rates at the age-85 level beyond 85). This study maintains the two-year rule and the age-85 maximum: the CCHS reports ages up to 85 years in the PUMF, and rates for ages above 85 are held at the age-85 values. It differs from the reference studies in two places. First, initiation is modelled from age 8 in the Master files but from age 13 in the PUMF, because the lowest PUMF age category (5 to 11 years) cannot place a first cigarette within a year (section 3.3); the PUMF floor is a data limit; the method is the same in both files. Second, cessation risk begins at each person's age at first whole cigarette rather than at a fixed age of 15, so that no one contributes time at risk of quitting before they smoked; for comparison with Manuel et al., cessation rates are reported from age 15. The ranges of reported values (age at first cigarette, years since quitting, age at survey) come from the CCHS recoding rules in cchsflow (the variable-details worksheet) and are checked for each survey cycle; they describe what respondents can report; the analysis limits are stated above. The 2019--2020 and 2022 PUMF cycles report age in five broad groups, so age-specific estimation uses the 2001 to 2017--2018 cycles; the later cycles are used for cross-sectional prevalence only. The model uses one-year steps and assigns each person at most one smoking period, from initiation to cessation. A person's cessation risk begins at the age they entered the current state. The primary definition of cessation is the most recent quit that lasted at least two years. People who quit less than two years before the survey have not yet met this definition: they are classified as current smokers at the survey, and in the cessation model they contribute time at risk up to their reported quit age, after which they are censored, with no cessation event recorded. This follows the Holford and Manuel implementations. When initiation and cessation are reported at the same whole-year age, the data cannot show which came first within the year. We will state the rule for these cases in the analysis specification before fitting the models, and we will run a prespecified sensitivity analysis that excludes or interval-censors them. The CCHS records one quit per person, so relapse cannot be modelled directly; its influence is examined in sensitivity analyses (section 3.5). @@ -169,14 +169,14 @@ The target population is the Canadian household population covered by the CCHS. Analysis datasets will be produced through a standardized pipeline. 1. **Cleaning:** Distribution checks and truncation of extreme values for continuous variables (e.g., smoking intensity). -2. **Imputation:** Item non-response (don't know or refused; tagged NA(b)) on smoking status, initiation age, and cessation timing will be imputed with multiple imputation by chained equations (MICE), with at least *m* = 5 imputations. The final number of imputations will be chosen so that the rate-table estimates are stable across repeated runs. Only item non-response is imputed. Values that are missing by design are kept as missing: not applicable (NA(a), for example initiation age for never-smokers) and not asked in that cycle (NA(c)). Imputation follows the structure of the smoking questions. Where a person's smoking status is itself missing, status is imputed first; initiation age and quit timing are then imputed only if the imputed status makes those questions applicable, using the other smoking-history variables as predictors. Ordering rules (first cigarette no later than cessation; cessation no later than survey age) are applied within the imputation procedure, not corrected afterward. The imputation model includes the survey design variables (cycle, sampling weight), the sociodemographic variables (age, sex, province, education), and the smoking-history variables, making it at least as detailed as the analysis models. It also includes auxiliary variables (marital status, alcohol use, body mass index, self-rated general and mental health, life stress, community belonging, chronic conditions, and physical activity), which improve imputation and describe the study base for planned related studies. Derived variables such as pack-years are recalculated from the imputed variables rather than imputed directly. Every completed dataset is carried through person-year expansion and model fitting, and estimates are pooled across imputations (section 3.5). The full specification, including the diagnostic and sensitivity plan, is in [Appendix D: Missing data and imputation plan](appendix-imputation.qmd). +2. **Imputation:** Item non-response (don't know or refused; tagged NA(b)) on smoking status, initiation age, and cessation timing will be imputed with multiple imputation by chained equations (MICE), with at least *m* = 5 imputations. The final number of imputations will be chosen so that the rate-table estimates are stable across repeated runs. Only item non-response is imputed. Values that are missing by design are kept as missing: not applicable (NA(a), for example, initiation age for never-smokers) and not asked in that cycle (NA(c)). Imputation follows the structure of the smoking questions. Where a person's smoking status is itself missing, status is imputed first; initiation age and quit timing are then imputed only if the imputed status makes those questions applicable, using the other smoking-history variables as predictors. Ordering rules (first cigarette no later than cessation; cessation no later than survey age) are applied within the imputation procedure, not corrected afterward. The imputation model includes the survey design variables (cycle, sampling weight), the sociodemographic variables (age, sex, province, education), and the smoking-history variables, making it at least as detailed as the analysis models. It also includes auxiliary variables (marital status, alcohol use, body mass index, self-rated general and mental health, life stress, community belonging, chronic conditions, and physical activity), which improve imputation and describe the study base for planned related studies. Derived variables such as pack-years are recalculated from the imputed variables rather than imputed directly. Every completed dataset is carried through person-year expansion and model fitting, and estimates are pooled across imputations (section 3.5). The full specification, including the diagnostic and sensitivity plan, is in [Appendix D: Missing data and imputation plan](appendix-imputation.qmd). 3. **Descriptive statistics:** Baseline characteristics will be reported pre-imputation (Table 1a), which discloses the amount and type of missing data, and post-imputation (Table 1b), averaged across the *m* completed datasets. Both tables present unweighted n with survey-weighted percentages (and weighted median/IQR for continuous variables) -- the unweighted n reflects the information content of each cell, while the weighted statistics describe the population; a fully unweighted variant is provided in the appendix. Table 1 will include stratification for sex and survey year. Descriptive statistics will be examined for potential discontinuities across CCHS design eras (2001--2005, 2007--2014, 2015--2021, 2022+), which reflect major changes to the survey frame, recruitment, and collection mode [@gagne2017; @backinger2008]. Although smoking variables can be harmonized across cycles, changes to the sampling frame and mode may introduce measurement differences that are not fully correctable through harmonization alone [@chen2020joinpoint]. ### 3.4.3 Age-period-cohort modelling Three separate APC models will be fitted by sex (men and women) to characterize smoking life-course trajectories: one for initiation, one for cessation, and one for smoking intensity (cigarettes per day). The primary analysis produces national estimates stratified by sex, as well as separate estimates for each province and territory. -All models use natural cubic splines to describe how rates change with age, calendar period, and birth cohort. Because period equals age plus cohort, the data cannot distinguish the straight-line (linear) trends in age, period, and cohort: any amount of linear trend can be shifted from one to the other without changing the fitted rates [@Holford_SM_2006]. We therefore fix this split as an explicit modelling assumption: the linear trend in birth cohort is set to zero, so any straight-line change over time is attributed to calendar period, and age keeps its own linear term. This matches the Manuel et al. (2020) implementation [@Manuel_HR_2020]. We fit the model in terms of quantities that the data can estimate: the shape of the age curve, the curvature (departure from linearity) in period and cohort, and the net drift. As a sensitivity analysis, we attribute the linear trend to the cohort instead, set the period linear trend to zero, and report how much the published rate tables change. +All models use natural cubic splines to describe how rates change with age, calendar period, and birth cohort. Because period equals age plus cohort, the data cannot distinguish the straight-line (linear) trends in age, period, and cohort: any amount of linear trend can be shifted from one to the other without changing the fitted rates [@Holford_SM_2006]. We therefore fix this split as an explicit modelling assumption: the linear trend in birth cohort is set to zero, so any straight-line change over time is attributed to calendar period, and age keeps its linear term. This matches the Manuel et al. (2020) implementation [@Manuel_HR_2020]. We fit the model in terms of quantities that the data can estimate: the shape of the age curve, the curvature (departure from linearity) in period and cohort, and the net drift. As a sensitivity analysis, we attribute the linear trend to the cohort instead, set the period linear trend to zero, and report how much the published rate tables change. The model uses two kinds of rules. The first kind fixes the model by stating how the linear trend is split between age, period, and cohort, as described above. The second kind extends the model beyond the years we observe: for projection, period effects are held at their most recent observed values (for initiation and cessation alike), and cohort effects are held constant before 1920 and after 1985, following Manuel et al. (2020). These extension rules cannot fix the model on their own, because whether they happen to do so depends on which respondents fall at the edges of the observed data. @@ -197,7 +197,7 @@ We will use a dual approach to characterize smoking intensity (cigarettes per da ### 3.4.5 Mortality adjustment -To address survival bias (ever-smokers having lower survival to survey date than never-smokers), we will apply mortality adjustments using the Mortality Population Risk Tool (MPoRT) [@Manuel_HR_2020]. MPoRT weights are adjusted for age, sex, smoking status, years since quitting, and immigration status. For each respondent, the one-year probability of death for each historical year up to the survey date is calculated; the survival-bias weight is the proportion of ever-smokers who would have died before the survey date. With this adjustment the reconstructed historical prevalence reflects the original population rather than only the survivors, following the approach of Manuel et al. (2020) [@Manuel_HR_2020]. +To address survival bias (ever-smokers having lower survival to the survey date than never-smokers), we will apply mortality adjustments using the Mortality Population Risk Tool (MPoRT) [@Manuel_HR_2020]. MPoRT weights are adjusted for age, sex, smoking status, years since quitting, and immigration status. For each respondent, the one-year probability of death for each historical year up to the survey date is calculated; the survival-bias weight is the proportion of ever-smokers who would have died before the survey date. With this adjustment the reconstructed historical prevalence reflects the original population rather than only the survivors, following the approach of Manuel et al. (2020) [@Manuel_HR_2020]. The exact form of the adjustment will be documented and reviewed before it is implemented. The main open question is where the adjustment enters the calculation: as an adjustment to each respondent's weight before the APC models are fitted (as described above), or as a correction to the fitted transition probabilities afterward (as in the original Ontario code). The two approaches do not necessarily yield the same answer, and whichever is chosen must apply the correction only once. Before use, the adjustment will be checked in three ways: predicted deaths by age, sex, and calendar year compared with Canadian life tables; the size and stability of the adjustment factors, with limits set in advance; and recovery of known rates from simulated cohorts in which smokers die at higher rates (section 3.5). MPoRT remains the primary method if it passes these checks [@Manuel_HR_2020]. Until an adjustment is in place, unadjusted results are labelled as estimates among survivors and are not presented as birth-cohort smoking histories. From 455a7f9fba74276ead73a6cc943f603aba8ab696 Mon Sep 17 00:00:00 2001 From: Doug Manuel Date: Fri, 28 Aug 2026 10:49:11 -0400 Subject: [PATCH 8/8] Protocol: to-do section for the study team (authors, publication route, pending amendments) --- docs/protocol/full-protocol.qmd | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/docs/protocol/full-protocol.qmd b/docs/protocol/full-protocol.qmd index 131d1b7..3e30fba 100644 --- a/docs/protocol/full-protocol.qmd +++ b/docs/protocol/full-protocol.qmd @@ -7,7 +7,7 @@ version-summary: version-history: - version: "0.4.2" date: "2026-08-28" - description: "Estimation window start derived from the data (remediation task 1.2). The APC models are estimated on person-years from the calendar year in which the earliest birth cohort (1920) reaches the initiation floor (1933 in the PUMF; 1928 in the Master files) to the last survey year. Previously the person-years at risk began in 1965 while initiation events before 1965 were kept, so those cells held events and no one at risk who had not yet started. Reported rates and reconstructed histories still start in 1965. Section 3.4.1 now states the age and time ranges: the conventions of Holford et al. (2014) and Manuel et al. (2020) (initiation from age 8, cessation from age 15, two-year durability, age-85 ceiling); the two places this study differs (a PUMF initiation floor of 13, which is a data limit, and cessation risk from each person's own entry age, reported from age 15); and the source of reported-value ranges (the cchsflow recoding rules), which are separate from analysis limits. Wording throughout replaced with plain verbs (uses, records, imputes, harmonizes) in place of operates, ensures, enables, handles and captures." + description: "Estimation window start derived from the data (remediation task 1.2). The APC models are estimated on person-years from the calendar year in which the earliest birth cohort (1920) reaches the initiation floor (1933 in the PUMF; 1928 in the Master files) to the last survey year. Previously the person-years at risk began in 1965 while initiation events before 1965 were kept, so those cells held events and no one at risk who had not yet started. Reported rates and reconstructed histories still start in 1965. Section 3.4.1 now states the age and time ranges: the conventions of Holford et al. (2014) and Manuel et al. (2020) (initiation from age 8, cessation from age 15, two-year durability, age-85 ceiling); the two places this study differs (a PUMF initiation floor of 13, which is a data limit, and cessation risk from each person's own entry age, reported from age 15); and the source of reported-value ranges (the cchsflow recoding rules), which are separate from analysis limits. A to-do section for the study team added after the version history. Wording throughout replaced with plain verbs (uses, records, imputes, harmonizes) in place of operates, ensures, enables, handles and captures." - version: "0.4.1" date: "2026-08-27" description: "Two previously open study decisions ratified (public issue #5). The PUMF initiation-age floor stays at 13: the lowest PUMF category (ages 5 to 11, midpoint 8) is too coarse to date initiation events below that age, so initiation is modelled from 13 in the PUMF, while an established smoker who reports starting below 13 is still followed for cessation from the category midpoint of 8; Master files use exact ages with a floor of 8 (section 3.3). The first CCHS cycle is assigned survey year 2001 for cohort assignment (section 3.2). Editorial revisions from PI review of the Word render (wording and plain-language edits throughout; no methodological change). Ethics statement rewritten to describe secondary analysis of de-identified data and the Statistics Canada Open Licence. Study team updated (co-led with BC Cancer Research Institute; Canadian Partnership Against Cancer named among knowledge users). Fixed NHIS typo. Document production: Word rendering restored as a docstyle subproject (docs/protocol/_quarto.yml) with protocol-specific spacing; reporting-guideline placeholder moved so the sensitivity-analysis list renders as a list; redundant page break before Background removed; the three references previously rendered by citeproc (Holford 2006; Rao, Wu and Yue 1992; Statistics Canada 2023) added to the Zotero citation store so the reference list is complete and in one place." @@ -396,3 +396,18 @@ The detailed missing-data specification -- the tagged-NA taxonomy, the `where`-m :::: +:::: {.section-body page-break="true"} + +# To do + +Open items for the study team. Each is closed by a version bump that records the decision. + +1. **Confirm authors and author order.** The author plate is not rendered until the list is confirmed. +2. **Agree the publication route.** Proposed: post the protocol as a preprint on medRxiv, then submit to a journal to be chosen (the protocol has no target journal yet). +3. **Immigration and the PUMF (task 1.9).** The PUMF does not report the year of immigration, so pre-immigration years cannot be excluded in the public-use analysis; state this in section 3.3 and describe the Master-file method. +4. **Years since quitting in the PUMF (task 1.10).** State how the "3 or more years" group is refined with the finer CCHS variables (2007--2014 and 2015--2022) and how the open-ended "11 or more years" group is treated (section 3.3). +5. **APC identification (task 1.4b).** Amend section 3.4.3 with the estimable-functions parameterization, the declared allocation of the linear drift, and the validation gate. +6. **Mortality adjustment (task 1.7b).** Record the estimator and where it enters the calculation (section 3.4.5) once reviewed. +7. **Reporting guidelines.** Replace the STROBE and ISPOR-SMDM placeholders with the completed checklist references. + +::::