Datos de la tesis doctoral de Verneaux (1973)
Verneaux, J. (1973) Cours d’eau de Franche-Comté (Massif du Jura). Recherches écologiques sur le réseau hydrographique du Doubs. Essai de biotypologie. Thèse d’état, Besançon. 1–257
La tesis propone el uso de las especies de peces para caracterizar las zonas ecológicas a lo largo de rios y quebradas de Europa. Él mostró que las comunidades de peses son buenos indicadores biológicos para estos cuerpos de agua. A partir del nacimiento propuso una topología en cuatro zonas, y las designó de acuerdo a las características de las especies como:
Las condiciones ecológicas correspondientes, con mucha variación entre los rios, varía desde agua relativamente pristinas, bien oxigendadas y oligotróficas hasta eutróficas y sin oxígeno.
Los datos se tomaron en 30 lugares a lo largo del río Doubs. Este río corre cerca de la frontera franco-suiza al borde del macizo del Jura.
ambient<-read.csv2("ambientales.csv",enc="latin1",row.names=1)
peces<-read.csv2("peces.csv",enc="latin1",row.names=1)
locs<-read.csv2("localidades.csv",enc="latin1",row.names=1)
nomEspec<-read.csv2("nombresdeespecies.csv",enc="latin1")
nomVarAmbient<-read.csv2("Nombresdevariablesambientales.csv",enc="latin1")
Despliegue de la base de datos. (Este procedimiento no es recomendado para grandes base de datos.)
peces
## Cogo Satr Phph Neba Thth Teso Chna Chto Lele Lece Baba Spbi Gogo Eslu
## 1 0 3 0 0 0 0 0 0 0 0 0 0 0 0
## 2 0 5 4 3 0 0 0 0 0 0 0 0 0 0
## 3 0 5 5 5 0 0 0 0 0 0 0 0 0 1
## 4 0 4 5 5 0 0 0 0 0 1 0 0 1 2
## 5 0 2 3 2 0 0 0 0 5 2 0 0 2 4
## 6 0 3 4 5 0 0 0 0 1 2 0 0 1 1
## 7 0 5 4 5 0 0 0 0 1 1 0 0 0 0
## 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## 9 0 0 1 3 0 0 0 0 0 5 0 0 0 0
## 10 0 1 4 4 0 0 0 0 2 2 0 0 1 0
## 11 1 3 4 1 1 0 0 0 0 1 0 0 0 0
## 12 2 5 4 4 2 0 0 0 0 1 0 0 0 0
## 13 2 5 5 2 3 2 0 0 0 0 0 0 0 0
## 14 3 5 5 4 4 3 0 0 0 1 1 0 1 1
## 15 3 4 4 5 2 4 0 0 3 3 2 0 2 0
## 16 2 3 3 5 0 5 0 4 5 2 2 1 2 1
## 17 1 2 4 4 1 2 1 4 3 2 3 4 1 1
## 18 1 1 3 3 1 1 1 3 2 3 3 3 2 1
## 19 0 0 3 5 0 1 2 3 2 1 2 2 4 1
## 20 0 0 1 2 0 0 2 2 2 3 4 3 4 2
## 21 0 0 1 1 0 0 2 2 2 2 4 2 5 3
## 22 0 0 0 1 0 0 3 2 3 4 5 1 5 3
## 23 0 0 0 0 0 0 0 0 0 1 0 0 0 0
## 24 0 0 0 0 0 0 1 0 0 2 0 0 1 0
## 25 0 0 0 0 0 0 0 0 1 1 0 0 2 1
## 26 0 0 0 1 0 0 1 0 1 2 2 1 3 2
## 27 0 0 0 1 0 0 1 1 2 3 4 1 4 4
## 28 0 0 0 1 0 0 1 1 2 4 3 1 4 3
## 29 0 1 1 1 1 1 2 2 3 4 5 3 5 5
## 30 0 0 0 0 0 0 1 2 3 3 3 5 5 4
## Pefl Rham Legi Scer Cyca Titi Abbr Icme Acce Ruru Blbj Alal Anan
## 1 0 0 0 0 0 0 0 0 0 0 0 0 0
## 2 0 0 0 0 0 0 0 0 0 0 0 0 0
## 3 0 0 0 0 0 0 0 0 0 0 0 0 0
## 4 2 0 0 0 0 1 0 0 0 0 0 0 0
## 5 4 0 0 2 0 3 0 0 0 5 0 0 0
## 6 1 0 0 0 0 2 0 0 0 1 0 0 0
## 7 0 0 0 0 0 0 0 0 0 0 0 0 0
## 8 0 0 0 0 0 0 0 0 0 0 0 0 0
## 9 0 0 0 0 0 1 0 0 0 4 0 0 0
## 10 0 0 0 0 0 0 0 0 0 0 0 0 0
## 11 0 0 0 0 0 0 0 0 0 0 0 0 0
## 12 0 0 0 0 0 0 0 0 0 0 0 0 0
## 13 0 0 0 0 0 0 0 0 0 0 0 0 0
## 14 0 0 0 0 0 0 0 0 0 0 0 0 0
## 15 0 0 0 0 0 1 0 0 0 0 0 0 0
## 16 1 0 1 0 1 1 0 0 0 1 0 0 0
## 17 2 1 1 0 1 1 0 0 0 2 0 2 1
## 18 3 2 1 0 1 1 0 0 1 2 0 2 1
## 19 1 2 1 1 1 2 1 0 1 5 1 3 1
## 20 2 3 2 2 1 4 1 0 2 5 2 5 2
## 21 3 3 2 2 2 4 3 1 3 5 3 5 2
## 22 4 3 3 2 3 4 4 2 4 5 4 5 2
## 23 0 0 0 0 0 0 0 0 0 1 0 2 0
## 24 0 0 1 0 0 0 0 0 2 2 1 5 0
## 25 0 0 0 1 0 0 0 0 1 1 0 3 0
## 26 1 2 2 1 1 3 2 1 4 4 2 5 2
## 27 1 3 3 1 2 5 3 2 5 5 4 5 3
## 28 2 4 4 2 4 4 3 3 5 5 5 5 4
## 29 4 5 5 2 3 3 4 4 5 5 4 5 4
## 30 5 5 3 5 5 5 5 5 5 5 5 5 5
summary(peces)
## Cogo Satr Phph Neba
## Min. :0.00 Min. :0.00 Min. :0.000 Min. :0.000
## 1st Qu.:0.00 1st Qu.:0.00 1st Qu.:0.000 1st Qu.:1.000
## Median :0.00 Median :1.00 Median :3.000 Median :2.000
## Mean :0.50 Mean :1.90 Mean :2.267 Mean :2.433
## 3rd Qu.:0.75 3rd Qu.:3.75 3rd Qu.:4.000 3rd Qu.:4.000
## Max. :3.00 Max. :5.00 Max. :5.000 Max. :5.000
## Thth Teso Chna Chto
## Min. :0.00 Min. :0.0000 Min. :0.0 Min. :0.0000
## 1st Qu.:0.00 1st Qu.:0.0000 1st Qu.:0.0 1st Qu.:0.0000
## Median :0.00 Median :0.0000 Median :0.0 Median :0.0000
## Mean :0.50 Mean :0.6333 Mean :0.6 Mean :0.8667
## 3rd Qu.:0.75 3rd Qu.:0.7500 3rd Qu.:1.0 3rd Qu.:2.0000
## Max. :4.00 Max. :5.0000 Max. :3.0 Max. :4.0000
## Lele Lece Baba Spbi
## Min. :0.000 Min. :0.000 Min. :0.000 Min. :0.0
## 1st Qu.:0.000 1st Qu.:1.000 1st Qu.:0.000 1st Qu.:0.0
## Median :1.000 Median :2.000 Median :0.000 Median :0.0
## Mean :1.433 Mean :1.867 Mean :1.433 Mean :0.9
## 3rd Qu.:2.000 3rd Qu.:3.000 3rd Qu.:3.000 3rd Qu.:1.0
## Max. :5.000 Max. :5.000 Max. :5.000 Max. :5.0
## Gogo Eslu Pefl Rham
## Min. :0.000 Min. :0.000 Min. :0.0 Min. :0.0
## 1st Qu.:0.000 1st Qu.:0.000 1st Qu.:0.0 1st Qu.:0.0
## Median :1.000 Median :1.000 Median :0.5 Median :0.0
## Mean :1.833 Mean :1.333 Mean :1.2 Mean :1.1
## 3rd Qu.:3.750 3rd Qu.:2.000 3rd Qu.:2.0 3rd Qu.:2.0
## Max. :5.000 Max. :5.000 Max. :5.0 Max. :5.0
## Legi Scer Cyca Titi
## Min. :0.0000 Min. :0.0 Min. :0.0000 Min. :0.0
## 1st Qu.:0.0000 1st Qu.:0.0 1st Qu.:0.0000 1st Qu.:0.0
## Median :0.0000 Median :0.0 Median :0.0000 Median :1.0
## Mean :0.9667 Mean :0.7 Mean :0.8333 Mean :1.5
## 3rd Qu.:1.7500 3rd Qu.:1.0 3rd Qu.:1.0000 3rd Qu.:3.0
## Max. :5.0000 Max. :5.0 Max. :5.0000 Max. :5.0
## Abbr Icme Acce Ruru
## Min. :0.0000 Min. :0.0 Min. :0.000 Min. :0.0
## 1st Qu.:0.0000 1st Qu.:0.0 1st Qu.:0.000 1st Qu.:0.0
## Median :0.0000 Median :0.0 Median :0.000 Median :1.0
## Mean :0.8667 Mean :0.6 Mean :1.267 Mean :2.1
## 3rd Qu.:1.0000 3rd Qu.:0.0 3rd Qu.:2.000 3rd Qu.:5.0
## Max. :5.0000 Max. :5.0 Max. :5.000 Max. :5.0
## Blbj Alal Anan
## Min. :0.000 Min. :0.0 Min. :0.00
## 1st Qu.:0.000 1st Qu.:0.0 1st Qu.:0.00
## Median :0.000 Median :0.0 Median :0.00
## Mean :1.033 Mean :1.9 Mean :0.90
## 3rd Qu.:1.750 3rd Qu.:5.0 3rd Qu.:1.75
## Max. :5.000 Max. :5.0 Max. :5.00
(ab <- table(unlist(peces)))
##
## 0 1 2 3 4 5
## 435 108 87 62 54 64
ab <- data.frame(ab)
names(ab) <- c("Caso","Frecuencia")
require(ggplot2)
## Loading required package: ggplot2
barras <- ggplot(data.frame(ab), aes(Caso,Frecuencia))
barras + geom_bar(stat = "identity") +
ggtitle("Distribución de abundancia de clases") +
xlab("Clase de abundancia")+
ylab("Frecuencia")
require(ggplot2)
mapa <- ggplot(locs, aes(x, y))
mapa + geom_point() +
coord_fixed() +
geom_path(col = "blue") +
geom_text(label = row.names(locs), hjust = 1.5) +
geom_text(data = NULL, x=50, y = 10, label = "Nacimiento") +
geom_text(data = NULL, x=30, y = 120, label = "Desembocadura") +
ggtitle("Localización")
seleccion1 <- subset(peces, select = c(Satr, Thth, Baba, Abbr))
seleccion1 <- data.frame(locs, seleccion1)
require(reshape2)
## Loading required package: reshape2
seleccion2 <- melt(seleccion1, id.vars = c("x","y"), variable.name = "especie",
value.name = "abundancia")
seleccion2$especie2 <- factor(seleccion2$especie,
labels = c("Trucha parda",
"Tímalo", "Barbo", "Brema comúm"))
require(ggplot2)
especs <- ggplot(seleccion2, aes(x, y, size = abundancia))
especs + geom_point() +
coord_fixed() +
facet_wrap( ~ especie2, ncol = 2) +
scale_size_continuous(range = c(3,7)) +
ggtitle("Abundancia de cuatro especies")
seleccion3 <- merge(seleccion2, nomEspec, by.x = "especie", by.y = "code")
require(ggplot2)
especs <- ggplot(seleccion3, aes(x, y, size = abundancia))
especs + geom_point() +
coord_fixed() +
facet_wrap( ~ Scientific, ncol = 2) +
scale_size_continuous(range = c(3,7)) +
ggtitle("Abundancia de cuatro especies")
# Calcular el número de sitios donde cada especie está presente.
# Para sumar por columnas, el segundo argumento de la
# función apply() se establece en 2.
peces.pres <- apply(peces > 0, 2, sum)
# Ordenar el resultado en orden creciente
sort(peces.pres)
## Icme Cogo Thth Teso Abbr Blbj Chto Rham Scer Anan Chna Spbi Cyca Acce Legi
## 7 8 8 8 9 10 11 11 11 11 12 12 12 12 13
## Baba Alal Pefl Satr Titi Lele Eslu Ruru Phph Gogo Neba Lece
## 14 14 15 17 17 18 18 18 20 20 24 25
# Calcular las frecuencias en porcentajes
peces.fRel <- 100*peces.pres/nrow(peces)
# Ordenar y redondear el resultado a un dígito
round(sort(peces.fRel), 1)
## Icme Cogo Thth Teso Abbr Blbj Chto Rham Scer Anan Chna Spbi Cyca Acce Legi
## 23.3 26.7 26.7 26.7 30.0 33.3 36.7 36.7 36.7 36.7 40.0 40.0 40.0 40.0 43.3
## Baba Alal Pefl Satr Titi Lele Eslu Ruru Phph Gogo Neba Lece
## 46.7 46.7 50.0 56.7 56.7 60.0 60.0 60.0 66.7 66.7 80.0 83.3
# Convertir a base de datos
peces.fRel <- data.frame(distribucion = round(sort(peces.fRel), 1))
Gráfica de presencia de distribución (dispersión) de especies.
require(ggplot2)
hist1 <- ggplot(peces.fRel, aes(distribucion))
hist1 + geom_histogram(binwidth = 5) +
ggtitle("Ocurrencias de especies") +
xlab("Porcentaje de ocurrencia (%)") +
ylab("Número de especies")
# Cálculo del número de especies por sitio
# Para sumar por filas el segundo argumento de apply() se establece en 1
sit.pres <- apply(peces > 0, 1, sum)
# Ordenación de los resultados en orden creciente
sort(sit.pres)
## 8 1 2 23 3 7 9 10 11 12 13 4 24 25 6 14 5 15 16 26 30 17 20 22 27
## 0 1 3 3 4 5 5 6 6 6 6 8 8 8 10 10 11 11 17 21 21 22 22 22 22
## 28 18 19 21 29
## 22 23 23 23 26
Ejercicio: Consturir el mapa de riqueza.