Skip to content

ResearchMethodsVolume 1, Issue 1, Fall 2024

Absence of Evidence: How Many Surveys Before You Can Say a Species Is Gone

An occupancy detection model, checked three ways. How many blank survey visits it takes before finding nothing counts as evidence of absence, and how badly the answer breaks when detection probability varies between sites.

Written jointly by the Science Journaling Club

Study
Methods paper
Review
Peer-edited by the club review board
Length
12 sectionsabout 27 min

Abstract

A survey that finds nothing has not proved anything. We built the detection half of a single-season occupancy model and asked the scheduling question underneath it: how long does a run of blank visits have to be before finding nothing counts as evidence of absence? With a constant per-visit detection probability pp, the probability that an occupied site produces kk blanks is (1−p)k(1-p)^k, so 95 percent confidence needs 14 visits at p=0.20p = 0.20 and 59 at p=0.05p = 0.05. We checked 500,000 simulated survey histories per configuration against that closed form across 76 cells: mean z=+0.0044z = +0.0044, largest ∣z∣=3.32|z| = 3.32, and the eleven independent anchor cells average +0.27+0.27, which is 0.89 standard errors from zero. Varying detection probability costs nothing, or costs everything, depending on where the variation lives. Redrawn from a Beta distribution at every visit it is free, which we prove and then confirm. Drawn once per site and kept, the bill arrives: at mean p=0.20p = 0.20 and Beta concentration κ=5\kappa = 5 (SD 0.163) the requirement rises from 14 visits to 76, a factor of 5.66, and at κ=2\kappa = 2 to 2,369 visits. Twenty blanks that the naive formula scores at a 1.15 percent chance of error actually leave 16.7 percent, and we validated that heterogeneous case three ways, simulation against a Beta-function closed form against tanh-sinh quadrature, agreeing to 5.7 × 10-14. Our first quadrature was wrong by 0.86. We say where. Putting Kéry's published snake detection probabilities into our formula reproduces two of his three survey requirements exactly. Seed 20240921. Everything here is computation, and the club made no observations of anything.

What a blank notebook page is worth

Somebody walks a transect in the valley, looking for a frog that has not been recorded there since 2011. They find nothing. What have they learned?

Less than it feels like. Two different worlds produce the same blank page, and in one of them the frog is gone. In the other it sits under a rock nine metres away while the surveyor walks past, and the notebook cannot separate those two worlds, nor can any amount of care on the day, because the problem is structural rather than personal. A single visit to an occupied site misses the species with probability 1−p1 - p, where pp is whatever the chance of detection happens to be for that species, that habitat and that method.

Repetition is the way out. Each extra blank visit is another chance the species had to show itself and did not take, and at a site where the species really lives the chance of an unbroken run of blanks falls off as the visits accumulate. How fast does it fall off? How many visits does that buy you? And what happens to the number when the assumption holding the whole calculation up, that every visit carries the same detection probability, stops being true, as it always does?

Say plainly what we did. The club has no field site and no licence to handle amphibians, nobody in it has surveyed a transect, and everything below is arithmetic plus simulated survey histories from a seeded generator. The computation is the experiment. Where the model simplifies the world we have tried to name the parts it threw away.

The arithmetic

Take a site where the species is present. Each visit detects it with probability pp, independently of the other visits. One blank visit has probability 1−p1-p. A run of kk blanks has probability

P(k blanks∣occupied)=(1−p)k.P(k \text{ blanks} \mid \text{occupied}) = (1-p)^k .

Set that equal to a target rate α\alpha and solve for kk:

k∗=⌈ln⁡αln⁡(1−p)⌉.k^{*} = \left\lceil \frac{\ln \alpha}{\ln(1-p)} \right\rceil .

With α=0.05\alpha = 0.05, ln⁡α=−2.9957\ln \alpha = -2.9957. At p=0.20p = 0.20, ln⁡(0.80)=−0.2231\ln(0.80) = -0.2231. The quotient is 13.43. Round up: 14. At p=0.05p = 0.05 the quotient is 58.40, so 59. At p=0.80p = 0.80 it is 1.86, so 2.

The ceiling is not cosmetic. Nobody makes 13.43 visits, and 13 of them leave a rate of 0.0550, above the target, which makes rounding up the whole difference between meeting the standard and missing it. Figure 1 shows the decay curves, and Figure 2 shows k∗k^{*} against pp, with the staircase the ceiling produces.

