5 Chapter 5 — What’s Driving It?
Applied Epidemiology in Aquaculture — Part II: Measuring Disease
Where this sits — Anticipate (primordial/primary prevention). To prevent disease you first have to know what raises its risk. This chapter turns “river-water cages seem to get more BKD” into a measured, confidence-bounded effect — the quantitative core of identifying risk factors, and the bridge from counting disease (Chapter 4) to anticipating it.
5.1 Overview
Chapter 4 told us how much disease there is. This chapter asks why — specifically, whether a suspected exposure (a water source, a treatment, a neighbour in outbreak) changes the risk of disease, and by how much. The answer is a small family of numbers built from a single humble object, the 2×2 table: relative risk, the odds ratio, and the attributable measures that tell a manager how much disease would disappear if the exposure did. We compute all of them on a real question from Aysén Salmon Co.: does river intake water carry more Bacterial Kidney Disease (BKD) risk than recirculating (RAS) water?
We use bkd_watersource.csv — 16 freshwater smolt units, half on river water, half on RAS.
5.2 5.1 Preparation
pacman::p_load(rio, here, tidyverse, janitor, epiR)
bkd <- import(here("data", "bkd_watersource.csv"))
glimpse(bkd)5.3 5.2 The 2×2 table
Every measure of association starts here. We cross-classify each fish by exposure (river vs RAS) and outcome (BKD case vs not). Aggregating the units to fish-level counts:
totals <- bkd |>
group_by(water_source) |>
summarise(cases = sum(bkd_cases), fish = sum(n_fish)) |>
mutate(non_cases = fish - cases)
totals| BKD cases | Non-cases | Total | |
|---|---|---|---|
| River (exposed) | 2,800 | 23,112 | 25,912 |
| RAS (unexposed) | 1,175 | 23,326 | 24,501 |
The risk of BKD is 10.8% on river water and 4.8% on RAS. Those two risks are the raw material for everything that follows.
Convention. Label the cells a (exposed, diseased), b (exposed, healthy), c (unexposed, diseased), d (unexposed, healthy). Keep exposure in rows and the exposed/diseased cell top-left, because
epiRand most texts assume that layout — getting it upside-down silently inverts your results.
5.4 5.3 Relative risk and the odds ratio
Relative risk (RR) is the ratio of the two risks — how many times more likely disease is in the exposed group:
RR = risk if exposed ÷ risk if unexposed = 0.108 ÷ 0.048 = 2.25
Odds ratio (OR) is the ratio of the odds instead of the risks — the only valid measure in a case-control study (Chapter 7), where risks cannot be computed directly:
OR = (a×d) ÷ (b×c) = 2.41
epiR computes both, with confidence intervals and the attributable measures below, in one call. Build the table with exposed-diseased first:
tab <- matrix(c(2800, 23112, 1175, 23326), nrow = 2, byrow = TRUE)
epi.2by2(as.table(tab), method = "cohort.count")
#> Inc risk ratio (RR) 2.25 (2.11, 2.41)
#> Odds ratio (OR) 2.41 (2.24, 2.58)
#> Attrib risk in exposed (ARe) 6.0 per 100 (...)
#> Attrib fraction in exposed 55.6% (...)
#> Attrib risk in population (PAR) 3.1 per 100 (...)
#> Attrib fraction in population 39.2% (...)🧮 Epivet Tools — 2×2 measures of association Enter the four cells and get RR, OR and attributable fractions with CIs: tools.epivet.cl/assoc-2x2. Reference model: Ausvet EpiTools.
So river water is associated with 2.25 times the risk of BKD (95% CI 2.11–2.41). The interval excludes 1, so the association is statistically clear. Notice the OR (2.41) is a little larger than the RR (2.25): the OR always exaggerates the RR when the outcome is common, which is why RR is preferred whenever the design allows it.
5.5 5.4 Attributable measures — the “so what” numbers
RR and OR say how strong the association is. Attributable measures say how much disease it accounts for — the numbers a manager actually acts on.
- Attributable risk in the exposed (ARe) = risk_exposed − risk_unexposed = 10.8% − 4.8% = 6.0 per 100. Among river-water fish, 6 BKD cases per 100 are the “excess” tied to the water source.
- Attributable fraction in the exposed (AFe) = (RR − 1)/RR = 55.6%. Of the BKD occurring in river-water fish, over half would not have happened on RAS.
- Population attributable fraction (PAF) = 39.2%. Across the whole freshwater operation, 39% of all BKD is attributable to river water — lower than the AFe because only about half the units (exposure prevalence 51%) are on river water.
The gap between AFe (56%) and PAF (39%) is the single most useful idea here: a strong risk factor that few animals are exposed to moves the population little, while a modest risk factor everyone shares can dominate the population burden. PAF is what tells you whether switching water source is worth the capital cost.
5.6 5.5 Interpretation on the farm
For an Anticipate programme, these numbers convert a hunch into a ranked, costed target. An RR of 2.25 with a tight interval says river water is a real driver, not noise; a PAF near 40% says acting on it could remove roughly two in five BKD cases across the smolt operation. This is exactly how risk factors are prioritised in practice: the national SRS cohort found egg-bearing Caligus raised within-neighbourhood SRS risk by a comparable factor (RR ≈ 1.36; Diethelm-Varela et al., 2025), a meta-analysis put the sea-lice effect on SRS mortality at about RR 1.40 (keynote synthesis; Mardones et al., in review), and structured expert elicitation ranked dense neighbours, net fouling and pre-outbreak baths among the top modifiable risks (Estévez et al., 2019). Each is a 2×2 away from an attributable fraction that says how much a control measure could buy. The caution, carried into Chapter 9: an association is not yet a cause — temperature, season and site can manufacture a spurious RR, and only careful design and confounding control separate the two.
5.7 5.6 Exercises
Try it yourself (5.1). Rebuild the 2×2 table and run
epi.2by2()yourself. Confirm the RR, then change the table so exposure is in columns instead of rows — what happens to the estimate, and why does cell order matter?
5.2 Using the risks in §5.2, compute the relative risk and the attributable risk in the exposed by hand. Show that AFe = (RR−1)/RR gives the same 55.6%.
5.3 A case-control study of SRS cannot compute risk. Explain in two sentences why the odds ratio is the right measure there, and why reporting an RR would be wrong.
5.4 Suppose only 10% of units were on river water instead of 51%. Keeping the same RR, would the PAF go up or down? Explain what that means for the value of switching water source.
5.5 The OR here (2.41) exceeds the RR (2.25). If BKD risk were only 1% in each group instead of ~5–11%, would the OR and RR be closer or further apart? Why?
5.8 Summary & what’s next
- Associations are built from the 2×2 table of exposure by outcome.
- Relative risk compares risks (cohort/cross-sectional designs); the odds ratio compares odds and is the measure for case-control studies; OR overstates RR when disease is common.
- Attributable measures quantify impact: ARe and AFe for the exposed group, PAR/PAF for the whole population — PAF depends on how common the exposure is, and is the number for prioritising control.
- An association is a starting point, not proof of cause (Chapter 9).
In Chapter 6 — Reading the Test we return to Detect and tackle diagnostics head-on: sensitivity, specificity, predictive values, ROC curves and agreement — and finish the apparent-vs-true prevalence correction we flagged in Chapter 4.
5.9 References & further reading
- Dohoo I, Martin W, Stryhn H. Veterinary Epidemiologic Research. 2nd ed. VER Inc.; 2009. — measures of association and effect.
- Thrusfield M, Christley R. Veterinary Epidemiology. 4th ed. Wiley-Blackwell; 2018.
- Diethelm-Varela B, Atero N, Córdova-Bührle F, et al., Mardones FO. Epidemiology of SRS in farmed salmon: the role of sea lice in mortality risk. J Fish Dis. 2025;e70097. — risk ratios for a modifiable exposure.
- Estévez RA, Mardones FO, et al. Structured expert elicitation of SRS risk and protective factors. Aquaculture. 2019;507:402–410.
- Mardones FO, Córdova-Bührle F, Diethelm-Varela B, et al. Meta-analysis of sea-lice effects on SRS mortality. In review. — pooled RR ≈ 1.40.
Files for this chapter: data/bkd_watersource.csv and scripts/make_bkd_watersource.R (new).