Course dataset: FLUID-ICU

Simulated data, not real patients. FLUID-ICU is an invented study: every value was produced by a computer program with a fixed random seed. It does not describe any real patient, hospital or ICU. Any manuscript written from it must say that the data are simulated and must never be submitted as real research.

FLUID-ICU is a simulated multicentre prospective cohort of 620 adults with sepsis admitted to 4 ICUs (“ICU A” to “ICU D”) from January 2023 to December 2024. It carries the course’s running example into Sessions 5–8: is a positive cumulative fluid balance by day 3 associated with higher 28-day mortality? The data were built so that the classic lessons show up in the results: confounding by indication (sicker patients receive more fluid and die more often, so the crude odds ratio is clearly larger than the adjusted one), missing data (lactate missing in about 15%), a skewed outcome (ICU length of stay) and an interaction worth discussing (heart failure). A raw version with realistic data-quality errors is used in the Session 5 cleaning demo.

There are five questions on the data (Q1 to Q5). In class the instructor works through them with the whole class (Q1 in full, Q2 to Q5 more briefly). Each participant then chooses one question and writes it up as their own draft manuscript from its results pack (Table 1, figures, regression tables and plain-language notes): we give you the results, you write the paper. The dataset is used in Weeks 5–8 of this course (Level 1) and reused hands-on in Level 2, where participants run the same analyses themselves.

The five questions (Q1 to Q5)

Question Main method Results pack
1 Positive fluid balance by day 3 and 28-day mortality (primary) Logistic regression (crude vs adjusted), Kaplan–Meier, Cox, interaction with heart failure Read online · Word · PDF · zip
2 Cumulative fluid balance and acute kidney injury Logistic regression, balance per 10 ml/kg Read online · Word · PDF · zip
3 Cumulative fluid balance and ventilator-free days Mann–Whitney; linear regression Read online · Word · PDF · zip
4 Admission lactate and 28-day mortality; the effect of missing lactate Complete case vs multiple imputation (mice, m = 20) Read online · Word · PDF · zip
5 Fluid balance and ICU length of stay in survivors Median (IQR); Mann–Whitney; linear regression on the log scale Read online · Word · PDF · zip

Downloads

Raw data (as the 4 ICUs sent it: 623 rows with errors) CSV · Excel
Clean data (620 patients, 32 variables) CSV · R (.rds, keeps factor levels)
Data dictionary CSV · PDF
Statistical analysis plan PDF
Dataset README (what each file and script is) PDF
R project: scripts 00–06, data, dictionary, README zip
Read online Data dictionary · Cleaning log · Statistical analysis plan

How the analyses are run

Participants never need to run anything: in Sessions 5 and 6 the trainers run the R scripts live (block by block in RStudio, on the shared screen) and you read the outputs and the results pack for your question. The scripts are provided for participants who completed the free Neudata course Clinical Data Analysis in R and want to reproduce the analyses: unzip the R project, open FLUID-ICU.Rproj in RStudio (it sets the working folder) and run the scripts in order. Script 01_clean.R ends by checking that its output equals the clean file value for value. Script 00_generate_fluid_icu.R re-creates the simulated data (course team only; it overwrites the data files with the same values, because the seeds are fixed).

cd Course/Data      # or the folder where you unzipped FLUID-ICU_R_project.zip
Rscript R/01_clean.R          # S5 demo: raw -> clean; checks the result equals the clean file
Rscript R/02_describe.R       # S5 demo: Table 1 + histogram, boxplot, bar chart
Rscript R/03_compare.R        # S6 demo: t-test, Mann-Whitney, chi-square
Rscript R/04_models.R         # S6 demo: crude vs adjusted OR, forest plot, KM, Cox, interaction
Rscript R/05_missing.R        # S6 demo: missing lactate, complete case vs multiple imputation
Rscript R/06_results_packs.R  # (course team) rebuilds the results packs

R 4.3 or later with these packages:

install.packages(c("tidyverse", "janitor", "writexl", "readxl", "gtsummary", "gt",
                   "flextable", "officer", "broom", "survival", "survminer", "mice"))