Decay of the false-absence probability with the number of blank visits, for five detection probabilities 0 10 20 30 40 50 60 number of visits, k 0.0 0.2 0.4 0.6 0.8 1.0 (1 - p) to the k the flat line is false-absence rate 0.05 circles mark k*, the first visit count at or below it PROBABILITY THAT AN OCCUPIED SITE GIVES k BLANK VISITS
  • p = 0.05
  • p = 0.10
  • p = 0.20
  • p = 0.40
  • p = 0.80
Figure 1. The probability that an occupied site produces a run of k blank visits, from the closed form (1−p)k. The dashed line is the 0.05 target and the open circles mark k*, the first whole visit count that reaches it: 2 visits at p = 0.80, 6 at 0.40, 14 at 0.20, 29 at 0.10 and 59 at 0.05. Doubling detection probability does far more than doubling effort, which is the argument for spending money on method rather than on repeat visits.

Three properties of the formula matter later. Geometric decay: every visit multiplies the remaining doubt by the same factor. Bare dependence, too, since pp and kk decide the answer between them, with no reference at all to how many sites you hold or how long the season ran. And the condition, which is the property people drop, since the whole expression assumes the site is occupied and therefore says nothing yet about whether the species is absent. Section 10 picks that up.

Visits required for 95 percent confidence against per-visit detection probability 0.05 0.10 0.20 0.30 0.40 0.50 0.60 0.70 0.80 per-visit detection probability, p 0 10 20 30 40 50 60 visits k* V. aspis (12) C. austriaca (34) N. natrix (26) VISITS NEEDED FOR 95% CONFIDENCE, AGAINST DETECTION PROBABILITY
  • ln 0.05 / ln(1-p), exact
  • rounded up to whole visits
  • Kéry 2002, three snake species [2]
Figure 2. k* against p. The smooth curve is ln 0.05 / ln(1−p); the staircase is that curve rounded up to whole visits, which is what you actually have to schedule. The requirement blows up as p falls, passing 29 visits at p = 0.10 and 59 at p = 0.05. Filled circles are the three snake species in Kéry's field study [2], plotted at his published detection probabilities and his published survey requirements; two of the three sit exactly on our curve.

The model, and the parts of the world it throws away

What we have written down is the detection half of a single-season occupancy model, the framework MacKenzie and colleagues set out in 2002 [1] and that Tyre and colleagues reached from the habitat-modelling side the year after [5]. A small model. Here is what it assumes, and what each assumption quietly deletes.

The site is occupied. Every number in sections 2 through 9 is conditional on that. We compute how often an occupied site produces a blank record, which is a statement about the survey method rather than about the species.

Nothing changes during the survey. Ecologists call this closure. A frog that arrives at the pond halfway through the season, or leaves, breaks it. Real surveys run over weeks, and closure gets violated in ways the data cannot show you.

Visits are independent. We trust this one least. A surveyor who learns the site gets better at finding things, and a disturbed animal hides for a while afterwards. A fortnight of cold spoils four consecutive visits at once, and a wet spring spoils a season, so blanks cluster, and clustered blanks carry less information than the formula credits them with.

Detection probability does not depend on anything. Not the season, not the observer, not the time of day, not the abundance of the animal at that site, and not the number of visits that have already happened there. Royle and Nichols pointed out that abundance alone guarantees the assumption is false, because a site holding twelve individuals is easier to survey than a site holding one, and that pushes detection probability around from site to site whether anyone models it or not [6]. Sections 7 and 8 are about exactly that failure.

No false positives. A detection is real, we assume, though misidentification exists, and for a rare species one wrong identification can do more damage than a hundred missed ones [15].

A model this thin still earns its keep. It gives an exact answer that can be checked, and the places it fails turn out to be the interesting part. Carry one number from this article into a real survey plan, and carry the list above with it.

How we ran it, and what came out

The whole study is one Python file of about 840 lines, using numpy and nothing else, and every random draw descends from a single master seed, 20240921, split into independent streams with numpy's SeedSequence. Each configuration gets its own stream, so rerunning reproduces the printed output exactly.

One replicate is one occupied site given kmax⁡k_{\max} visits. For each site we draw a row of uniform random numbers, compare each against the detection probability, and record the visit at which the first detection happened, or that none did. The histogram then yields the blank-run probability for every kk at once. We used 500,000 replicates per configuration, ten times the 50,000 minimum we set ourselves, and 2,000,000 for the convergence study, with detection probabilities running from 0.05 to 0.80.

