library(readxl)
library(rgl)
## Warning: package 'rgl' was built under R version 4.2.3
datos = read_excel('Datos Sensores.xlsx')
head(datos)
## # A tibble: 6 × 4
##       A     B     C     D
##   <dbl> <dbl> <dbl> <dbl>
## 1 0.766 0.852 0.541 0.694
## 2 0.845 0.996 0.610 0.752
## 3 0.854 1.13  0.673 0.730
## 4 0.886 1.20  0.715 0.760
## 5 0.888 1.28  0.736 0.749
## 6 0.814 1.25  0.709 0.695
plot3d(datos$A,
       datos$B,
       datos$C,
       size=5*datos$D,
       type='s')
R = cor(datos)
R
##           A         B         C         D
## A 1.0000000 0.8097172 0.9074207 0.9834276
## B 0.8097172 1.0000000 0.9775445 0.7059249
## C 0.9074207 0.9775445 1.0000000 0.8303662
## D 0.9834276 0.7059249 0.8303662 1.0000000
vvp = eigen(R)
vvp
## eigen() decomposition
## $values
## [1] 3.610051104 0.383063742 0.003939994 0.002945161
## 
## $vectors
##            [,1]       [,2]       [,3]       [,4]
## [1,] -0.5128490  0.3546086  0.7341433  0.2688350
## [2,] -0.4838169 -0.6337616  0.1791892 -0.5763321
## [3,] -0.5147050 -0.3294703 -0.4410894  0.6572428
## [4,] -0.4878379  0.6033642 -0.4841126 -0.4044761
R %*% vvp$vectors[,1]
##        [,1]
## A -1.851411
## B -1.746604
## C -1.858112
## D -1.761120
vvp$values[1] * vvp$vectors[,1]
## [1] -1.851411 -1.746604 -1.858112 -1.761120
R %*% vvp$vectors[,2]
##         [,1]
## A  0.1358377
## B -0.2427711
## C -0.1262081
## D  0.2311269
vvp$values[2] * vvp$vectors[,2]
## [1]  0.1358377 -0.2427711 -0.1262081  0.2311269
R %*% vvp$vectors
##        [,1]       [,2]          [,3]          [,4]
## A -1.851411  0.1358377  0.0028925203  0.0007917622
## B -1.746604 -0.2427711  0.0007060043 -0.0016973908
## C -1.858112 -0.1262081 -0.0017378898  0.0019356858
## D -1.761120  0.2311269 -0.0019074006 -0.0011912470
S = cov(datos)
S
##            A          B          C          D
## A 0.05754789 0.07115282 0.04327987 0.04989588
## B 0.07115282 0.13418008 0.07119396 0.05469027
## C 0.04327987 0.07119396 0.03952985 0.03491723
## D 0.04989588 0.05469027 0.03491723 0.04473168
library(FactoMineR)
## Warning: package 'FactoMineR' was built under R version 4.2.3
library(factoextra)
## Warning: package 'factoextra' was built under R version 4.2.3
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.2.3
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
datos_est = scale(datos)
pca1 = PCA(datos_est,
           ncp = 4, graph = F)
pca1$eig
##         eigenvalue percentage of variance cumulative percentage of variance
## comp 1 3.610051104            90.25127759                          90.25128
## comp 2 0.383063742             9.57659354                          99.82787
## comp 3 0.003939994             0.09849985                          99.92637
## comp 4 0.002945161             0.07362902                         100.00000
pca1$var$coord
##       Dim.1      Dim.2       Dim.3       Dim.4
## A 0.9744200 -0.2194748 -0.04608171 -0.01458950
## B 0.9192585  0.3922486 -0.01124759  0.03127716
## C 0.9779465  0.2039162  0.02768691 -0.03566813
## D 0.9268986 -0.3734350  0.03038744  0.02195065
pca2 = princomp(datos_est)
comp1 = pca2$scores[,1]
comp2 = pca2$scores[,2]


plot(comp1, pch=16)

plot(comp1, comp2, pch=16)

set.seed(123)

A = sort(runif(100, 10, 30))
Ar = runif(100, 10, 30)
L = 100 - (A + Ar)

textura = data.frame(A, Ar, L)
plot3d(textura$A,
       textura$Ar,
       textura$L,
       size=3,
       type='s')

pca3 = PCA(textura,
           scale.unit = TRUE,
           ncp = 3)

pca3$var$coord
##         Dim.1         Dim.2        Dim.3
## A   0.7364349 -0.6765084710 1.832033e-15
## Ar  0.6835963  0.7298603428 1.695621e-15
## L  -0.9999997  0.0007254041 2.508294e-15
plot(textura$Ar,
     textura$L, pch=16)