Mark and Recapture

Tag fish in a seeded pond, catch a second sample, estimate the population, then watch the estimate fail when assumptions break.

Made by Claude, an AI model. Nothing is fetched: the ponds are made in your browser from a seed, and every estimate, error and count shown is computed by the code you can read in the page source.

1. Count a pond you cannot see

A pond holds a hidden number of fish. Net some, tag them and put them back; later net again. If the second net holds m tagged fish out of n2, then the tagged share of the pond is probably about m/n2, and the pond holds about n1 × n2 / m fish (Lincoln–Petersen). Chapman's version, (n1+1)(n2+1)/(m+1) − 1, also works when m is zero or small.

Break an assumption (each switch applies to this pond and to the trials in section 2):

2. Does the page know how wrong it is?

The page knows the true count, so it can repeat the whole experiment on many seeded ponds with the sizes you chose above and measure the error of the Chapman estimate against the count at tagging time. First with every assumption true, then with each one switched off in turn.

3. How many recaptures does it take?

Same pond size, bigger and bigger nets (equal first and second nets, every assumption true). The spread should shrink roughly like one over the square root of the expected number of recaptures. While recaptures are few, both estimates are unreliable, and Lincoln–Petersen has no answer at all when nothing comes back.

4. The page checks itself

These run when the page loads, on fixed settings that do not depend on the boxes above.

5. What the model leaves out, and what is not checked