You are on page 1of 8

WielWymAnalDan3

2023-10-27

Analiza Kanoniczna
Analiza kanoniczna umożliwa badanie zależności między dwoma zestawami zmiennych zależnych.

library(ggcorrplot)
library(CCA)
library(tidyverse)
library(dplyr)
library(yacca)

Najpierw trzeba dokonać standaryzacji zmiennych

iris_std <- iris %>%


dplyr::select(-Species) %>%
scale() %>%
as.data.frame()

Gdzybyśmy chcieli zachować zmienną Species :

iris_std <- iris %>%


mutate_if(is.numeric, scale)

Sepal podstawiamy pod X, Petal pod Y

X <- iris_std %>%


dplyr::select(Sepal.Length, Sepal.Width)

Y <- iris_std %>%


dplyr::select(Petal.Length, Petal.Width)

Macierz korelacji pomiędzy X a Y

ggcorrplot(cor(X,Y), lab=T)

Budowanie modelu analizy kanonicznej


cc - canonicial correlation

Uwaga: zmienne standaryzowane!!


mod_kan <- cc(X,Y)
mod_kan$cor

## [1] 0.9409690 0.1239369

Korelacja między parami kanonicznymi (obiekt cor ):

0.94 między pierwszą parą kanonicną

0.12 w drugiej parze (bardzo słaba korelacja)

Obiekty xcoef i ycoef - wagi w kombinacji do tworzenia zmiennych kanonicznych

mod_kan$xcoef

## [,1] [,2]
## Sepal.Length -0.8851871 0.4800626
## Sepal.Width 0.3726619 0.9354889

mod_kan$ycoef

## [,1] [,2]
## Petal.Length -1.4989586 -3.387093
## Petal.Width 0.5288422 3.666006

Pary kanoniczne:

U 1 = − 0.89 ⋅ SL + 0.37 ⋅ SW

V 1 = − 1.5 ⋅ PL + 0.37 ⋅ PW

U 2 = 0.48 ⋅ SL + 0.37 ⋅ SW

V 2 = − 3.39 ⋅ PL + 0.37 ⋅ PW

Wagi mówią o tym, która z cech jest ważniejsza dla danej zmiennej kanonicznej. Np dla U 1 większą wagę ma Sepal.Length (patrzymy na
wartość bezwzględną).

Sepal.Length i Sepal.Width mają przeciwny wpływ na U 1 (przeciwne znaki).

W V 1 PL ma trzykrotnie większą wagę niż PW iz przeciwnym znakiem.

head(mod_kan$scores$xscores)

## [,1] [,2]
## [1,] 1.1730856 0.5191447
## [2,] 0.9593861 -0.6699407
## [3,] 1.3441807 -0.3566336
## [4,] 1.3655796 -0.6292350
## [5,] 1.3654828 0.6757983
## [6,] 1.1943878 1.5515766

head(mod_kan$scores$yscores)

## [,1] [,2]
## [1,] 1.308897 -0.2820104
## [2,] 1.308897 -0.2820104
## [3,] 1.393809 -0.0901396
## [4,] 1.223984 -0.4738813
## [5,] 1.308897 -0.2820104
## [6,] 1.192920 0.1042833

mod_kan$scores$corr.X.xscores

## [,1] [,2]
## Sepal.Length -0.9290009 0.3700774
## Sepal.Width 0.4767332 0.8790480

mod_kan$scores$corr.Y.xscores
## [,1] [,2]
## Petal.Length -0.9313286 0.01769543
## Petal.Width -0.8604722 0.05015620

mod_kan$scores$corr.X.yscores

## [,1] [,2]
## Sepal.Length -0.8741611 0.04586624
## Sepal.Width 0.4485912 0.10894647

mod_kan$scores$corr.Y.yscores

## [,1] [,2]
## Petal.Length -0.9897548 0.1427778
## Petal.Width -0.9144533 0.4046915