The headline table is below. The "z" column gives the gap between the simulated rate and the closed form, in Monte Carlo standard errors. For a proportion estimated from NN draws that error is q(1−q)/N\sqrt{q(1-q)/N}. Near zero, the two agree. Above about 3, something is wrong.

pk* exactk* visits(1-p)^k* closed formsimulatedSEsim − exactz
0.0558.40590.0484945250.0486180.000304+0.000123+0.41
0.1028.43290.0471012870.0475020.000300+0.000401+1.34
0.1518.43190.0455994480.0456880.000295+0.000089+0.30
0.2013.43140.0439804650.0439120.000290−0.000068−0.24
0.2510.41110.0422351360.0417360.000284−0.000499−1.75
0.308.4090.0403536070.0405320.000278+0.000178+0.64
0.405.8660.0466560000.0461620.000298−0.000494−1.66
0.504.3250.0312500000.0309760.000246−0.000274−1.11
0.603.2740.0256000000.0255360.000223−0.000064−0.29
0.702.4930.0270000000.0270700.000229+0.000070+0.31
0.801.8620.0400000000.0399440.000277−0.000056−0.20

Look at the fourth column rather than the third. Rounding k∗k^{*} up drags the realised false-absence rate well under the 0.05 you asked for, and how far under depends on where the ceiling landed. At p=0.50p = 0.50 the exact requirement is 4.32 visits, the ceiling gives 5, and the realised rate is 0.0313. You bought far more confidence than you specified. At p=0.05p = 0.05 the ceiling barely moves anything and the rate lands at 0.0485. Costing a survey, you are looking at free confidence down at low pp and a wasted visit up at high pp.

Fourteen blanks at p = 0.20. Each empty box is a visit that found nothing, and an occupied site produces this exact record 4.40 percent of the time. Thirteen boxes leave 5.50 percent. The fourteenth box is not optional.

Does the simulator agree with the formula?

Here is what makes the study science rather than output. The simple case has an exact answer, so every simulated number sits beside the number it is supposed to be. We probed nine values of kk at each of eleven detection probabilities, kept the 76 cells where the expected count of blank runs was at least 25, and computed zz for each.

Model H, constant p. 76 usable cells. Mean z = +0.0044 against an expected 0. Standard deviation of z = 0.9997 against an expected 1. Largest |z| = 3.3157. Cells beyond |z| = 2: 2 of 76, where chance alone predicts about 3.5.

That standard deviation is the line we like best in the whole output, and we tuned nothing to produce it. Two different processes would not hand you a spread of 1.00 by accident.

One subtlety cost us an afternoon: our first summary averaged z over all 76 cells and treated the result as though it carried standard error 1/761/\sqrt{76}. It does not. The nine cells in one row all come from the same 500,000 simulated sites, so a batch that happens to miss slightly too often drags every kk in that row the same way. The cells are strongly correlated, and the pooled mean is far less precise than the count advertises. The fix is one independent anchor cell per detection probability, which gives eleven genuinely independent numbers.

Independent anchors. 11 cells, mean anchor z = +0.2692, standard error 0.3015, so 0.89 SE from zero. Standard deviation of the anchors 0.8350.

Monte Carlo estimates also have to be shown converging. Otherwise nobody can tell whether a number that agrees agrees for the right reason. Figure 3 tracks the running estimate of (1−0.20)13=0.0549756(1-0.20)^{13} = 0.0549756 as replicates accumulate from 25,000 to 2,000,000, against an envelope of plus or minus two standard errors that narrows as 1/N1/\sqrt{N}.

Running Monte Carlo estimate converging on the exact value as replicates accumulate 25k 50k 100k 200k 500k 1M 2M replicates accumulated (log scale) 0.052 0.054 0.056 0.058 running estimate exact (1-p)^13 = 0.0549756 band: plus or minus two Monte Carlo SE about the exact value THE ESTIMATE WALKING IN, p = 0.20 AND k = 13
Figure 3. Convergence. The running simulated estimate of (1−0.20)13 plotted against the number of replicates on a log axis, with the exact value 0.0549756 as a solid line and an envelope of ± 2 Monte Carlo standard errors. The envelope narrows as 1/√N. All fifteen checkpoints from 25,000 to 2,000,000 replicates fall inside it; the largest excursion is 1.33 SE at 1,750,000. Eighty times the computation bought a factor of nine in precision, which is the cost of Monte Carlo and the reason we keep the closed form.

