kanto: Example Species Abundances Tables

Description Format Details Source Examples

Description

A totally fictional example of species abundance data, for testing functions that require a site-by-taxon table of community ecology data.

Format

A table of type integer, representing terrestrial fauna and flora abundance counts.

Details

A classic dataset of ecological data collected by Satoshi and Okido, consisting of individual counts for 54 terrestrial faunal and floral species, fron 23 sites across the mainland Kanto region.

Different ontogenetic stages were compounded and recorded by the common name for the first ontogenetic stage, with some inconsistency for species whose earliest stage have only been recently recognized. When separate names are commonly applied to sexual dimorphic forms, these were also combined and a single common name was used.

Note: This data is a totally made-up, satirical homage to a well-known video game series (thus constituting fair-use).

Source

Pokemon And All Respective Names are Trademark and Copyright of Nintendo 1996-2015.

Examples

  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
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
data(kanto)

#visualize site abundances as barplots
barplotAbund<-function(x){
	x<-x[,colSums(x)>0]
	layout(1:(nrow(x)+1))
	xpar<-par(mar=c(0,7,2,0))
	for(i in 1:(nrow(x)-1)){
		barplot(x[i,],ylab=rownames(x)[i],
			names.arg="")
		}
	barplot(x[nrow(x),],
		ylab=rownames(x)[nrow(x)],las=3)
	par(xpar)
	layout(1)
	mtext("Abundances",side=2,line=3,adj=0.8)
	}

#first five sites
kanto5<-kanto[1:5,]
barplotAbund(kanto5)

#get pairwise Spearman rho coefficients
rhoCoeff<-pairwiseSpearmanRho(kanto,dropAbsent="bothAbsent")

#what are the nearest-neighbor rhos (largest rho correlations)?
diag(rhoCoeff)<-NA
rhoNearest<-apply(rhoCoeff,1,max,na.rm=TRUE)
rhoNearest

# We can see the power plant sample is extremely different from the rest

# measure evenness: Hurlbert's PIE

kantoPIE<-HurlbertPIE(kanto)

# compare to dominance (relative abundance of most abundant taxon)

dominance<-apply(kanto,1,function(x) max(x)/sum(x) )

plot(kantoPIE,dominance)

# relatively strong relationship!


## Not run: 
#######################
# Some Cool Ecology Stuff With Other Packages

# basically all the analyses & visualizations
		#for ecology in R that I think are awesome


###########################
#Ordination (PCO, DCA)

#get bray-curtis distances
library(vegan)
bcDist <- vegdist(kanto,method="bray")

#do a PCO on the bray-curtis distances
pcoRes <- pcoa(bcDist,correction="lingoes")
scores <- pcoRes$vectors
#plot the PCO
plot(scores,type="n")
text(labels=rownames(kanto),scores[,1],scores[,2],cex=0.5)

#the way the power plant and the pokemon tower converge
	# is very suspicious: may be distortion due to a long gradient

#do a DCA instead with vegan's decorana
dcaRes<-decorana(kanto)
#plot using native vegan functions
	#will show species scores in red
plot(dcaRes,cex=0.5)
#kind of messy

#show just the sites scores
plot(dcaRes,cex=0.5,display="sites")

#show just the species scores
plot(dcaRes,cex=0.5,display="species")

#well, that's pretty cool

#######################
#get the nearest neighbor for each site based on pair-wise rho coefficients
rhoNeighbor<-apply(rhoCoeff,1,function(x)
	rownames(kanto)[tail(order(x,na.last=NA),1)])

#let's plot the nearest neighbor connections with igraph
NNtable<-cbind(rownames(kanto),rhoNeighbor)

# now plot with igraph
library(igraph)
NNlist <- graph.data.frame(NNtable)
plot(NNlist)

#arrows point at the nearest neighbor of each sample
	# based on maximum Spearman rho correlation

##################################
# Two Way Cluster With Heatmap

# This example based on code provided by Max Christie

# load pheatmap library for this example
library(pheatmap) 

# get distance matrices for sites and taxa
	# based on bray-curtis dist
	# standardized to total abundance

# standardize site matrix to relative abundance
siteStand <- decostand(kanto, method = "total")
# site distance matrix (Bray-Curtis)
siteDist <- vegdist(siteStand, "bray", diag = TRUE)

# standardize taxa matrix to relative abundance
taxaStand <- decostand(t(kanto), method = "total")
# taxa distance matrix (Bray-Curtis)
taxaDist <- vegdist(taxaStand, "bray", diag = TRUE)

### Need to set graphic parameters for table

# Check out range of values for relative abundance
# hist(myStand) # none get very high...

# number of breaks: number of colors for heatmap
nBreaks<-15

# set underValue
	# anything below this counts as not appearing
	# at that site for visualization purposes
underValue<- min(siteStand[siteStand>0])-min(siteStand[siteStand>0])/10
# set overValue (max relative abundance)
overValue<-max(siteStand)
# you can set your breaks to any sequence you want
	# and they don't have to be the same length.  
	# You can do this manually too.
# here we added a 0 to 'underValue' bin to 
	# the heatmap, making this bin essentially 0.
colorBreaks <- c(0,seq(underValue,max(siteStand), 
	by = max(siteStand)/(nBreaks-1)))
# here we used the function rainbow to create a vector of colors.  
	# You can set these colors yourself too.  
# It is important that this vector is one element 
	# less than the myBreaks vector
rainColors <- rainbow(nBreaks) 
# now we can add "white" onto the vector, 
	# this will be the first color bin, 
	# which we're going to set to be (essentially) 0.  
rainColors <- c("white", rainColors) 
# If you don't add white, taxa at 0 abundance get colored in

### Plot the 2-Way Cluster

# heatmap, with user-set colors
# feed the function a distance matrix we wanted to use.  
	#siteDist and taxaDist made above by vegdist (bray-curtis)
# scale is the relative abundance, let's label it as such


dev.new(width=10)
#for some reason, mtext() doesn't recognize pheatmap as plot.new
plot.new(width=7) 
pheatmap(siteStand, color = rainColors, breaks = colorBreaks, 
	clustering_method = "ward.D", 
	clustering_distance_rows = siteDist, 
	clustering_distance_cols = taxaDist)
mtext("Relative Abundance",side=4,line=-1.4,adj=0.95)

# pretty cool looking!

##############################
## Testing for differences between groups of sites

#is there a difference between routes and non-routes
groups<-rep(0,nrow(kanto))
groups[grep(rownames(kanto),pattern="Route")]<-1

#anosim (in vegan)
	#are distances within groups smaller than distances between?
#we could also use adonis from vegan instead 
library(vegan)

anosim(dat=kanto,grouping=groups)
adonis(kanto~factor(groups))
#both are very significant

#alternative: using multivariate GLMs in mvabund

library(mvabund)

ft <- manyglm(formula=kanto~factor(groups))
anova(ft)
#also highly significant!



## End(Not run)

paleotree documentation built on Nov. 17, 2017, 5:11 a.m.