# K5 control – gilsing2015 (NLCS Meat Investigation Cohort, Sci Rep 2015;5:13484)

Controller: K5 · 2026-10-30 · Full text: `post2015/gilsing2015.txt` (Europe PMC XML → text)
Method: Table 2 (78 rows) and Table 4 (258 rows) parsed by script. Every case count, person-years, HR, CI and p-trend was compared with estimates.csv. I also checked, for every category, that the crude rate ratio (cases / person-years vs reference) is close to the printed age/sex HR, which detects shifted or misprinted cells. Design, definitions and adjustment were checked by reading Methods.

Rows checked: 336 (78 Table 2 + 258 Table 4).

## Discrepancies

| estimate_id | field | in database | in paper (Table 4, Fish, colon) | severity |
|---|---|---|---|---|
| gilsing2015_317, _322 (Fish, colon, Non consumers; m1, m3) | n_cases | 57 | Cell printed **blank**; "57" is printed in the P-trend row. The column is shifted one row down: the correct count is most likely **86** | **critical** |
| gilsing2015_318, _323 (Fish, colon, C1) | n_cases | 86 | most likely **80** | **critical** |
| gilsing2015_319, _324 (Fish, colon, C2) | n_cases | 80 | most likely **84** | **critical** |
| gilsing2015_320, _325 (Fish, colon, C3) | n_cases | 84 | most likely **57** | **critical** |

The extractor read the column as non-consumers = 57 and C1–C3 = 86 / 80 / 84 as printed. Two independent tests show the colon case column is displaced by one row:
1. **Rate ratios.** With the database's counts, the crude colon rate ratios vs non-consumers are 2.16 / 1.65 / 2.47, against printed HRs of 1.34 / 1.09 / 1.10. With the shifted reading (86 / 80 / 84 / 57) they are **1.33 / 1.10 / 1.11**, i.e. the printed HRs to within 0.01. Every other exposure × outcome in Table 4 agrees within about 0.1 on the unshifted reading.
2. **Subset logic.** As coded, C3 has colon 84 + rectum 19 = 103, more than the 84 colorectal cases. That is impossible. The shifted reading gives 57 + 19 = 76 ≤ 84, and colon ≤ colorectal in every category.

Both readings sum to 307. Fish is a negative control, but these counts feed the GL reconstruction for fish × colon. Correct the 8 rows and note the inference. Even better, confirm against the PDF.

No other numeric discrepancies: Table 2 has 0 mismatches in 78 rows, and Table 4 has 0 mismatches in the remaining 250 rows (incl. person-years and p-trend).

## Specific check requested: design and person-years
- **Design:** Methods say NLCS uses the case-cohort approach for the full NLCS, but "The full-cohort approach is used for analyses of NLCS-MIC". NLCS-MIC = the random subcohort plus all self-reported vegetarians and 1 day/week eaters, entered in full. `design = cohort` is therefore correct, not `case_cohort`.
- **Person-years:**
  - Table 4 person-years sum to 171,875 per exposure, consistent with 10,210 people × about 16.8 y over a 20.3-year follow-up window. These are full-cohort person-years of NLCS-MIC, not subcohort person-years. The database coding (`denominator_type = person_years`, printed values) is correct.
  - Caveat for analysts: the enrichment means sampling fractions differ by meat group (about 1/12 for 2–7 days/week eaters vs about 1 for vegetarians and 1 day/week eaters). HRs are valid, but absolute person-years and rates are not population-representative.
- **studies.csv:** n 10,210 (analysis), cases 437 / 307 / 92 (analysis set; 477 / 336 / 99 eligible before covariate exclusion), FFQ 150 items, validation r 0.46, raw weight, follow-up 20.3 y. All correct.

## Other checks
- **Exposure mapping:**
  - Fresh red meat = beef, pork, minced meat, liver and other meat (Table 1 fn d). Coded `red_unprocessed`, `no`. Correct.
  - Total fresh meat (incl. chicken, excl. processed and fish) is coded `total_meat` with `includes_processed = no`. Correct, but note that this differs from `total_meat` in other studies.
  - Minced meat is `is_main_model = no`, because it shares a code with fresh red meat. Reasonable.
- **Models:** m1 = age + sex (fn a). m2/m3 = fn b. m3 meat flags `unclear` ("complementary meat groups holding total meat constant", groups not stated). All correct.
- **Table 2 sets:** reference = 6–7 days/week (rank 1). `p_trend` sits on the vegetarian row (rank 5), which is the extreme of the ordering. Crude rate ratios are consistent with the HRs.
- **Dose:** sex-specific medians, so `dose_point` is empty except where the men's and women's medians are equal. Chicken and fish fixed bounds match fn d/e.

## Missing estimates
None.
- Table 3 prints HRs without CIs (single-covariate % change), so it is not codable under R1.
- The substitution result (24% lower, P = 0.055) has no CI.
- Proximal/distal, lag and duration analyses are "data not shown".

## Confirmed rows
All 336 rows confirmed except the 8 listed above (gilsing2015_317–320, 322–325).

## Internal inconsistencies in the paper (database records these as printed and flags them)
1. **Fresh red meat T3 person-years printed as 20,904.**
   - The category person-years then sum to 141,875, vs 171,875 everywhere else.
   - My rate check supports the extractor's guess of 50,904. The crude rate ratio is 3.34 with 20,904 and 1.37 with 50,904, against an HR of 1.33.
   - This is the core red-meat exposure: a GL reconstruction must not use 20,904.
2. **Table 2 five-group person-years** sum to 169,873, vs 171,875 for the ≤1 / >1 day contrast.
3. **Minced meat person-years** sum to 171,874 (rounding).
4. **Fish, colon:** column shift (see above). The cell layout also produces colon > colorectal for C3.
5. **Several age/sex continuous CIs are strongly log-asymmetric:**
   - _083: 1.04 (0.94–1.13)
   - _103: 1.04 (0.89–1.32)
   - _133: 1.04 (0.87–1.32)
   - _163: 0.87 (0.47–1.22)
   - _193: 1.14 (0.95–1.76)
   - _223: 1.11 (0.69–2.17)
   - _271: 1.09 (0.63–2.25)
   - _093: 0.99 (0.90–1.11)

   All are flagged in the notes.
6. **Chicken C3:** median printed as 22.8, equal to the lower bound. Footnote d leaves a gap between 22.5 and 22.8.
7. **Table 4 title** says "sex-specific quintiles", but tertiles of consumers or fixed categories are used.
8. **NOTES only (not the database):** the extractor's NOTES say Table 2 = 84 rows. The actual count is 78 (5-group 30 + 4 binary contrasts × 12 = 48), and the total of 336 is right.
