# Lectura de base de datos
baseAbun1 <- read.table("ejemplo1.txt", header = TRUE, row.names = 1)Introducción al álgebra lineal
Lectura de base de datos
matrizAbun <- as.matrix(baseAbun1)
matrizAbun sp1 sp2
sitio1 10 10
sitio2 19 32
sitio3 5 3
sitio4 10 20
sitio5 3 19
sitio6 4 18
sitio7 7 7
sitio8 5 46
sitio9 25 26
sitio10 11 11
sitio11 5 30
\[ A = \left[ \begin{array}{cc} 10 & 10 \\ 19 & 32 \\ 5 & 3 \\ 10 & 20 \\ 3 & 19 \\ 4 & 18 \\ 7 & 7 \\ 5 & 46 \\ 25 & 26 \\ 11 & 11 \\ 5 & 30 \\ \end{array} \right] \]
Gráfica de dispersión de las abundancias de las dos especies
plot(matrizAbun, xlim = c(-1, 50), ylim = c(-1, 50), asp = 1, pch = 19)
text(matrizAbun, labels = row.names(matrizAbun), pos = 2)
abline(v = 0, col = "red")
abline(h = 0, col = "red")Hallar las abundancias totales de cada sitio.
sumas <- rowSums(matrizAbun)
sumas sitio1 sitio2 sitio3 sitio4 sitio5 sitio6 sitio7 sitio8 sitio9 sitio10
20 51 8 30 22 22 14 51 51 22
sitio11
35
Hallar la distancia magnitud de la abundancia por algunos sitios
nsitio1 <- sqrt(sum(matrizAbun[1, ] ^ 2))
nsitio1[1] 14.14214
nsitio2 <- sqrt(sum(matrizAbun[2, ] ^ 2))
nsitio2[1] 37.21559
nsitio9 <- sqrt(sum(matrizAbun[9, ] ^ 2))
nsitio9[1] 36.06938
La magnitud de un vector \(\boldsymbol{u} = [x \quad y]\) se define como:
\[ |\boldsymbol{u}| = \sqrt{x^2 + y^2} \]
Hallar la abundancias “conjunta” de todos los sitios.
Cálculo de la norma de cada vector fila.
normas <- sqrt(rowSums(matrizAbun ^ 2))
normas sitio1 sitio2 sitio3 sitio4 sitio5 sitio6 sitio7 sitio8
14.142136 37.215588 5.830952 22.360680 19.235384 18.439089 9.899495 46.270941
sitio9 sitio10 sitio11
36.069378 15.556349 30.413813
Llevar a una base de datos todas las medidas.
base_total <- cbind(matrizAbun, sumas, normas)
base_total sp1 sp2 sumas normas
sitio1 10 10 20 14.142136
sitio2 19 32 51 37.215588
sitio3 5 3 8 5.830952
sitio4 10 20 30 22.360680
sitio5 3 19 22 19.235384
sitio6 4 18 22 18.439089
sitio7 7 7 14 9.899495
sitio8 5 46 51 46.270941
sitio9 25 26 51 36.069378
sitio10 11 11 22 15.556349
sitio11 5 30 35 30.413813
Gráfica de las distancias “conjuntas”.
plot(matrizAbun, xlim = c(-1, 50), ylim = c(-1, 50), asp = 1, pch = 19)
text(matrizAbun, labels = row.names(matrizAbun), pos = 2)
arrows(0, 0, matrizAbun[, 1], matrizAbun[, 2], col = "blue", length = 0.2)
abline(v = 0, col = "red")
abline(h = 0, col = "red")
abline(a = 51, b = -1, col = "chartreuse4")
abline(a = 22, b = -1, col = "chartreuse4")Gráfica de comparación de las dos distancias o magnitudes de cada sitio como vector.
plot(sumas, normas,
asp = 1, xlim = c(0, 55), ylim = c(0, 55), pch =19,
las = 1)
text(sumas, normas, labels = names(sumas), pos = 2, col = "blue")Cálculo de los vectores unitarios para cada vector (sitio).
El vector unitario asociado a cualquier vector \(\boldsymbol{v}\) se define como:
\[ \boldsymbol{u} = \frac{\boldsymbol{v}}{|\boldsymbol{v}|} \]
matrizAbun sp1 sp2
sitio1 10 10
sitio2 19 32
sitio3 5 3
sitio4 10 20
sitio5 3 19
sitio6 4 18
sitio7 7 7
sitio8 5 46
sitio9 25 26
sitio10 11 11
sitio11 5 30
normas sitio1 sitio2 sitio3 sitio4 sitio5 sitio6 sitio7 sitio8
14.142136 37.215588 5.830952 22.360680 19.235384 18.439089 9.899495 46.270941
sitio9 sitio10 sitio11
36.069378 15.556349 30.413813
matrizNormalizadas <- matrizAbun/normas
matrizNormalizadas sp1 sp2
sitio1 0.7071068 0.7071068
sitio2 0.5105388 0.8598547
sitio3 0.8574929 0.5144958
sitio4 0.4472136 0.8944272
sitio5 0.1559626 0.9877630
sitio6 0.2169305 0.9761871
sitio7 0.7071068 0.7071068
sitio8 0.1080592 0.9941445
sitio9 0.6931087 0.7208331
sitio10 0.7071068 0.7071068
sitio11 0.1643990 0.9863939
Gráfica de los vectores unitarios.
plot(matrizNormalizadas, asp = 1, pch = 19,
xlim = c(0, 1), ylim = c(0, 1))
text(matrizNormalizadas, labels = 1:nrow(matrizAbun), pos = 1)Cálculo de proporción de abundancias.
(matrizProporciones <- matrizAbun/sumas) sp1 sp2
sitio1 0.50000000 0.5000000
sitio2 0.37254902 0.6274510
sitio3 0.62500000 0.3750000
sitio4 0.33333333 0.6666667
sitio5 0.13636364 0.8636364
sitio6 0.18181818 0.8181818
sitio7 0.50000000 0.5000000
sitio8 0.09803922 0.9019608
sitio9 0.49019608 0.5098039
sitio10 0.50000000 0.5000000
sitio11 0.14285714 0.8571429
plot(matrizProporciones, asp = 1, pch = 19,
xlim = c(0, 1), ylim = c(0, 1))
text(matrizProporciones, labels = 1:nrow(matrizAbun), pos = 2)Comparación gráfica entre “abundancia conjunta” y “proporciones”.
plot(matrizProporciones, asp = 1, pch = 19,
xlim = c(0, 1), ylim = c(0, 1), col = "red")
text(matrizProporciones, labels = 1:nrow(matrizAbun), pos = 1)
points(matrizNormalizadas, pch = 19,
col = "blue")
text(matrizNormalizadas, labels = 1:nrow(matrizAbun), pos = 1)Cálculo de la matriz centrada de abundancias.
promedios <- colMeans(matrizAbun)
promedios sp1 sp2
9.454545 20.181818
matrizCentrada <- t(t(matrizAbun) - promedios)
matrizCentrada sp1 sp2
sitio1 0.5454545 -10.1818182
sitio2 9.5454545 11.8181818
sitio3 -4.4545455 -17.1818182
sitio4 0.5454545 -0.1818182
sitio5 -6.4545455 -1.1818182
sitio6 -5.4545455 -2.1818182
sitio7 -2.4545455 -13.1818182
sitio8 -4.4545455 25.8181818
sitio9 15.5454545 5.8181818
sitio10 1.5454545 -9.1818182
sitio11 -4.4545455 9.8181818
Gráfica de los sitios con respecto al centroide o centro de masa de abundancias
plot(matrizCentrada,xlim = c(-20, 30), ylim = c(-20, 30), asp = 1, pch = 19)
text(matrizCentrada, labels = row.names(matrizAbun), pos = 2)
grid()
abline(h = 0, col = "red", lty = 4)
abline(v = 0, col = "red", lty = 4)Matriz de varianza y covarianza de matrices de abundancias y de abundacias centradas
matrizAbun sp1 sp2
sitio1 10 10
sitio2 19 32
sitio3 5 3
sitio4 10 20
sitio5 3 19
sitio6 4 18
sitio7 7 7
sitio8 5 46
sitio9 25 26
sitio10 11 11
sitio11 5 30
var(matrizAbun) sp1 sp2
sp1 47.27273 15.30909
sp2 15.30909 159.96364
matrizCentrada sp1 sp2
sitio1 0.5454545 -10.1818182
sitio2 9.5454545 11.8181818
sitio3 -4.4545455 -17.1818182
sitio4 0.5454545 -0.1818182
sitio5 -6.4545455 -1.1818182
sitio6 -5.4545455 -2.1818182
sitio7 -2.4545455 -13.1818182
sitio8 -4.4545455 25.8181818
sitio9 15.5454545 5.8181818
sitio10 1.5454545 -9.1818182
sitio11 -4.4545455 9.8181818
var(matrizCentrada) sp1 sp2
sp1 47.27273 15.30909
sp2 15.30909 159.96364
Composición de referencia
composicion1 <- c(1, 9)
composicion2 <- c(-9, 1) composicion1[1] 1 9
promedios sp1 sp2
9.454545 20.181818
promedios + composicion1 sp1 sp2
10.45455 29.18182
promedios + composicion2 sp1 sp2
0.4545455 21.1818182
Producto escalar entre dos vectores.
El producto escalar entre dos vectores \(\boldsymbol{v}\), \(\boldsymbol{w}\) se define como:
\[ \boldsymbol{v} \cdot \boldsymbol{w} \]
Y es equivalente a:
\[ \boldsymbol{v} \cdot \boldsymbol{w} = |\boldsymbol{v}| |\boldsymbol{w}| \cos \theta \]
Donde \(\theta\) es el ángulo entre los vectores \(\boldsymbol{v}\) y \(\boldsymbol{w}\).
## Producto punto de dos vectores
composicion1%*%composicion2 [,1]
[1,] 0
## Matriz con los vectores de referencia
composicion <- rbind(composicion1, composicion2)
composicion [,1] [,2]
composicion1 1 9
composicion2 -9 1
Gráfica de los sitios centrados y las abundancias de referencia
plot(matrizCentrada,xlim = c(-20, 30), ylim = c(-20, 30), asp = 1, pch = 19)
text(matrizCentrada, labels = row.names(matrizAbun), pos = 2)
abline(h = 0, col = "red")
abline(v = 0, col = "red")
arrows(0, 0, composicion1[1], composicion1[2], col = "blue", length = 0.2, lwd = 2)
arrows(0, 0, composicion2[1], composicion2[2], col = "blue", length = 0.2, lwd = 2)
grid()Proyección de un vector sobre otro.
La magnitud de la proyección del vector \(\boldsymbol{v}\) sobre \(\boldsymbol{w}\) se define como:
\[ Proy_{\boldsymbol{w}}{\boldsymbol{v}} = \frac{\boldsymbol{v} \cdot \boldsymbol{w}}{|\boldsymbol{w}|} \] Donde \(|\cdot|\) es la norma de un vector, \(Proy_{\boldsymbol{w}}{\boldsymbol{v}}\) es la magnitud de la proyección de \(\boldsymbol{v}\) sobre \(\boldsymbol{w}\) y el producto \(\cdot\) es el producto escalar entre dos vectores.
compoUnidad <- composicion / sqrt(rowSums(composicion ^ 2))
compoUnidad [,1] [,2]
composicion1 0.1104315 0.9938837
composicion2 -0.9938837 0.1104315
matrizProyectada <- matrizCentrada %*% t(compoUnidad)
matrizProyectada composicion1 composicion2
sitio1 -10.0593081 -1.6665121
sitio2 12.8000178 -8.1819722
sitio3 -17.5686519 2.5298859
sitio4 -0.1204708 -0.5621969
sitio5 -1.8873752 6.2845578
sitio6 -2.7708274 5.1802425
sitio7 -13.3722539 0.9838445
sitio8 25.1683487 7.2784415
sitio9 7.4993045 -14.8078637
sitio10 -8.9549928 -2.5499643
sitio11 9.2662090 5.5115371
plot(matrizProyectada, asp = 1, pch = 19, ylim = c(-20, 20))
text(matrizProyectada, labels = row.names(matrizAbun), pos = 1)
grid()
abline(h = 0, col = "red")
abline(v = 0, col = "red")var(matrizProyectada) composicion1 composicion2
composicion1 161.949889 -2.567184
composicion2 -2.567184 45.286475
Interpretación
matrizCentrada sp1 sp2
sitio1 0.5454545 -10.1818182
sitio2 9.5454545 11.8181818
sitio3 -4.4545455 -17.1818182
sitio4 0.5454545 -0.1818182
sitio5 -6.4545455 -1.1818182
sitio6 -5.4545455 -2.1818182
sitio7 -2.4545455 -13.1818182
sitio8 -4.4545455 25.8181818
sitio9 15.5454545 5.8181818
sitio10 1.5454545 -9.1818182
sitio11 -4.4545455 9.8181818
matrizProyectada composicion1 composicion2
sitio1 -10.0593081 -1.6665121
sitio2 12.8000178 -8.1819722
sitio3 -17.5686519 2.5298859
sitio4 -0.1204708 -0.5621969
sitio5 -1.8873752 6.2845578
sitio6 -2.7708274 5.1802425
sitio7 -13.3722539 0.9838445
sitio8 25.1683487 7.2784415
sitio9 7.4993045 -14.8078637
sitio10 -8.9549928 -2.5499643
sitio11 9.2662090 5.5115371
Vectores propios
m_vc <- var(matrizCentrada)
vp1 <- eigen(m_vc)
vp1eigen() decomposition
$values
[1] 162.00635 45.23001
$vectors
[,1] [,2]
[1,] 0.1322594 -0.9912151
[2,] 0.9912151 0.1322594
(matrizRotada_vp <- matrizCentrada%*%vp1$vectors) [,1] [,2]
sitio1 -10.0202308 -1.887304
sitio2 12.9768370 -7.898533
sitio3 -17.6200338 2.142956
sitio4 -0.1080794 -0.564710
sitio5 -2.0251105 6.241537
sitio6 -2.8840662 5.118062
sitio7 -13.3906545 0.689563
sitio8 25.0022170 7.830111
sitio9 7.8231027 -14.639380
sitio10 -8.8967562 -2.746260
sitio11 9.1427748 5.713960
plot(matrizRotada_vp, asp = 1, pch = 19, ylim = c(-16, 16))
text(matrizRotada_vp, labels = row.names(matrizAbun), pos = 3)
abline(h=0, col = "red")
abline(v=0, col = "red")
grid()round(var(matrizRotada_vp), 3) [,1] [,2]
[1,] 162.006 0.00
[2,] 0.000 45.23