Obiekt scores - przekształcone zmienne kanoniczne.

Pierwsza kolumna xscores to wartości pierwszej zmiennej kanonicznej dla każdego ze 150 przypadków. Druga kolumna to wartości drugiej
zmiennej kanonicznej. Analogicznie yscores .

corr.X.xscores - korelacje pomiędzy pierwotnymi zmiennymi X ze zmiennymi kanonicznymi (pierwsza kolumna korelacje z U 1, druga kolumna
korelacje z U 2).

corr.Y.xscores - korelacje krzyżowe. Pierwotne Y z U 1 i U 2. W naszym przypadku obie silnie ujemnie skorelowane z U 1

cor.X.yscores - krzyżowe X z V 1 i V 2

cor. Y. yscores - korelacje Y Z V 1 i V 2

Ten sam przykład, ale w innym pakiecie

yacca - yeat another canncical correlation analysis

Nie stadaryzujemy zmiennych tym razem

X1 <- iris %>%


dplyr::select(Sepal.Length, Sepal.Width)

Y1 <- iris %>%


dplyr::select(Petal.Length, Petal.Width)

Standaryzacje robimy podczas tworzenia modelu

mod_kan1 <- cca(X1,Y1, xscale = T, yscale = T)


summary(mod_kan1)

##
## Canonical Correlation Analysis - Summary
##
##
## Canonical Correlations:
##
## CV 1 CV 2
## 0.9409690 0.1239369
##
## Shared Variance on Each Canonical Variate:
##
## CV 1 CV 2
## 0.88542265 0.01536035
##
## Bartlett's Chi-Squared Test:
##
## rho^2 Chisq df Pr(>X)
## CV 1 0.88542 319.66076 4 <2e-16 ***
## CV 2 0.01536 2.26775 1 0.1321
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
##
## Canonical Variate Coefficients:
##
## X Vars:
## CV 1 CV 2
## Sepal.Length 0.8851871 0.4800626
## Sepal.Width -0.3726619 0.9354889
##
## Y Vars:
## CV 1 CV 2
## Petal.Length 1.4989586 -3.387093
## Petal.Width -0.5288422 3.666006
##
##
## Structural Correlations (Loadings):
##
## X Vars:
## CV 1 CV 2
## Sepal.Length 0.9290009 0.3700774
## Sepal.Width -0.4767332 0.8790480
##
## Y Vars:
## CV 1 CV 2
## Petal.Length 0.9897548 0.1427778
## Petal.Width 0.9144533 0.4046915
##
##
## Fractional Variance Deposition on Canonical Variates:
##
## X Vars:
## CV 1 CV 2
## Sepal.Length 0.8630427 0.1369573
## Sepal.Width 0.2272745 0.7727255
##
## Y Vars:
## CV 1 CV 2
## Petal.Length 0.9796145 0.02038549
## Petal.Width 0.8362248 0.16377523
##
##
## Canonical Communalities (Fraction of Total Variance
## Explained for Each Variable, Within Sets):
##
## X Vars:
## Sepal.Length Sepal.Width
## 1 1
##
## Y Vars:
## Petal.Length Petal.Width
## 1 1
##
##
## Canonical Variate Adequacies (Fraction of Total Variance
## Explained by Each CV, Within Sets):
##
##
## X Vars:
## CV 1 CV 2
## 0.5451586 0.4548414
##
## Y Vars:
## CV 1 CV 2
## 0.90791964 0.09208036
##
##
## Redundancy Coefficients (Fraction of Total Variance
## Explained by Each CV, Across Sets):
##
##
## X | Y:
## CV 1 CV 2
## 0.482695805 0.006986523
##
## Y | X:
## CV 1 CV 2
## 0.803892619 0.001414387
##
##
## Aggregate Redundancy Coefficients (Total Variance
## Explained by All CVs, Across Sets):
##
## X | Y: 0.4896823
## Y | X: 0.805307