The estimate stays inside the envelope at all fifteen checkpoints, though notice how slowly it improves. Going from 25,000 replicates to 2,000,000, eighty times the work, shrank the standard error from 0.00144 to 0.00016. A factor of nine. That ratio is the square root of eighty, and it is why we care about holding a closed form at all: simulation confirms the formula, and then the formula does the work.

Notes from the club table

Week 1 Everyone agreed the answer was obvious. Four different numbers for p=0.20p = 0.20 followed. Two people had computed the visits needed to detect the species with 95 percent probability, the same formula read backwards, and got 14 as well. Two had confused P(blanks)P(\text{blanks}) with P(absent)P(\text{absent}). The session went on that confusion instead. Right call.

Week 2 First simulator looped over sites in Python. 500,000 sites by 80 visits took long enough that somebody went for coffee. The rewrite draws the whole block of uniforms at once and reads the first detection out of an argmax. Same numbers, under half a minute for the entire study.

Week 3 Argument about whether letting pp vary from visit to visit makes the requirement worse. Obviously yes, said half the room; variance always costs you. Wrong, as it turned out. The expectation is linear, so nothing happens, and one of the other half put the proof on the whiteboard in four lines while the rest of us watched. We simulated it anyway. Winning an argument is not the same as having checked.

Week 4 The three-way validation of the heterogeneous case failed badly, off by 0.86 on a quantity bounded by 1, and only in the rows where the Beta was tightly concentrated. Somebody's first instinct: the simulation must be wrong. The quadrature was wrong. See §8. We left the dead code commented in the file with an explanation, because a wrong method that has been diagnosed teaches the next person more than a clean file does.

Week 5 Found Kéry's snake paper. Put his three published detection probabilities into our formula before reading his answer, which made for a genuinely nervous thirty seconds, and two out of three landed exactly.

Two kinds of variation, and only one of them costs you

Detection probability is not one number. It moves with weather, with season, with whoever is holding the clipboard, and with how many animals are out there. So what does that variation do to the visit requirement? The answer turns entirely on where the variation lives, and the gap is wider than we expected.

Suppose detection probability is drawn from a Beta distribution with mean pˉ\bar p. Two quite different arrangements give you that.

Redrawn every visit. Visit jj has its own pj∼Beta(a,b)p_j \sim \text{Beta}(a,b), drawn fresh, independent of the others. A wet Tuesday followed by a dry Wednesday. Then

P(k blanks)=∏j=1kE[1−pj]=(1−pˉ)k,P(k\text{ blanks}) = \prod_{j=1}^{k} \mathbb{E}[1-p_j] = (1-\bar p)^k ,

because the visits are independent and the miss probability 1−p1-p is linear in pp, so the expectation passes straight through the product. The variation vanishes. The spread of the Beta appears nowhere in the answer. A survey whose detection swings between 0.02 and 0.7 from week to week needs exactly as many visits as one sitting at the average every time.

We did not care to take a four-line proof on trust, so we simulated it: four Beta configurations, standard deviations from 0.087 to 0.283, five values of kk each. Largest ∣z∣|z| across the twenty cells was 2.52, and the four independent anchors averaged +0.73+0.73, which is 1.46 standard errors from zero, so no inflation at any spread we tried.

Drawn once and kept. Now the site owns a detection probability, fixed for its life, drawn from the same Beta, because some ponds really are harder than others and stay that way. Every visit to that pond uses that pp, so the blank-run probability stops being a product of expectations and becomes instead the expectation of a product:

P(k blanks)=E ⁣[(1−p)k]=B(a, b+k)B(a, b).P(k\text{ blanks}) = \mathbb{E}\!\left[(1-p)^k\right] = \frac{B(a,\, b+k)}{B(a,\, b)} .

Because x↦(1−x)kx \mapsto (1-x)^k is convex, Jensen's inequality puts this at or above (1−pˉ)k(1-\bar p)^k, with equality only when the Beta has no spread at all. Now the variation costs you, and the cost compounds with kk, because the sites that survive a long run of blanks are disproportionately the hard ones.

