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)
