Shrinkage (per visit) — pulls thin-sample rates toward the dataset baseline B, k = 10:
rateij = ( positiveij + k·B ) / ( denominatorij + k )
Recent infestation (λ = ln 2 / half-life, uses shrunk rate):
Ri = ( Σⱼ rateij · e−λtᵢⱼ ) / ( Σⱼ e−λtᵢⱼ )
Recent peak (trailing 12 months, uses shrunk rate):
Pi = max( rateij ) for months-ago ≤ 12
Persistent infestation (threshold T, uses shrunk rate):
Ei = (visits with rate > T) / (total visits)
Surveillance recency (cap c):
Si = min( months since last visit, c ) / c
Surveillance deficit (low frequency raises score):
Di = max( 0, 1 − visits/yeari / median visits/year )
Confidence modifier (avg houses inspected, q — catches a chronically thin kampung, not just one thin visit):
qi = 1.00, 0.85, or 0.65 by sample-size band
Final score (each component normalised to 0 to 1):
Priorityi = 100 × ( wRR̂i + wPP̂i + wEEi + wSSi + wDDi ) × qi
Starting weights and thresholds, not literature-derived constants. The literature supports which signals belong far more than any specific numeric weight. Treat these as adjustable defaults.