We parameterise the Beta by its mean pˉ\bar p and a concentration κ=a+b\kappa = a + b, so that a=κpˉa = \kappa \bar p and b=κ(1−pˉ)b = \kappa(1-\bar p), and the standard deviation comes out at pˉ(1−pˉ)/(κ+1)\sqrt{\bar p (1-\bar p)/(\kappa+1)}. Small κ\kappa means sites differ a lot. Large κ\kappa collapses back to the constant case.

The bill for sites that differ

Fix the mean at pˉ=0.20\bar p = 0.20. The constant-p formula answers 14 visits. Now let the spread grow. Figure 4 gives the blank-run probability on a logarithmic scale, closed form as lines and simulation as rings, for four concentrations plus the constant case.

Blank-run probability against visits for four levels of persistent site-level heterogeneity 0 10 20 30 40 50 60 number of blank visits, k 1e-5 1e-4 1e-3 1e-2 1e-1 1e0 false-absence probability kappa = 2 kappa = 5 kappa = 20 kappa = 100 constant p = 0.20 0.05 lines: closed form B(a,b+k)/B(a,b) rings: 500,000-site simulation PERSISTENT SITE-LEVEL HETEROGENEITY, MEAN p = 0.20
Figure 4. What persistent heterogeneity does, at a fixed mean detection probability of 0.20. Lines are the closed form B(a,b+k)/B(a,b); rings are the simulation, 500,000 sites per curve. The grey dashed line is the constant-p case, straight because geometric decay is straight on a log axis. Every heterogeneous curve bends away from it and flattens into a power law k−a. At κ = 5 the exponent is exactly 1 and the curve is 4/(4+k), so twenty blanks leave a false-absence probability of exactly 1/6 where the naive formula promises 0.0115.

The constant-p curve is straight on a log scale, because a straight line there is what geometric decay means. None of the heterogeneous curves are straight. They bend upward and flatten, and the flattening is the whole story. For large kk the closed form behaves like

E ⁣[(1−p)k]  ∼  Γ(a+b)Γ(b) k−a,\mathbb{E}\!\left[(1-p)^k\right] \;\sim\; \frac{\Gamma(a+b)}{\Gamma(b)}\, k^{-a} ,

which is a power law rather than a geometric decay, and that one change of shape is the whole of this section. The κ=5\kappa = 5 case reads clearest, because there a=1a = 1 exactly and the closed form collapses to b/(b+k)=4/(4+k)b/(b+k) = 4/(4+k). Twenty blank visits then leave a false-absence probability of exactly 1/61/6. Against that, the naive 0.8020=0.01150.80^{20} = 0.0115. Simulation on 500,000 sites gave 0.167216, and the closed form 0.1666667, which we are content to call agreement.

Set 4/(4+k)=0.054/(4+k) = 0.05 and you need k=76k = 76 visits, against 14. Here is the same comparison across the grid we ran.

mean pkappaSD of pk* naivek* with persistent heterogeneityinflationP(20 blanks), naiveP(20 blanks), actual
mean detection probability 0.20
0.2010.282813.431.496 × 106111,4390.011529not simulated
0.2020.230913.432,369.1176.50.0115290.329255
0.2050.163313.4376.05.660.0115290.166667
0.20200.087313.4319.41.450.0115290.047124
0.201000.039813.4314.41.070.0115290.017465
other means, for the shape of it
0.1050.122528.431,698.759.740.1215770.418986
0.10200.065528.4364.22.260.1215770.230769
0.4020.28285.8646.07.840.0000370.094982
0.40200.10695.866.91.180.0000370.001229
0.6020.28283.279.83.000.0000000110.022377
0.60200.10693.273.61.100.0000000110.000013

Stare at the right-hand columns. At pˉ=0.60\bar p = 0.60 with κ=2\kappa = 2, twenty blank visits look like a one-in-ninety-million result under the naive formula. They are actually a one-in-forty-five result, an error of a factor of two million. High mean detection is where the naive formula fails worst. The mechanism is plain: a geometric decay with a large pp plunges so fast that any fraction of hard sites, however small, ends up owning the answer.

Effort inflation factor against Beta concentration, for four mean detection probabilities 1 2 5 10 20 50 100 200 500 1000 Beta concentration kappa (left = more variable sites) 1e0 1e2 1e4 1e6 1e8 1e10 1e12 k* Model S / k* naive no inflation both axes logarithmic dots mark kappa = 1, 2, 5, 20, 100 EFFORT INFLATION FROM PERSISTENT HETEROGENEITY
  • mean p = 0.10
  • mean p = 0.20
  • mean p = 0.40
  • mean p = 0.60
