This is just a small collection of miscellaneous functions that may be useful, primarily for community ecology analyses, particularly for paleoecological data. They are here mainly for pedagogical reasons (i.e. for students) as they don't appear to be available in other ecologyfocused packages.
1 2 3 4  pairwiseSpearmanRho(x, dropAbsent = "bothAbsent", asDistance = FALSE,
diag = NULL, upper = NULL, na.rm = FALSE)
HurlbertPIE(x, nAnalyze = Inf)

x 
The community abundance matrix. Must be a matrix with two dimensions for

dropAbsent 
Should absent taxa be dropped? Must be one of either 'bothAbsent' (drop taxa absent in both sites for a given pairwise comparison),'eitherAbsent' (drop taxa absent in either site), or 'noDrop' (drop none of the taxa). The default 'bothAbsent' is recommended, see examples. 
asDistance 
Should the rho coefficients be rescaled on a scale similar to dissimilarity metrics, i.e. bounded 0 to 1, with 1 representing maximum dissimilarity (i.e. a Spearman rho correlation of 1)? ( dissimilarity = (1  rho) / 2 ) 
diag 
Should the diagonal of the output distance matrix be included? 
upper 
Should the upper triangle of the output distance matrix be included? 
na.rm 
Should taxa listed with NA values be dropped from a pairwise site comparison? If FALSE, the returned value for that site pair will be NA if NAs are present. 
nAnalyze 
Allows users to select that PIE be calculated only on 
pairwiseSpearmanRho
returns Spearman rho correlation coefficients
based on the rank abundances of taxa (columns) within sites (rows) from
the input matrix, by internally wrapping the function cor.test
.
It allows for various options that ultimatically allow
for dropping taxa not shared between two sites (the default), as well as
several other options. This allows the rho coefficient to behave like the
BrayCurtis distance, in that it is not affected by the number of taxa absent
in both sites.
pairwiseSpearmanRho
can also rescale the rho coefficients with (1rho)/2
to provide a measure similar to a dissimilarity metric, bounded between 0 and 1.
This function was written so several arguments would be in a similar format to
the vegan
library function vegdist
. If used to obtain rho
rescaled as a dissimilarity, the default output will be the lower triangle of
a distance matrix object, just as is returned by default by vegdist
.
This behavior can be modified via the arguments for including the diagonal
and upper triangle of the matrix. Otherwise, a full matrix is returned (by default)
if the asDistance
argument is not enabled.
HurlbertPIE
provides the Probability of Interspecific Encounter metric for
relative community abundance data, a commonly used metric for evenness of community
abundance data based on derivations in Hurlbert (1971). An optional argument allows
users to apply Hurlbert's PIE to only a subselection of the most abundant taxa.
pairwiseSpearmanRho
will return either a full matrix (the default) or (if
asDistance
is true, a distance matrix, with only the lower triangle
shown (by default). See details.
HurlbertPIE
returns a named vector of PIE values for the input data.
David W. Bapst
Hurlbert, S. H. 1971. The nonconcept of species diversity: a critique and alternative parameters. Ecology 52(4):577586.
Example dataset: kanto
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72  # let's load some example data:
# a classic dataset collected by Satoshi and Okido from the Kanto region
data(kanto)
rhoBothAbsent<pairwiseSpearmanRho(kanto,dropAbsent="bothAbsent")
#other dropping options
rhoEitherAbsent<pairwiseSpearmanRho(kanto,dropAbsent="eitherAbsent")
rhoNoDrop<pairwiseSpearmanRho(kanto,dropAbsent="noDrop")
#compare
layout(1:3)
lim<c(1,1)
plot(rhoBothAbsent, rhoEitherAbsent, xlim=lim, ylim=lim)
abline(0,1)
plot(rhoBothAbsent, rhoNoDrop, xlim=lim, ylim=lim)
abline(0,1)
plot(rhoEitherAbsent, rhoNoDrop, xlim=lim, ylim=lim)
abline(0,1)
layout(1)
#using dropAbsent="eitherAbsent" reduces the number of taxa so much that
# the number of taxa present drops too low to be useful
#dropping none of the taxa restricts the rho measures to high coefficients
# due to the many shared 0s for absent taxa
#############
# Try the rho coefficients as a rescaled dissimilarity
rhoDist<pairwiseSpearmanRho(kanto,asDistance=TRUE,dropAbsent="bothAbsent")
# What happens if we use these in typical distance matrix based analyses?
# Cluster analysis
clustRes<hclust(rhoDist)
plot(clustRes)
# Principle Coordinates Analysis
pcoRes < pcoa(rhoDist,correction="lingoes")
scores < pcoRes$vectors
#plot the PCO
plot(scores,type="n")
text(labels=rownames(kanto),scores[,1],scores[,2],cex=0.5)
##################################
# measuring evenness with Hurlbert's PIE
kantoPIE<HurlbertPIE(kanto)
#histogram
hist(kantoPIE)
#evenness of the kanto data is fairly high
#barplot
parX<par(mar=c(7,5,3,3))
barplot(kantoPIE,las=3,cex.names=0.7,
ylab="Hurlbert's PIE",ylim=c(0.5,1),xpd=FALSE)
par(parX)
#and we can see that the Tower has extremely low unevenness
#...overly high abundance of ghosts?
#let's look at evenness of 5 most abundant taxa
kantoPIE_5<HurlbertPIE(kanto,nAnalyze=5)
#barplot
parX<par(mar=c(7,5,3,3))
barplot(kantoPIE_5,las=3,cex.names=0.7,
ylab="Hurlbert's PIE for 5 most abundant taxa",ylim=c(0.5,1),xpd=FALSE)
par(parX)

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.
All documentation is copyright its authors; we didn't write any of that.