2  Data and lineage

2.1 Source

The data are one file, licorice_gargle.csv, emailed by the PI’s fellow. It is the public version of the trial data from the medicaldata R package, with one row per patient. The codebook is notes/2026-10-16-codebook.md. The file’s date of receipt and its MD5 checksum are in data/README.md. The raw file is never edited, and scripts/02_make_analysis_data.R refuses to run if its bytes change (D-019).

Cleaning (clean_raw()) checks every column against the codebook. An unexpected code, an out-of-range or fractional score, or text in a numeric column stops the pipeline and names the rows. The delivered file passed every check. The file has no patient identifier, so each patient’s identifier is their row number in the raw file.

2.2 Lineage

Each step is a function in R/ with tests in tests/testthat/.

Step Rows File
raw 235 data/raw/licorice_gargle.csv
clean (one row per patient) 235 data/derived/clean.rds
long (one row per patient per assessment) 940 assessments_long(clean)

The file has 235 patients: 117 randomized to sugar water and 118 to licorice. The codebook gives an enrollment count of 236, so 1 enrolled patient is not in the file. Why is an open question for the client (Chapter 1). If a randomized patient is missing, the analysis is not fully intention to treat.

2.3 Missing data

Any missing score is treated as missing, and each analysis uses the patients observed at that assessment (complete case; D-010, D-015).

Patients missing the sore-throat score at each assessment, by arm.
Assessment Sugar water Licorice Missing overall
PACU 30 min 1 of 117 1 of 118 0.9%
PACU 90 min 1 of 117 1 of 118 0.9%
4 h after surgery 1 of 117 1 of 118 0.9%
First postoperative morning 1 of 117 1 of 118 0.9%

Missing outcomes come entirely from 2 patients (1 on sugar water, 1 on licorice) who have no post-operative data at all; every other patient has all four scores. The intake notes anticipated patients with no post-operative data (“a couple pts no post-op data”). Why they have none is an open question in Chapter 1. At most 0.9% of patients are missing any one assessment. That is within the plan’s five-percent trigger for revisiting the missing-data approach (D-015), so the complete-case analyses stand.

2.3.1 Best- and worst-case bounds for the primary outcome

The plan bounds the primary odds ratio by filling in every missing primary outcome among the patients in the file, in the way most and least favourable to licorice (Chapter 3).

Primary odds ratio (licorice against sugar water) with missing outcomes filled in.
Bound Outcomes filled in Absent patients added Odds ratio (95% CI) p-value
Best case for licorice 2 0 0.39 (0.22 to 0.72) p = 0.002
Worst case for licorice 2 0 0.43 (0.24 to 0.78) p = 0.005
Worst case for licorice, with absent patients (post hoc) 2 1 0.45 (0.25 to 0.81) p = 0.008

Among the patients in the file, the best case for licorice gives OR 0.39, 95% CI 0.22 to 0.72 and the worst case OR 0.43, 95% CI 0.24 to 0.78. The complete-case estimate (Chapter 6) is OR 0.41, 95% CI 0.22 to 0.74. Both bounds keep the confidence interval below one, so the missing outcomes of patients in the file cannot change the primary conclusion.

These bounds do not cover the 1 enrolled patient absent from the file. Added after results were seen (post hoc; D-021): adding that patient to the licorice arm with a sore throat, on top of the in-file worst case, gives OR 0.45, 95% CI 0.25 to 0.81. The confidence interval stays below one, so the primary conclusion holds even then.

No warnings from the model fits in this chapter.