Canonical correlations:
CV1 korelacja kanoniczna pomiędzy pierwszą parą 0.94

CV2 pomiędzy drugą parą 0.12

Shared Variance on Each Canonical Variate - podniesiona do kwadraty wartość współczynnika korelacji (czyli współczynnika determinacji)

Bartlett’s Chi-squared test - czy zestawy par kanonicznych są ze sobą istotnie skorelowane.

Pierwszy wiersz - H 0: wszystkie korelacje kanoniczne są równe zero. Odrzucamy H 0 - jedna z nich nie jest zerowa (są ustawione od
największej do najmniejszej)

Z pierwszego wiersza u nas wynika, że pierwsza para kanoniczna jest istotnie skorelowana.

Drugi wiersz: testowanie H 0, ale po usunięciu z modelu pierwszej pary kanonicznej (najmocniej skorelowanej).

Z drugiego wiersza wynika, że druga para nie jest istotnie skorelowana.

Canonical Variate Coefficients - współczynniki wagowe (wcześniej jako xcoef , wynik różni się od poprzedniego co do znaku, ale to nic, to nie
wpływa na interpretację)

Structural Correlations (Loadings) - korelacje X z kanonicznymi. SL 0.93, SW -0.48 (drugiej już nie interpretujemy, bo jest nieistotna). Korelacje Y z
kanonicznymi PL 0.99, PW 0.91

Fractional Variance Deposition on Canonical variates - powyższe współczynniki korelacji, podniesione do kwadratu. Pomagają ocenić, jaką część
wariancji pierwotnych zmiennych wyjaśnia zmienna kanoniczna.

Dla zmiennej U 1: 86% zmienności SL wyjaśnione jest przez pierwszą zmienną kanoniczną. 22% zmienności sw wyjaśnione jest przez
pierwszą zmienną kanoniczną.

Dla zmiennej V 1: 98% PL jest wyjaśnione, 84% PW jest wyjaśnione przez zmienną kanoniczną V 1.

Canonical Communalities (fraction of total variance explained for each variable, within sets):

100% zmienności zmiennej sepal (obu) zostało wyjaśnione przez łącznie obie zmienne kanoniczne. Dla Petal także jest to 100%.

Canonical variate adequacies:

pierwsza zmienna kanoniczna (U 1) wyjaśnia przeciętnie 55% zmienności zmiennych Sepal.

przeciętnie 91% wariancji Petal zostało wyjaśnione przez zmienną kanoniczną V 1.

Redundancy Coefficients

XIY - przeciętnie 48% zmienności zmiennych Sepal da się wyjaśnić przez kanoniczną przy ustalonych zmiennych Y (Petal).

YIX - przeciętnie 80% zmienności zmiennych Petal da się wyjaśnić poprzez pierwszą parę kanoniczną przy ustalonych zmiennych x (Sepal).

helio.plot(mod_kan1, cv= 1)

linia ciągła - zerowa wartość ładunku.

słupki - ładunki (korelacje zmiennych kanonicznych z pierwotnymi)

im bliżej słupek jest zewnętrznego lub wewnętrznego okręgu tym bliżej 1; czarny dodatnia wartość, biały ujemna.

helio.plot(mod_kan1, cv= 1, type= "variance")


Wtedy słupki to procent wariancji wyjaśniany przez zmienne kanoniczne (czyli kwadraty korelacji).

Zmienna kanoniczna po prawej stronie dobrze wyjaśnia zmienne PL i PW.

SL jest również dobrze wyjaśniona.

plot(mod_kan1)
pierwszy wykres - to co w teśćie Barletta

drugi wykres - redundacje (X wzgłędem Y, Y wzgłędem X)

trzeci - helio plot (korelacja zmiennych kanonicznych z pierwotnymi)

czwarty wykres - wyjaśniana wariacja


Loading [MathJax]/jax/output/HTML-CSS/jax.js

You might also like