At.A=A.At=I
When we calculate the loading
matrix during the PCA process, each loading is orthogonal (perpendicular) to
all others. So we can check for fun in R, Excel,…., this condition with the
loading matrix.
P
is a very large matrix, so we will check it with just a few columns (6 loadings
or terms) and the same number of files (6 wavelengths):
> round(gas.loadings[1:6,1:6],digits=4) PC1 PC2 PC3 PC4 PC5 PC6 900 nm -0.011 0.022 0.034 -0.039 0.042 -0.020 902 nm -0.010 0.022 0.031 -0.041 0.039 -0.022 904 nm -0.011 0.022 0.030 -0.042 0.036 -0.021 906 nm -0.012 0.024 0.027 -0.045 0.031 -0.012 908 nm -0.013 0.021 0.025 -0.045 0.035 -0.013 910 nm -0.014 0.023 0.023 -0.046 0.036 -0.018
Pt is the transpose, so the columns are the wavelengths and the files the loadings:
> round(t(gas.loadings[1:6,1:6]),digits=4) 900 nm 902 nm 904 nm 906 nm 908 nm 910 nm PC1 -0.011 -0.010 -0.011 -0.012 -0.013 -0.014 PC2 0.022 0.022 0.022 0.024 0.021 0.023 PC3 0.034 0.031 0.030 0.027 0.025 0.023 PC4 -0.039 -0.041 -0.042 -0.045 -0.045 -0.046 PC5 0.042 0.039 0.036 0.031 0.035 0.036 PC6 -0.020 -0.022 -0.021 -0.012 -0.013 -0.018
Now we multiply the two matrix:
> round((gas.loadings[1:6,1:6])%*% solve((gas.loadings[1:6,1:6])),digits=4) 900 nm 902 nm 904 nm 906 nm 908 nm 910 nm 900 nm 1 0 0 0 0 0 902 nm 0 1 0 0 0 0 904 nm 0 0 1 0 0 0 906 nm 0 0 0 1 0 0 908 nm 0 0 0 0 1 0 910 nm 0 0 0 0 0 1
> round(((solve(gas.loadings[1:6,1:6]))%*%(gas.loadings[1:6,1:6])),digits=4) PC1 PC2 PC3 PC4 PC5 PC6 PC1 1 0 0 0 0 0 PC2 0 1 0 0 0 0 PC3 0 0 1 0 0 0 PC4 0 0 0 1 0 0 PC5 0 0 0 0 1 0 PC6 0 0 0 0 0 1 | |
No hay comentarios:
Publicar un comentario