Figure 5. Sensitivity. The ratio of visits required under persistent heterogeneity to visits required by the naive constant-p formula, against the Beta concentration κ, both axes logarithmic. Low κ means sites differ a lot. At κ = 100 the penalty is a few percent and the naive formula is fine. At κ = 5 it is between 1.5× and 60× depending on the mean. At κ = 1 the requirement at mean p = 0.10 reaches 5.5 × 1012 visits, which is the model's way of saying the question is no longer answerable by surveying harder.

Figure 5 collects the inflation factors. Read the left-hand edge with care. At κ=1\kappa = 1 and pˉ=0.10\bar p = 0.10 the Beta shape parameter aa is 0.1, the decay exponent is therefore 0.1, and reaching a 5 percent false-absence rate needs 5.5×10125.5 \times 10^{12} visits. Not a survey design. The model is saying that with that much site-to-site variation the question cannot be settled by visiting more, because a non-negligible fraction of occupied sites are effectively undetectable and always will be.

Three routes to the same number

The heterogeneous case has no obvious right answer to check against, so we built three routes and made them argue: the simulation, the Beta-function closed form via log-gamma, and an independent numerical integration of E[(1−p)k]\mathbb{E}[(1-p)^k] over the Beta density.

The first integration we wrote was wrong. It split the interval at one half and substituted the endpoint singularity away before applying 240-point Gauss-Legendre, which cures the singularity at one end and manufactures an infinite derivative at the other whenever the exponent exceeds 1. Polynomial quadrature cannot see that. The results disagreed with the closed form by up to 0.86 on a quantity bounded by 1, entirely in the κ=100\kappa = 100 rows where bb is large. We replaced it with tanh-sinh quadrature, which handles algebraic endpoint singularities of either sign without any case analysis, and which we set up to integrate the normalising constant too, so that no gamma function appears in that route at all.

Model S, persistent heterogeneity. Largest |closed form − quadrature| over all cells: 5.740 × 10-14. Simulation: 110 usable cells, largest |z| = 2.8664, 16 independent anchors averaging −0.1415, which is 0.57 standard errors from zero.

Three snakes in Switzerland

All of the above is self-consistent, which is a different thing from being right about anything outside itself. The external test we wanted was somebody who had published both a measured detection probability and the survey effort derived from it. Then check whether our formula reproduces their arithmetic.

Marc Kéry did exactly that in 2002 [2]. Over five years he made 645 visits to 87 sites in Switzerland, following three snake species: the asp viper Vipera aspis, the smooth snake Coronella austriaca, and the grass snake Natrix natrix. He estimated per-visit detection probabilities, found they depended heavily on population size, and reported how many blank visits a site would need before absence could be inferred with 95 percent confidence.

We took his published detection probabilities for small populations and fed them straight into our equation, with nothing fitted to his data and nothing adjusted afterwards.

speciesp publishedour k*Kéry's k*differencep band consistent with his k*
Vipera aspis0.23121200.2209 to 0.2384
Coronella austriaca0.093234−20.0843 to 0.0868
Natrix natrix0.11262600.1088 to 0.1129

Two exact. The smooth snake falls two visits short, and we would rather print that row than quietly drop it. Inverting his 34 says the detection probability behind it lay between 0.0843 and 0.0868, whose middle, 0.0855, rounds to the 0.09 in his table. So the gap looks like rounding, not a disagreement about the model. We cannot prove that from a printed table. We are not going to pretend otherwise.

Kéry's other finding should worry anybody quoting our section 2 number in anger. His detection probabilities were not constant. They climbed with population size, from 0.23 to 0.70 for the asp viper and from 0.09 to 0.56 for the smooth snake. Persistent site-level heterogeneity, measured in the field, in exactly the form section 8 prices as expensive. Royle and Nichols had already shown why it happens [6]. Bailey and colleagues found the same structure in salamanders in the Great Smoky Mountains [12]. Garrard and colleagues built a whole survey protocol around estimating detection rates for plants rather than assuming them [7].

The strongest objection we can make to this

Here is the best argument against taking these numbers seriously, put as strongly as we can put it.

