# A (2,1,1,3)
# B (1,4,2,5,0,3)
# Calcular: (1) B'.A' (2) (A.B)' (3) Demostrar que B'.A' = (A'.B')
# R./
= matrix(c(2,1,1,3),2,2,byrow=TRUE) # Matriz A
A = matrix(c(1,4,2,5,0,3),2,3,byrow=TRUE) # Matriz B
B
A B
Resumen de las actividades
Objetivo de la actividad
El presente taller tiene como objetivo, realizar un entrenamiento básico, realizar un entrenamiento general sobre algebra lineal aplicada a datos multivariados. Iniciarémos con operaciones básicas y posteriormente se realizarán algunas aplicaciones estadísticas como el análisis de componentes principales (pca) y el análisis discriminante (lda).
Documento de soporte
Se utilizará como referente al capitulo 3 del libro Análisis de datos ecológicos y ambientales (Rodríguez-Barrios, J. 2023), alojado en el siguiente enlace 📖Enlace_Libro
Actividad 1. Operaciones básicas de matrices
[
Descargar el script de RMarkDown (rmd) titulado “Taller2.2.matrices.Rmd” en el siguiente enlace 📈Taller2.2.matrices.Rmd.
Descargar la base de datos con mediciones de cuatro variables morfométricas a estudiantes de biología (csv) titulado “datos1.csv” en el siguiente enlace 📈datos1.csv.
Crear una carpeta en su computador titulada “Taller2.2_Matrices.RStudio” y guardar el archivo descargado junto con archivo datos1.csv.
Cerrar el RStudio y Abrir el archivo “Taller2.2.matrices.Rmd y abrir el siguiente enlace, correspondiente al ejercicio a realizar 📰Taller1.IntroRStudio.
Revisar los siguientes enlaces complementarios:
1.1 producto matricial
Respuestas
# (1) B'.A'
t(B)%*%t(A) # %*% representa el producto matricial,
# "t" corresponde a la transpuesta de una matriz
# (2) (A.B)'
t(A%*%B)
# (3) B'.A' = (A.B)'
t(B)%*%t(A)) == t(A%*%B) # Demostración (
1.2 Determinantes
# A (2,3,3,2)
# B (1,4,2,5,0,3)
# Cacular: Determinante de A y de B
#R./
= matrix (c(2,3,3,2),2,2,byrow=TRUE)
A = matrix (c(1,4,2,5,0,3),3,3,byrow=TRUE)
B
A B
Respuestas
# Determinantes
det(A)
det(B)
1.3 Matriz inversa
# A (5,2,2,2)
# Calcular inversa de A
# R./
= matrix(c(5,2,2,2), 2,2, byrow= T)
A
A
Respuestas
# Matriz inversa (solve)
solve(A)
1.4 Matriz de varianza - covarianza*
# A (2,2,4,3,6,9), 3 x 2
# B (2:10), 5 x 2
# R./
= matrix(c(2,2,4,3,6,9),3,2, byrow= T)
A = matrix(c(2:10), 5,2, byrow=T)
B
A B
Respuestas
# Covarianzas de cada matriz (c/grupo)
= cov(A)
cov.A = cov(B)
cov.B
cov.A cov.B
1.5 Covarianza generalizada (S)
= (3*(cov.A) + 5*(cov.B))/8 # cov.g corresponde a la covarianza generalizada
cov.g cov.g
Respuestas
# Covarianza generalizada invertida (S-1)
= solve(cov.g) # cov.g.i representa a la covarianza gralizada invertida
cov.g.i
cov.g.i
round(cov.g.i,2) # round corresponde al redondeo de decimales
Aplicación de matrices en un Análisis de Componentes Principales - PCA
1. Matriz centrada (m.c) y matriz rotada (m.r)
Pasos:
Cargar librerías requeridas
Crear una matriz (o un dataframe)
Hallar el vector de medias (v.m)
Hallar la matriz centrada (m.c)
Hallar la matriz de covarianzas de m.c (s.c)
Hallar la matriz de autovectores o vectores propios (v.p)
Hallar la matriz rotada de A (m.r)
Graficar (stats y ggplot2)
Comparar con el PCA realizado en el paquete
vegan
2. Cargar las librerías requeridas
# Librerías requeridas
library(tidyverse)
library(xtable) # Importar y exportar
library(openxlsx) # exportar "*.xlsx"
library(readxl) # Importar y exportar
library(ggplot2) # gráfica en ggplot2
library(ggrepel) # insertar rótulos a los puntos
library(vegan) # para realizar el pca con vegan
3. Vector de medias (v.m) y matriz centrada (m.c)
<- data.frame(Var1= c(1.2,3.4,4.5,5.6,1.2,3.4,4.5,5.6,
A 0.8,2.4,1.8,1.5,1.6,2.1,1.2,0.8),
Var2= c(2.4,6.8,9.0,11.2,2.4,6.8,9.0,11.2,
1.6,4.8,3.6,3.0,3.2,4.2,2.4,1.6),
Var3= c(4.4,10.8,19.0,21.2,12.4,16.8,19.0,21.2,
11.6,14.8,13.6,13.0,13.2,14.2,12.4,11.6))
A
<- colMeans(A) # Vector de medias
v.m
v.m
<- t(t(A) - v.m) # Centralización de datos = Matriz centrada
m.c round(m.c , 2)
4. Vectores própios (v.p)
<- t(t(A) - v.m) # Matriz centrada
m.c round(m.c , 2)
<- var(m.c) # Covarianza de la matriz centrada
s.c round(s.c , 2)
<- eigen(s.c) # Vectores y valores propios de m.centrada
vv.p round(vv.p, 2)
<- vv.p$vectors # Matriz de vectores propios
v.p round(v.p, 2)
5. Matriz Rotada (m.r)
<- as.matrix(m.c) # Matriz centrada (m.c)
m.c round(m.c, 2)
<- m.c %*% v.p # Matriz rotada (m.r)
m.r round(m.r, 2)
<- data.frame (n= 1:16, A) # matriz A como dataframe
A round(A, 2)
6. figura (paquete - stats)
x11()
plot(m.r[,1:2],
xlab="PC1", ylab="PC2")
text(m.r, # Rótulos de los datos (filas)
labels = row.names(A),
pos=3, cex=0.7)
7. figura
<- data.frame(m.r) # matriz rotada como data.frame
m.r
x11()
ggplot(m.r, aes(x= X1 ,y= X2)) +
geom_point() +
geom_text_repel (aes (label = A$n)) +
geom_hline(yintercept=0,linetype=2,size=1) +
geom_vline(xintercept=0,linetype=2,size=1)
Análisis de Componentes principales - PCA en librería "vegan"
Objetivo: Comparar los resultados del PCA anterior con los generados por un paquete o librería de R
1. Realización del PCA
library(vegan) # Librería requerida
A head(A[,2:4]) # Variables y observaciones (columnas y filas)
<- rda(A[,2:4]) # Realización del pca pca
2. Figura del PCA
x11()
biplot(pca) # Figura del pca
Operaciones matriciales - base Caimanes
Objetivo de la actividad:
Poner en práctica operaciones matriciales, para resolver un ejercicio de ordenación multivariada, denominado “Análisis de Componentes Principales - PCA
“, cuyo objetivo es relacionar a las observaciones de las matrices o de las bases de datos (filas de la matriz), de acuerdo a las variables definidas (columnas de la matriz). Finalmente se realizará la misma técnica con la librería vegan
de R. La base de datos a utilizar se presenta en dos formatos: caimanes.csv y caimanes.xlsx. Esta base cuenta con 3 variables morfométricas (columnas) y 17 individuos evaluados (filas).
Procedimiento del PCA
Cargar librerías requeridas
Cargar la base
datos
(usar diferentes opciones para practicar)Hallar el vector de medias (v.m) y la matriz centrada (m.c)
Hallar la matriz de covarianzas de m.c (s.c)
Hallar la matriz de autovectores o vectores propios (v.p)
Hallar la matriz rotada de A (m.r)
Graficar (stats y ggplot2)
Comparar con el PCA realizado en el paquete
vegan
1. Cargar las librerías requeridas
# Librerías requeridas
library(tidyverse)
library(xtable) # Importar y exportar
library(openxlsx) # exportar "*.xlsx"
library(readxl) # Importar y exportar
library(ggplot2) # gráfica en ggplot2
library(ggrepel) # insertar rótulos a los puntos
library(vegan) # para realizar el pca con vegan
2. Cargar o importar la base de datos
#------------
<- read_excel("caimanes.xlsx") # paquete "readxl"
datos head(datos)
<- read_csv2("caimanes.csv") # paquete "readxl"
datos head(datos)
<- read.csv2("caimanes.csv") # paquete "utils"
datos head(datos)
- Ajustar la base de datos
# Resumir los rótulos de las columnas
colnames(datos) <- c("ID", "Sexo","LT","CD","CS") # Rótulos de la base de datos
head(datos) # Base de datos abreviada
str(datos)
3. Hallar el vector de medias (v.m) y la matriz centrada (m.c)
<- colMeans(datos[,3:5]) # Vector de medias
v.m
v.m
<- t(t(datos[,3:5]) - v.m) # Centralización de datos = Matriz centrada
m.c round(m.c , 2)
4. Vectores própios (v.p)
<- var(m.c) # Covarianza de la matriz centrada
s.c round(s.c , 2)
<- eigen(s.c) # Vectores y valores propios de m.centrada
vv.p round(vv.p, 2)
<- vv.p$vectors # Matriz de vectores propios
v.p round(v.p , 2)
5. Matriz Rotada (m.r)
<- as.matrix(m.c) # Matriz centrada (m.c)
m.c round(m.c, 2)
<- m.c %*% v.p # Matriz rotada (m.r)
m.r round(m.r, 2)
<- data.frame (n= 1:16, A) # matriz A como dataframe
A round(A, 2)
6. figura (paquete - stats)
x11()
plot(m.r[,1:2],
xlab="PC1", ylab="PC2")
text(m.r, # Rótulos de los datos (caimanes)
labels = row.names(datos),
pos=3, cex=0.7)
abline(v=0, lty=2,col= "blue")
abline(h=0, lty=2,col= "blue")
7. figura)
x11()
<- data.frame(m.r) # matriz rotada como data.frame
m.r
ggplot(m.r, aes(x= X1 ,y= X2)) +
geom_point() +
geom_text_repel (aes (label = datos$ID)) +
geom_hline(yintercept=0,linetype=2,size=1) +
geom_vline(xintercept=0,linetype=2,size=1)
Análisis de Componentes principales - PCA en librería "vegan"
Objetivo: Comparar los resultados del PCA anterior con los generados por un paquete o librería de R
1. Realización del PCA
# Comparar con el Análisis de Componentes Principales - pca
head(datos[,3:5]) # Variables y observaciones (caimanes)
<- rda(datos[,3:5]) # Realización del pca pca
2. Figura del PCA
x11()
biplot(pca)