packages
# install if required
if(!require(tidyverse)){install.packages("tidyverse")}
if(!require(googlesheets4)){install.packages("googlesheets4")}
if(!require(GGally)){install.packages("GGally")}
if(!require(reshape2)){install.packages("reshape2")}
if(!require(lme4)){install.packages("lme4")}
if(!require(compiler)){install.packages("compiler")}
if(!require(parallel)){install.packages("parallel")}
if(!require(boot)){install.packages("boot")}
if(!require(lattice)){install.packages("lattice")}
if(!require(car)){install.packages("car")}
if(!require(ggpubr)){install.packages("ggpubr")}
if(!require(vegan)){install.packages("vegan")}
if(!require(ggsci)){install.packages("ggsci")}
if(!require(ggrepel)){install.packages("ggrepel")}
if(!require(ggforce)){install.packages("ggforce")}
if(!require(plotly)){install.packages("plotly")}
if(!require(rgl)){install.packages("rgl")}
if(!require(mgcv)){install.packages("mgcv")}
if(!require(factoextra)){install.packages("factoextra")}
if(!require(devtools)){install.packages("devtools")}
if(!require(gridExtra)){install.packages("gridExtra")}
if(!require(BiodiversityR)){install.packages("BiodiversityR")}
# Load
library(tidyverse)
library(googlesheets4); gs4_deauth()
library(googledrive)
library(GGally)
library(reshape2)
library(lme4)
library(compiler)
library(parallel)
library(boot)
library(lattice)
library(car)
library(ggpubr)
library(vegan)
library(readxl)
library(ggsci)
library(ggrepel)
library(ggforce)
library(plotly)
library(rgl)
library(mgcv)
library(dplyr)
library(factoextra)
library(devtools)
library(gridExtra)
library(BiodiversityR) # also loads vegan
library(readxl)
library(ggsci)
library(ggrepel)
library(ggforce)
require(stats)
install_github("vqv/ggbiplot")
require(ggbiplot)
Datos asociados al estudio de Condit et al. 2002. Beta-diversity in tropical forest trees. Science 295: 666-669. Supplementary material [data] (https://www.davidzeleny.net/anadat-r/doku.php/en:data:bci)
data(BCI)
BCI.env <- read.delim ('https://raw.githubusercontent.com/zdealveindy/anadat-r/master/data/bci.env.txt', row.names = 1)
BCI.soil <- read.delim ('https://raw.githubusercontent.com/zdealveindy/anadat-r/master/data/bci.soil.txt')
Se quiere evaluar la combinación de variables (ambientales u de química de suelo) que mejor explique la diversidad de especies vegetales en este paisaje.
M1 <- BCI
M2 <- cbind(BCI.env[,3:5], BCI.soil[,c(4,8,15)])
# checking, rownames
str(M2)
## 'data.frame': 50 obs. of 6 variables:
## $ elevation: num 130 137 144 147 144 ...
## $ convex : num -7.87 -10.7 -14.67 -16.76 -12.48 ...
## $ slope : num 6.69 5.09 3.1 1.87 5.12 ...
## $ B : num 0.794 0.67 0.595 0.568 0.399 ...
## $ K : num 141.9 137.2 98.7 98.4 94.1 ...
## $ pH : num 4.32 4.38 4.35 4.46 4.4 ...
check.datasets(M1, M2)
## OK
Chequeamos el largo del gradiente ambiental al que las especies están respondiendo. Gradientes > 3 se consideran “grandes” y se prefiere utilizar un método de ordenación que asuma respuestas unimodales de las especies. Es decir, que utilice promedios ponderados para calcular los puntajes de los sitios (e.g., ordenación unimodal), y no sumas ponderadas (e.g., ordenación lineal). Utilizar aquí el método que nos sirve para calcular el largo de los gradientes ambientales (y la biodiversidad beta potencial que logramos captar).
upr <- vegan::____(M1~ ., data=M2) # Full Model
lwr <- vegan::____(M1~ 1, data=M2) # Null model
vif.cca(upr) # V.I.F for the full model
Es un ‘Forward selection’ pero se detiene una vez el r^2 del modelo globas es sobrepasado por el modelo que se está poniendo a prueba.
## Stepwise Selection via Adjusted R^2
### 1. Global test
### 2. Radjusted forward selection
finalModel <- ordiR2step(lwr, scope= formula(upr), trace = FALSE)
finalModel$anova
# Adjusted R^2
RsquareAdj(upr)
RsquareAdj(finalModel)
# VIF
vif.cca(finalModel) # verificar si estamos "OK" con el Factor de inflación de la varianza ?
Calcula la importancia de cada término, cuando este se remueve del modelo global, i.e., “Efecto Marginal”
### Marginal effects (MORE USEFUL !)
set.seed(10)
anova(finalModel, by = "margin")
plot2 <- ordiplot(finalModel, choices = c(1,2), scaling="none")
sites.long <- sites.long(plot2, env.data=M2)
species.long <- species.long(plot2)
axis.long <- axis.long(finalModel, choices = c(1,2))
spec.envfit <- envfit(plot2, env=M1)
spec.data.envfit <- data.frame(r=spec.envfit$vectors$r, p=spec.envfit$vectors$pvals)
species.long2 <- species.long(plot2, spec.data=spec.data.envfit)
species.long2
envfit()
para las
variables ambientales. Necesitamos, en cambio, la obtención de los
‘biplot scores’ resultantes del análisis de ordenación. En el
código siguiente se obtienen dichos ‘biplot scores’.## Vector Fit
vectors<- data.frame(cbind(vector= rownames(data.frame(plot2$biplot)), axis1=data.frame(plot2$biplot)[,1] , axis2=data.frame(plot2$biplot)[,2] ) )
vectors$vector <- sapply(vectors[,1], as.factor)
vectors$axis1 <- as.numeric(vectors$axis1)
vectors$axis2 <- as.numeric(vectors$axis2)
vectors
#vectors.envfit <- envfit(plot2, env= M2[,c(3,14)])
#vectors.long3 <- vectorfit.long()
#vectors.long3
### Spec r >= 30%
species.long3 <- species.long2[species.long2$r >= 0.3, ]
species.long3
### Var Ambientales r >= 0
#vectors.long3 <- vectors.long3[vectors.long3$r >= 0, ]
#vectors.long3
f = 1
plotgg2 <- ggplot() +
geom_vline(xintercept = c(0), color = "grey70", linetype = 2) +
geom_hline(yintercept = c(0), color = "grey70", linetype = 2) +
xlab(axis.long[1, "label"]) +
ylab(axis.long[2, "label"]) +
scale_x_continuous(sec.axis = dup_axis(labels=NULL, name=NULL)) +
scale_y_continuous(sec.axis = dup_axis(labels=NULL, name=NULL)) +
geom_point(data=sites.long,
aes(x=axis1, y=axis2),
size=3, shape=1) +
#geom_text_repel(data=sites.long,aes(x=axis1, y=axis2, label=labels),colour="black") +
## Spp
geom_point(data=species.long3,aes(x=axis1, y=axis2)) +
geom_segment(data=species.long3,aes(x=0, y=0, xend=axis1, yend=axis2),colour="red", linewidth=0.7, arrow=arrow(angle=20)) +
geom_text_repel(data=species.long3,aes(x=axis1, y=axis2, label=labels),colour="red") +
## ENV
geom_segment(data=vectors,aes(x=0, y=0, xend=axis1*f, yend=axis2*f),colour="blue", linewidth=0.7, arrow=arrow(angle=20)) +
geom_text_repel(data=vectors,aes(x=axis1*f, y= axis2*f, label=vector),colour="blue") +
ggsci::scale_colour_npg() +
coord_fixed(ratio=1)
plotgg2
plot2 <- ordiplot(finalModel, choices = c(1,2), display = "sites", scaling=0)
ordisurf(plot2, y=as.numeric(M2$elevation), add=TRUE, col="blue", main= ) # "Elevation" species response
## species response
ordisurf(plot2, y=as.numeric(M1$Trichilia.tuberculata), add=TRUE, col="orange", main= "'Trichilia.tuberculata (orange)' response to elevation gradient") # "Trichilia.tuberculata" species response
plot2 <- ordiplot(finalModel, choices = c(1,2), display = "sites", scaling=0)
ordisurf(plot2, y=as.numeric(M2$slope), add=TRUE, col="blue", main= ) # "Elevation" species response
## species response
ordisurf(plot2, y=as.numeric(M1$Gustavia.superba), add=TRUE, col="red", main= "'Gustavia.superba (red)' response to slope gradient") # "Gustavia.superba" species response