You picked the Beta, and nothing in the data says that was right. The inflation factors in section 8 are not properties of heterogeneity as such; they are properties of Beta heterogeneity at one chosen concentration. Change the shape and the answer changes, sometimes by orders of magnitude, and Link showed in 2003 that the shape of a detection-heterogeneity distribution is essentially unidentifiable from capture data, since different mixing distributions can predict nearly identical observations while implying wildly different conclusions [9]. Quoting 76 visits at κ=5\kappa = 5 then carries the same epistemic standing as quoting 76 visits because somebody liked the number.

The objection is largely correct and we have no clean answer. Three partial responses, offered as partial.

First, the direction survives even where the magnitude does not. Jensen's inequality does not care what the mixing distribution is. Any spread in a persistent per-site detection probability makes a run of blanks weaker evidence than the constant-p formula claims. So the sign of the error in every published k∗k^{*} computed from a mean detection probability is known in advance, and it points the dangerous way, which we enjoy rather more than we should.

Second, the asymptotic behaviour is driven by the left tail near p=0p = 0, the part of the distribution a survey can least afford to guess at and also the part every plausible mixing family disagrees about. Distrust the precise value 5.5×10125.5 \times 10^{12}. Take the qualitative claim seriously anyway: the requirement can become unreachable. A two-point mixture, with some fraction of sites near-undetectable, does worse than the Beta. We did not run that case. Good follow-up for somebody.

Third, and weakest: the Beta is what the literature uses, so our numbers are at least comparable with everybody else's [10], which is a reason to publish them alongside. Not a reason to believe them.

A second objection: the number you computed is not the number anyone wants. Also correct. Everything in sections 2 through 9 is conditional on the site being occupied, while a manager wants P(absent∣k blanks)P(\text{absent} \mid k \text{ blanks}), and that quantity needs a prior. With prior occupancy probability ψ\psi,

P(occupied∣k blanks)=ψ(1−p)kψ(1−p)k+(1−ψ).P(\text{occupied} \mid k \text{ blanks}) = \frac{\psi (1-p)^k}{\psi (1-p)^k + (1-\psi)} .

We computed the visits needed to push that posterior below 0.05, and at p=0.20p = 0.20 it takes 24 visits from ψ=0.9\psi = 0.9, 14 from ψ=0.5\psi = 0.5, and 4 from ψ=0.1\psi = 0.1. At p=0.05p = 0.05: 101, 58 and 15. The prior does most of the work, which is uncomfortable and true, and which is why the decision-theoretic treatments of this problem [8][13][14] put the survey inside a larger question about what you would do with the answer rather than treating the survey as the whole problem.

At ψ=0.5\psi = 0.5 the Bayesian answer nearly coincides with the conditional one, 14 against 14 and 58 against 59, a coincidence of the arithmetic at α=0.05\alpha = 0.05 rather than a deep fact. Also, we suspect, why the conditional number gets quoted as the posterior one.

A third objection, smaller: you treated pp as known. In practice pp is estimated from the same small dataset, often from very few detections, and its uncertainty propagates into k∗k^{*} nonlinearly, so that because k∗k^{*} is convex in pp over the range that matters, averaging k∗k^{*} over an uncertain pp gives a larger answer than plugging in the mean pp. Guillera-Arroita and colleagues treat the estimation problem directly [11]. We did not. Read our numbers as conditional on knowing pp exactly, which nobody ever does.

Reproducing this

Clone or download the repository, then from the project root:

python analysis/finding-rare-species.py >
    analysis/finding-rare-species-output.txt

Requirements are Python 3.12 and numpy; we ran Python 3.12.3 and numpy 2.4.2. Expect about 26 seconds on an ordinary laptop. The script reports its own runtime on the last line, and peak memory stays under about 100 MB, because the simulation is chunked at 25,000 sites at a time.

The output runs to 788 lines and is checked into the repository as finding-rare-species-output.txt. Diff your run against ours. Every stream descends from the master seed 20240921 through SeedSequence, so a matching numpy version should reproduce that file byte for byte, apart from the final timing line. Numbers differing in the last digits while the z-columns still sit near zero mean a different numpy bit generator doing its job, not a fault in the method.

Every figure in this article was drawn from that output file. The interactive model runs the same two models in the browser, visit by visit, for anybody who would rather push the parameters around than read a table.

References

Reproduce these numbers

From the analysis folder, run:

python finding-rare-species.py > finding-rare-species-output.txt
Seed
20240921
Analysis code
finding-rare-species.py55 kB