Quantifying diversity of bird species I’m wondering if anyone could recommend a diversity index to look at the differences in breeding bird territories between two sites. These are my data - the numbers represent the number of breeding pairs of each species:
c(4L, 3L, 14L, 1L, 4L, 11L, 2L, 1L, 2L, 7L, 1L, 5L, 7L, 3L, 1L, 2L, 1L, 1L, 4L, 1L, 1L, 4L, 2L, 4L, 3L, 3L, 1L, 1L, 1L, 14L, 3L, 14L) -> site1

c(27L, 25L, 21L, 23L, 1L, 2L, 26L, 3L, 1L, 16L, 3L, 12L, 29L, 2L, 5L, 1L, 17L, 2L, 6L, 19L, 6L, 3L, 3L, 5L, 1L, 1L, 8L, 7L, 1L, 2L, 5L, 2L, 6L, 2L, 8L, 1L, 5L, 1L, 25L, 1L, 1L, 4L, 1L, 26L, 7L, 1L, 1L, 13L, 1L, 30L, 34L, 13L, 2L) -> site2

I’ve tried Simpson’s index in R:
library(vegan)

diversity(site1, index = "simpson")
diversity(site2, index = "simpson")

But the diversity index is very similar for both sites (0.94 and 0.96 respectively) and I would say site2 is considerably more diverse than site1.
Are there any functions that are more sensitive when quantifying diversity?

The other thing that's worth taking into account (although it involves similar deep rabbit holes as the other aspects of diversity metrics mentioned in other answers and comments) is that diversity measures with low $q$ (as in @RogerVadim's answer), i.e. richness and similar metrics, are sensitive to sample size. There are 126 total breeding pairs at site 1 vs. 468 at site 2.
Here are the rarefaction curves mentioned by @RogerVadim:
library(vegan)
## site1 and site2 from OP example above
r1 <- rarecurve(rbind(site1), tidy = TRUE)
r2 <- rarecurve(rbind(site2), tidy = TRUE)
## plot site 2 first because larger sample
plot(Species~Sample, data = r2, type = "l")
with(r1, lines(Sample, Species, col = 2))


There are 32 species at site 1; if there were only 126 breeding pairs at site 2, we would expect to see only 34 or 35 species rather than the 53 actually observed.
(You can do these computations and draw the plot slightly more elegantly if your data are organized as a species-by-site matrix with zeros filled in for species that are not observed in any samples at a particular site.)
subset(r2, Sample == max(r1$Sample))

There are various ways to deal with issue; here I'm just pointing out a possible source of confounding/confusion.
