Canonical Correlation Analysis

Multivariate Data Analysis

Description for Canonical Correlation Analysis

Yeongeun Jeon
10-10-2022

1. 서론


2. 개념


3. 대수적 의미


3-1. 정준상관계수와 정준변수


3-2. 표준화된 정준상관계수


4. 정준점수


5. 정준적재와 교차적재


5-1. 정준적재


5-2. 교차적재


6. 정준변수들의 공헌도


7. 두 변수집합 간의 독립성 검정


8. 다른 분석과의 관계

  1. 정준상관분석은 상관분석을 다변량 데이터로 확장한 분석이다.
  2. 정준상관분석은 종속변수(혹은 변수집합)의 변이를 가장 잘 설명하는 예측변수들의 최적 선형결합을 찾는다는 점에서 회귀분석과 유사성을 지닌다. 그러나, 정준상관분석에는 인과의 방향성이 없다는 것이 특징이라고 할 수 있다.
  3. 종속변수가 집단을 분류시키는 범주형 분류변수이고 예측변수들의 집단이 통상적인 판별변수일 경우, 정준상관분석은 판별분석에 대응된다.
  4. 정준상관분석은 두 변수집합 사이의 어떤 상황을 분석하는 외부적인 형식을 가지는 데 비해, 주성분분석이나 인자분석은 한 변수집합 내의 관계를 분석하는 내부적인 측면을 가진다는 차이를 볼 수 있다. 그러나, 이들 모두가 어떤 판정기준이 최적화되도록 유도한 서로 독립적인 인공변수들을 통해 다변량분석의 일반에 걸쳐 기본적 목표가 되는 데이터의 축약 및 차원의 축소를 기한다는 점에서는 크게 다를 바가 없다.

9. 예제

※ 여기서는 2번 Package CCA에 내장되어 있는 함수 cc()를 이용하여 예제 데이터들을 분석한다.


9-1. job 데이터

# 데이터 불러오기
job <- read.csv("C:/Users/User/Desktop/job.csv")
job
   job x1 x2 x3 y1 y2 y3
1    A 10 11 70 72 26  9
2    B 85 22 93 63 76  7
3    C 83 63 73 96 31  7
4    D 82 75 97 96 98  6
5    E 36 77 97 84 94  6
6    F 28 24 75 66 10  5
7    G 64 23 75 31 40  9
8    H 19 15 50 45 14  2
9    I 33 13 70 42 18  6
10   J 23 14 90 79 74  4
11   K 37 13 70 39 12  2
12   L 23 74 53 54 35  3
13   M 45 58 83 60 75  5
14   N 22 67 53 63 45  5

# 두 변수집합으로 나누기job.X <- job[,c("x1", "x2", "x3")]
job.Y <- job[,c("y1", "y2", "y3")]
job.X
   x1 x2 x3
1  10 11 70
2  85 22 93
3  83 63 73
4  82 75 97
5  36 77 97
6  28 24 75
7  64 23 75
8  19 15 50
9  33 13 70
10 23 14 90
11 37 13 70
12 23 74 53
13 45 58 83
14 22 67 53
job.Y
   y1 y2 y3
1  72 26  9
2  63 76  7
3  96 31  7
4  96 98  6
5  84 94  6
6  66 10  5
7  31 40  9
8  45 14  2
9  42 18  6
10 79 74  4
11 39 12  2
12 54 35  3
13 60 75  5
14 63 45  5

# 상관행렬pacman::p_load("CCA")
package 'CCA' successfully unpacked and MD5 sums checked

The downloaded binary packages are in
    C:\Users\User\AppData\Local\Temp\RtmpE34C3c\downloaded_packages
matcor(job.X, job.Y)
$Xcor
          x1        x2        x3
x1 1.0000000 0.2655074 0.5362404
x2 0.2655074 1.0000000 0.1178639
x3 0.5362404 0.1178639 1.0000000

$Ycor
          y1        y2        y3
y1 1.0000000 0.5538806 0.2244930
y2 0.5538806 1.0000000 0.2108256
y3 0.2244930 0.2108256 1.0000000

$XYcor
          x1          x2        x3        y1        y2          y3
x1 1.0000000  0.26550743 0.5362404 0.3060371 0.4241932  0.39608438
x2 0.2655074  1.00000000 0.1178639 0.5247464 0.5262038 -0.01305114
x3 0.5362404  0.11786387 1.0000000 0.5162016 0.7655578  0.37519987
y1 0.3060371  0.52474641 0.5162016 1.0000000 0.5538806  0.22449295
y2 0.4241932  0.52620376 0.7655578 0.5538806 1.0000000  0.21082561
y3 0.3960844 -0.01305114 0.3751999 0.2244930 0.2108256  1.00000000

Caution! Package CCA에 내장되어 있는 함수 matcor()를 이용하면 각 변수집합에 대한 상관행렬 뿐만 아니라 두 변수집합에 대한 상관행렬도 출력할 수 있다.
Result! 상관행렬 중 특히 두 변수집합간 상관행렬을 살펴보면, 변수 \(y_1\)과 변수 \(x_2\), \(x_3\) 사이의 상관계수는 0.5 이상의 높은 양의 상관관계를 가진다. 또한, 변수 \(y_2\)와 변수 \(x_2\), \(x_3\) 사이에서도 0.5 이상의 높은 양의 상관계수를 보인다. 반면, \(x_1\)\(y_3\)는 다른 집합의 변수들과 상대적으로 낮은 상관계수를 가지고 있다.


# 상관행렬 시각화
img.matcor(matcor(job.X, job.Y), type = 1)
img.matcor(matcor(job.X, job.Y), type = 2)

Caution! Package CCA에 내장되어 있는 함수 img.matcor()를 이용하면 상관행렬을 시각화할 수 있으며, 색상이 모두 초록색이면 변수 간의 상관계수가 거의 0에 가까우므로 정준상관분석을 중단한다.


# 정준상관분석 수행pacman::p_load("CCA")

job.cc <- cc(job.X, job.Y)              # cc(X 변수집합의 데이터행렬, Y 변수집합의 데이터행렬)NAjob.cc
$cor
[1] 0.9194120 0.4186491 0.1133658

$names
$names$Xnames
[1] "x1" "x2" "x3"

$names$Ynames
[1] "y1" "y2" "y3"

$names$ind.names
 [1] "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "10" "11" "12" "13"
[14] "14"


$xcoef
           [,1]         [,2]        [,3]
x1  0.004300092  0.031408316 -0.03519517
x2 -0.020110886 -0.028134366 -0.01528254
x3 -0.053120964  0.006447336  0.05245086

$ycoef
          [,1]         [,2]        [,3]
y1 -0.01483783 -0.026536591 -0.05099320
y2 -0.02525192  0.004197075  0.02920936
y3 -0.02434304  0.441592020 -0.15072041

$scores
$scores$xscores
            [,1]        [,2]        [,3]
 [1,]  0.6910075 -0.24753813  1.30395148
 [2,] -0.4294875  1.94689629 -0.29742452
 [3,] -0.2002147  0.60162391 -1.90263551
 [4,] -1.7207486  0.38733927 -0.79201009
 [5,] -1.9587746 -1.11371200  0.79640276
 [6,]  0.2413628 -0.01569852  0.73401969
 [7,]  0.4162770  1.14313523 -0.51772397
 [8,]  1.7116840 -0.20634748 -0.12295248
 [9,]  0.7496878  0.41858441  0.46389744
[10,] -0.3758432  0.20531361  1.84958388
[11,]  0.7668882  0.54421768  0.32311675
[12,]  0.3829793 -1.72129981 -1.00805035
[13,] -0.7942734 -0.38674690  0.03570236
[14,]  0.5194554 -1.55576756 -0.86587741

$scores$yscores
             [,1]        [,2]        [,3]
 [1,]  0.30025201  1.26830815 -1.56061971
 [2,] -0.78011722  0.83380716  0.66022790
 [3,] -0.13342942 -0.23076870 -2.33696880
 [4,] -1.80096474 -0.39115672 -0.22922124
 [5,] -1.52190311 -0.08950593  0.26585967
 [6,]  0.89068180 -0.40599358 -1.11912867
 [7,]  0.55507624  2.41506742  0.93903239
 [8,]  1.17429769 -1.15671293  0.52072712
 [9,]  1.02043136  0.70605322  0.18766252
[10,] -0.89398956 -0.92394851  0.23807926
[11,]  1.31382851 -1.00588754  0.76826758
[12,]  0.48612395 -0.86581166  0.52446452
[13,] -0.66166574  0.02603581  1.08543894
[14,]  0.05137824 -0.17948620  0.05617854

$scores$corr.X.xscores
         [,1]       [,2]       [,3]
x1 -0.4863184  0.6591844 -0.5735594
x2 -0.6215686 -0.5452117 -0.5624915
x3 -0.8459188  0.4450690  0.2938283

$scores$corr.Y.xscores
         [,1]        [,2]        [,3]
y1 -0.6894795 -0.10480386 -0.06941846
y2 -0.8867213  0.01515053  0.02967896
y3 -0.2641769  0.36897740 -0.04251718

$scores$corr.X.yscores
         [,1]       [,2]        [,3]
x1 -0.4471269  0.2759670 -0.06502204
x2 -0.5714777 -0.2282524 -0.06376731
x3 -0.7777478  0.1863277  0.03331009

$scores$corr.Y.yscores
         [,1]       [,2]       [,3]
y1 -0.7499135 -0.2503382 -0.6123402
y2 -0.9644439  0.0361891  0.2617981
y3 -0.2873325  0.8813524 -0.3750441

# 정준상관계수job.cc$cor
[1] 0.9194120 0.4186491 0.1133658

Result! 제1정준상관계수가 0.919이며, 이는 “업무특성” 변수집합의 선형결합과 “만족도” 변수집합의 선형결합 사이에 매우 높은 상관성이 있음을 나타낸다.


# 정준상관계수 그래프barplot(job.cc$cor,                               # 정준상관계수        xlab = "Dimension",                       # x축 라벨 이름
        ylab = "Canonical Correlations",          # y축 라벨 이름
        names.arg = 1:3,                          # 막대 라벨 이름이름
        ylim = c(0, 1))                           # y축 범위


# 정준계수job.cc$xcoef                            # a_1X_1+...+a_pX_p의 a값
           [,1]         [,2]        [,3]
x1  0.004300092  0.031408316 -0.03519517
x2 -0.020110886 -0.028134366 -0.01528254
x3 -0.053120964  0.006447336  0.05245086
job.cc$ycoef                            # b_1Y_1+...+b_qY_q의 b값
          [,1]         [,2]        [,3]
y1 -0.01483783 -0.026536591 -0.05099320
y2 -0.02525192  0.004197075  0.02920936
y3 -0.02434304  0.441592020 -0.15072041

Caution! 총 3개의 정준계수벡터가 출력되었는데 이는 \(s=\text{min}(3,3)=3\)에 의해 결정되었다.
Result! “업무특성” 변수집합에서 제1정준계수벡터 (0.004, -0.020, -0.053)에 대응되는 제1정준변수는 \(\hat{V}_1=0.004X_1-0.020X_2-0.053X_3\)이고, “만족도” 변수집합에서 제1정준계수벡터 (-0.015, -0.025, -0.024)에 대응되는 제1정준변수는 \(\hat{W}_1=-0.015Y_1-0.025Y_2-0.024Y_3\)이다. 이 두 정준변수의 상관계수가 위에서 출력된 제1정준상관계수 0.919이다. 또한, 정준계수에 대한 해석은 회귀계수에 대한 해석과 유사하다. 즉, 변수 \(x_1\) (다양성)의 경우 \(x_1\) (다양성)의 값이 1 단위 증가할 때 “업무특성” 변수집합의 제1정준변수 \(\hat{V}_1\)의 값은 0.004 증가한다.


# 표준화된 정준계수NAjob.cc$xcoef*apply(job.X, 2, sd)  
         [,1]       [,2]       [,3]
x1  0.1108295  0.8095098 -0.9071112
x2 -0.5519543 -0.7721632 -0.4194377
x3 -0.8402945  0.1019873  0.8296945
job.cc$ycoef*apply(job.Y, 2, sd)   
          [,1]       [,2]       [,3]
y1 -0.30284133 -0.5416140 -1.0407753
y2 -0.78536978  0.1305349  0.9084518
y3 -0.05377069  0.9754208 -0.3329223

Caution! 위에서 출력된 정준계수를 해석할 때 유의해야할 점은 변수들의 단위가 다를 수 있다는 점이다. 변수들의 단위가 다르면 정준계수를 이용하여 변수들의 영향력을 비교할 수 없다. 그래서, 단위를 일치시킨 표준화 정준계수벡터를 이용하여 변수들의 영향력을 비교한다. 표준화된 정준계수벡터는 3-2. 표준화된 정준상관계수에서 봤듯이 공분산행렬에 의해 유도된 정준계수에 각 변수의 표준편차를 곱한 것이다. 여기서 각 변수의 표본표준편차를 계산하기 위해 함수 apply()를 이용하였다. 함수 apply()는 주어진 함수를 행렬 또는 데이터프레임에 반복적으로 적용하는 데 사용하는 함수로 첫 번째 인자는 행렬 또는 데이터프레임, 두 번째 인자는 “1”이면 행별, “2”이면 열별로 작업하라는 의미이다. 세 번째 인자는 적용할 함수를 명시한다.
Result! “업무특성” 변수집합에서 표준화된 제1정준계수벡터 (0.111, -0.552, -0.840)에 대응되는 표준화된 제1정준변수는 \(\hat{V}_1=0.111Z_{X_1}-0.552Z_{X_2}-0.840Z_{X_3}\)이고, “만족도” 변수집합에서 제1정준계수벡터 (-0.303, -0.785, -0.054)에 대응되는 제1정준변수는 \(\hat{W}_1=-0.303Z_{Y_1}-0.785Z_{Y_2}-0.054Z_{Y_3}\)이다. 여기서 \(Z_{X_i}\)\(Z_{Y_i}\)은 표준화된 관찰변수(평균이 0이고 분산이 1인 관찰변수)를 의미한다. 이 두 정준변수의 상관계수는 공분산행렬을 이용하여 계산된 제1정준상관계수와 동일하다. 즉, 0.919이다. 변수들의 영향력을 살펴보면 “업무특성” 변수집합의 제1정준변수에는 변수 \(x_3\) (자율성)와 \(x_2\) (피드백)가 상대적으로 큰 기여를 하고 있으며, “만족도” 변수집합의 제1정준변수에는 변수 \(y_2\) (관계)와 \(y_1\) (경력)이 상대적으로 큰 기여를 하고 있음을 알 수 있다. 또한, 표준화 정준계수에 대한 해석은 표준화 회귀계수에 대한 해석과 유사하다. 예를 들어, 변수 \(x_3\) (자율성)의 경우 \(x_3\)의 값이 1 표준편차 증가할 때 “업무특성” 변수집합의 제1정준변수 \(\hat{V}_1\)의 값은 0.840*표준편차 감소한다.


# 정준점수job.cc$scores$xscores
            [,1]        [,2]        [,3]
 [1,]  0.6910075 -0.24753813  1.30395148
 [2,] -0.4294875  1.94689629 -0.29742452
 [3,] -0.2002147  0.60162391 -1.90263551
 [4,] -1.7207486  0.38733927 -0.79201009
 [5,] -1.9587746 -1.11371200  0.79640276
 [6,]  0.2413628 -0.01569852  0.73401969
 [7,]  0.4162770  1.14313523 -0.51772397
 [8,]  1.7116840 -0.20634748 -0.12295248
 [9,]  0.7496878  0.41858441  0.46389744
[10,] -0.3758432  0.20531361  1.84958388
[11,]  0.7668882  0.54421768  0.32311675
[12,]  0.3829793 -1.72129981 -1.00805035
[13,] -0.7942734 -0.38674690  0.03570236
[14,]  0.5194554 -1.55576756 -0.86587741
job.cc$scores$yscores
             [,1]        [,2]        [,3]
 [1,]  0.30025201  1.26830815 -1.56061971
 [2,] -0.78011722  0.83380716  0.66022790
 [3,] -0.13342942 -0.23076870 -2.33696880
 [4,] -1.80096474 -0.39115672 -0.22922124
 [5,] -1.52190311 -0.08950593  0.26585967
 [6,]  0.89068180 -0.40599358 -1.11912867
 [7,]  0.55507624  2.41506742  0.93903239
 [8,]  1.17429769 -1.15671293  0.52072712
 [9,]  1.02043136  0.70605322  0.18766252
[10,] -0.89398956 -0.92394851  0.23807926
[11,]  1.31382851 -1.00588754  0.76826758
[12,]  0.48612395 -0.86581166  0.52446452
[13,] -0.66166574  0.02603581  1.08543894
[14,]  0.05137824 -0.17948620  0.05617854

Caution! 정준점수는 표준화된 정준변수를 이용하여 각 개체에 대한 정준점수를 계산한다.
Result! “업무특성” 변수집합에서 표준화된 제1정준변수 \(\hat{V}_1=0.111Z_{X_1}-0.552Z_{X_2}-0.840Z_{X_3}\)\(Z_{X_i}(i=1,2,3)\)에 개체에 의해 관찰된 값을 표준화하여 대입하면 “job.cc$scores$xscores”의 1열에 대한 결과가 출력된다.


# 정준점수 그래프score <- cbind(job.cc$scores$xscores,
               job.cc$scores$yscores)
colnames(score) <- c("v1", "v2", "v3", "w1", "w2", "w3")
rownames(score) <- job[,1]

plot(score[,c(1,4)], pch = 1, col = "blue", xlab = expression(hat(V)[1]), ylab = expression(hat(W)[1]))
abline(v = 0, h = 0, lty = 2)
text(score[,c(1,4)], labels = rownames(score), pos = 4, col = "red")

Result! 제3사분면에 있는 “job”이 “E”, “D”, “M”인 개체들은 제1정준변수 \(\hat{V}_1\)\(\hat{W}_1\)의 값이 음수이면서 높다는 것을 의미한다. 즉, \(\hat{V}_1\)의 값이 높은 음수값을 가질려면 음수이면서 큰 영향을 미치는 변수 \(x_3\) (자율성)와 \(x_2\) (피드백)의 값이 높다는 것이고 \(\hat{W}_1\)의 값이 높은 음수값을 가지려면 마찬가지로 변수 \(y_2\) (관계)의 값이 높다는 것을 의미한다. 그렇기 때문에, 제3사분면에 있는 “E”, “D”, “M” 개체들은 자율성과 피드백 측면의 “업무특성”에 대해 느끼는 정도가 높으며, 관계 측면의 “만족도”도 높은 그룹이다.


# 정준적재NAjob.cc$scores$corr.X.xscores
         [,1]       [,2]       [,3]
x1 -0.4863184  0.6591844 -0.5735594
x2 -0.6215686 -0.5452117 -0.5624915
x3 -0.8459188  0.4450690  0.2938283
job.cc$scores$corr.Y.yscores
         [,1]       [,2]       [,3]
y1 -0.7499135 -0.2503382 -0.6123402
y2 -0.9644439  0.0361891  0.2617981
y3 -0.2873325  0.8813524 -0.3750441

Result! “업무특성” 변수집합의 정준적재(“job.cc$scores$corr.X.xscores”)를 살펴보면, 제1정준변수 \(\hat{V}_1\)은 그의 관찰변수들과 대체로 높은 상관계수를 가지고 있으며, 특히 \(x_3\)가 가장 큰 연관성을 가지고 있음을 알 수 있다. 즉, \(r(x_3, \hat{V}_1)=-0.8459\). 한편, “만족도” 변수집합의 정준적재(job.cc$scores$corr.Y.yscores)를 살펴보면, \(y_2\)가 제1정준변수 \(\hat{W}_1\)과 매우 높은 상관성을 가지고 있다는 것을 알 수 있다. 즉, \(r(y_2, \hat{W}_1)=-0.9644\).


# 정준적재 그래프NAload <- rbind(job.cc$scores$corr.X.xscores,
              job.cc$scores$corr.Y.yscores)
plot(load[,1:2], pch = 1, col = "blue", xlab = "제1정준변수와의 정준적재"ab = "제="제2정준변수와의 정준적재"NA= c(-1, 1), ylim = c(-1, 1))
abline(v = 0, h = 0, lty = 2)
text(load[,1:2], labels = rownames(load), pos = 4, col = "red")


# 교차적재NAjob.cc$scores$corr.X.yscores
         [,1]       [,2]        [,3]
x1 -0.4471269  0.2759670 -0.06502204
x2 -0.5714777 -0.2282524 -0.06376731
x3 -0.7777478  0.1863277  0.03331009
job.cc$scores$corr.Y.xscores
         [,1]        [,2]        [,3]
y1 -0.6894795 -0.10480386 -0.06941846
y2 -0.8867213  0.01515053  0.02967896
y3 -0.2641769  0.36897740 -0.04251718

Result! “업무특성” 변수집합의 교차적재(“job.cc$scores$corr.X.yscores”)를 살펴보면, “만족도” 변수집합으로부터 유도된 제1정준변수 \(\hat{W}_1\)\(x_3\)은 가장 큰 연관성을 가지고 있음을 알 수 있다. 즉, \(r(x_3, \hat{W}_1)=-0.7778\). 즉, \(\hat{W}_1\)\(x_3\)를 가장 많이 설명하고 있다는 것이다. “만족도” 변수집합의 교차적재(“job.cc$scores$corr.Y.xscores”)를 살펴보면, “업무특성” 변수집합으로부터 유도된 제1정준변수 \(\hat{V}_1\)\(y_2\)\(r(y_2, \hat{V}_1)=-0.8867\)로 매우 높은 연관성을 가지고 있으며, 이는 \(\hat{V}_1\)\(y_2\)를 가장 많이 설명하고 있다는 것을 의미한다.


# X 변수집합의 변이에 대한 정준변수들의 공헌도NAcxx <- job.cc$scores$corr.X.xscores
cv  <- colSums(cxx^2)/nrow(cxx)        
cum.cv <- cumsum(cv)

cbind(cv, cum.cv)
            cv    cum.cv
[1,] 0.4461439 0.4461439
[2,] 0.3099554 0.7560993
[3,] 0.2439007 1.0000000

Result! “업무특성” 변수집합에 의해 유도된 정준변수들의 공헌도를 살펴보면, 제1정준변수는 전체변이 중 약 44.6%로 가장 높은 설명력을 가졌다. 게다가, 두 개의 정준변수들로 전체 표본변이 중 약 75.6%가 설명됨을 알 수 있다.


# Y 변수집합의 변이에 대한 정준변수들의 공헌도NAcyy <- job.cc$scores$corr.Y.yscores
cw  <- colSums(cyy^2)/nrow(cyy)        
cum.cw <- cumsum(cw)

cbind(cw, cum.cw)
            cw    cum.cw
[1,] 0.5250275 0.5250275
[2,] 0.2802536 0.8052811
[3,] 0.1947189 1.0000000

Result! “만족도” 변수집합에 의해 유도된 정준변수들의 공헌도를 살펴보면, 제1정준변수는 전체변이 중 약 52.5%로 가장 높은 설명력을 가졌다. 게다가, 두 개의 정준변수들로 전체 표본변이 중 약 80.5%가 설명됨을 알 수 있다.


# 독립성 검정 검정
pacman::p_load("CCP")

  There is a binary version available but the source version
  is later:
    binary source needs_compilation
CCP    1.1    1.2             FALSE
rho <- job.cc$cor                 # 정준상관계수

N <- nrow(job)                    # 전체 개체 개수p <- ncol(job.X)                  # X 변수집합의 변수 개수
q <- ncol(job.Y)                  # Y 변수집합의 변수 개수

# 정준상관계수에 대한 유의성 검정p.asym(rho,                       # 정준상관계수       N,                         # 각 변수들에 대한 관측 개수개수
       p,                         # 독립변수 개수수 개수
       q,                         # 종속변수 개수개수
       tstat = "Wilks")           # 검정통계량, "Wilks" / "Hotelling" / "Pillai" / "Roy"
Wilks' Lambda, using F-approximation (Rao's F):
              stat    approx df1     df2   p.value
1 to 3:  0.1259315 2.9275112   9 19.6205 0.0223321
2 to 3:  0.8141336 0.4872906   4 18.0000 0.7449723
3 to 3:  0.9871482 0.1301913   1 10.0000 0.7257394

Caution! Package CCP에 내장되어 있는 함수 p.asym()을 통해 정준상관계수의 유의성 검정을 수행할 수 있다.
Result! 분석 결과를 살펴보면, 먼저 제1정준상관계수에 대한 가설에 대해 검정통계량 값은 \(\chi^2=0.1259\)이고 이에 대응되는 \(p\)-값은 0.0223이다. 이에 근거하여, 유의수준 5%에서 \(p\)-값은 유의수준 \(\alpha=0.05\)보다 작기 때문에 귀무가설을 기각할 수 있다. 즉, 제1정준상관계수는 통계적으로 유의한 의미를 가진다. 제2정준상관계수에 대한 가설에 대해 검정통계량 값은 \(\chi^2=0.8141\)이고 이에 대응되는 \(p\)-값은 0.7450이다. 이에 근거하여, 유의수준 5%에서 \(p\)-값은 유의수준 \(\alpha=0.05\)보다 크기 때문에 귀무가설을 기각할 수 없다. 즉, 제2정준상관계수는 통계적으로 유의한 의미를 가지지 않는다.


9-2. LifeCycleSavings 데이터

# 데이터 불러오기
data(LifeCycleSavings)

sav <- LifeCycleSavings
sav
                  sr pop15 pop75     dpi  ddpi
Australia      11.43 29.35  2.87 2329.68  2.87
Austria        12.07 23.32  4.41 1507.99  3.93
Belgium        13.17 23.80  4.43 2108.47  3.82
Bolivia         5.75 41.89  1.67  189.13  0.22
Brazil         12.88 42.19  0.83  728.47  4.56
Canada          8.79 31.72  2.85 2982.88  2.43
Chile           0.60 39.74  1.34  662.86  2.67
China          11.90 44.75  0.67  289.52  6.51
Colombia        4.98 46.64  1.06  276.65  3.08
Costa Rica     10.78 47.64  1.14  471.24  2.80
Denmark        16.85 24.42  3.93 2496.53  3.99
Ecuador         3.59 46.31  1.19  287.77  2.19
Finland        11.24 27.84  2.37 1681.25  4.32
France         12.64 25.06  4.70 2213.82  4.52
Germany        12.55 23.31  3.35 2457.12  3.44
Greece         10.67 25.62  3.10  870.85  6.28
Guatamala       3.01 46.05  0.87  289.71  1.48
Honduras        7.70 47.32  0.58  232.44  3.19
Iceland         1.27 34.03  3.08 1900.10  1.12
India           9.00 41.31  0.96   88.94  1.54
Ireland        11.34 31.16  4.19 1139.95  2.99
Italy          14.28 24.52  3.48 1390.00  3.54
Japan          21.10 27.01  1.91 1257.28  8.21
Korea           3.98 41.74  0.91  207.68  5.81
Luxembourg     10.35 21.80  3.73 2449.39  1.57
Malta          15.48 32.54  2.47  601.05  8.12
Norway         10.25 25.95  3.67 2231.03  3.62
Netherlands    14.65 24.71  3.25 1740.70  7.66
New Zealand    10.67 32.61  3.17 1487.52  1.76
Nicaragua       7.30 45.04  1.21  325.54  2.48
Panama          4.44 43.56  1.20  568.56  3.61
Paraguay        2.02 41.18  1.05  220.56  1.03
Peru           12.70 44.19  1.28  400.06  0.67
Philippines    12.78 46.26  1.12  152.01  2.00
Portugal       12.49 28.96  2.85  579.51  7.48
South Africa   11.14 31.94  2.28  651.11  2.19
South Rhodesia 13.30 31.92  1.52  250.96  2.00
Spain          11.77 27.74  2.87  768.79  4.35
Sweden          6.86 21.44  4.54 3299.49  3.01
Switzerland    14.13 23.49  3.73 2630.96  2.70
Turkey          5.13 43.42  1.08  389.66  2.96
Tunisia         2.81 46.12  1.21  249.87  1.13
United Kingdom  7.81 23.27  4.46 1813.93  2.01
United States   7.56 29.81  3.43 4001.89  2.45
Venezuela       9.22 46.40  0.90  813.39  0.53
Zambia         18.56 45.25  0.56  138.33  5.14
Jamaica         7.72 41.12  1.73  380.47 10.23
Uruguay         9.24 28.13  2.72  766.54  1.88
Libya           8.89 43.69  2.07  123.58 16.71
Malaysia        4.71 47.20  0.66  242.69  5.08

# 두 변수집합으로 나누기sav.X <- sav[,c("pop15", "pop75")]
sav.Y <- sav[,c("sr", "dpi", "ddpi")]
sav.X
               pop15 pop75
Australia      29.35  2.87
Austria        23.32  4.41
Belgium        23.80  4.43
Bolivia        41.89  1.67
Brazil         42.19  0.83
Canada         31.72  2.85
Chile          39.74  1.34
China          44.75  0.67
Colombia       46.64  1.06
Costa Rica     47.64  1.14
Denmark        24.42  3.93
Ecuador        46.31  1.19
Finland        27.84  2.37
France         25.06  4.70
Germany        23.31  3.35
Greece         25.62  3.10
Guatamala      46.05  0.87
Honduras       47.32  0.58
Iceland        34.03  3.08
India          41.31  0.96
Ireland        31.16  4.19
Italy          24.52  3.48
Japan          27.01  1.91
Korea          41.74  0.91
Luxembourg     21.80  3.73
Malta          32.54  2.47
Norway         25.95  3.67
Netherlands    24.71  3.25
New Zealand    32.61  3.17
Nicaragua      45.04  1.21
Panama         43.56  1.20
Paraguay       41.18  1.05
Peru           44.19  1.28
Philippines    46.26  1.12
Portugal       28.96  2.85
South Africa   31.94  2.28
South Rhodesia 31.92  1.52
Spain          27.74  2.87
Sweden         21.44  4.54
Switzerland    23.49  3.73
Turkey         43.42  1.08
Tunisia        46.12  1.21
United Kingdom 23.27  4.46
United States  29.81  3.43
Venezuela      46.40  0.90
Zambia         45.25  0.56
Jamaica        41.12  1.73
Uruguay        28.13  2.72
Libya          43.69  2.07
Malaysia       47.20  0.66
sav.Y
                  sr     dpi  ddpi
Australia      11.43 2329.68  2.87
Austria        12.07 1507.99  3.93
Belgium        13.17 2108.47  3.82
Bolivia         5.75  189.13  0.22
Brazil         12.88  728.47  4.56
Canada          8.79 2982.88  2.43
Chile           0.60  662.86  2.67
China          11.90  289.52  6.51
Colombia        4.98  276.65  3.08
Costa Rica     10.78  471.24  2.80
Denmark        16.85 2496.53  3.99
Ecuador         3.59  287.77  2.19
Finland        11.24 1681.25  4.32
France         12.64 2213.82  4.52
Germany        12.55 2457.12  3.44
Greece         10.67  870.85  6.28
Guatamala       3.01  289.71  1.48
Honduras        7.70  232.44  3.19
Iceland         1.27 1900.10  1.12
India           9.00   88.94  1.54
Ireland        11.34 1139.95  2.99
Italy          14.28 1390.00  3.54
Japan          21.10 1257.28  8.21
Korea           3.98  207.68  5.81
Luxembourg     10.35 2449.39  1.57
Malta          15.48  601.05  8.12
Norway         10.25 2231.03  3.62
Netherlands    14.65 1740.70  7.66
New Zealand    10.67 1487.52  1.76
Nicaragua       7.30  325.54  2.48
Panama          4.44  568.56  3.61
Paraguay        2.02  220.56  1.03
Peru           12.70  400.06  0.67
Philippines    12.78  152.01  2.00
Portugal       12.49  579.51  7.48
South Africa   11.14  651.11  2.19
South Rhodesia 13.30  250.96  2.00
Spain          11.77  768.79  4.35
Sweden          6.86 3299.49  3.01
Switzerland    14.13 2630.96  2.70
Turkey          5.13  389.66  2.96
Tunisia         2.81  249.87  1.13
United Kingdom  7.81 1813.93  2.01
United States   7.56 4001.89  2.45
Venezuela       9.22  813.39  0.53
Zambia         18.56  138.33  5.14
Jamaica         7.72  380.47 10.23
Uruguay         9.24  766.54  1.88
Libya           8.89  123.58 16.71
Malaysia        4.71  242.69  5.08

# 상관행렬pacman::p_load("CCA")
matcor(sav.X, sav.Y)
$Xcor
           pop15      pop75
pop15  1.0000000 -0.9084787
pop75 -0.9084787  1.0000000

$Ycor
            sr        dpi       ddpi
sr   1.0000000  0.2203589  0.3047872
dpi  0.2203589  1.0000000 -0.1294855
ddpi 0.3047872 -0.1294855  1.0000000

$XYcor
            pop15       pop75         sr        dpi        ddpi
pop15  1.00000000 -0.90847871 -0.4555381 -0.7561881 -0.04782569
pop75 -0.90847871  1.00000000  0.3165211  0.7869995  0.02532138
sr    -0.45553809  0.31652112  1.0000000  0.2203589  0.30478716
dpi   -0.75618810  0.78699951  0.2203589  1.0000000 -0.12948552
ddpi  -0.04782569  0.02532138  0.3047872 -0.1294855  1.00000000

Result! 상관행렬 중 특히 두 변수집합간 상관행렬을 살펴보면, 변수 “dpi”는 변수 “pop15”와 “pop75”와 0.7 이상이 높은 상관관계를 보인다. 반면, 변수 “ddpi”는 “pop15”와 “pop75”와 매우 낮은 상관성을 가지는 것으로 나타났다.


# 상관행렬 시각화
img.matcor(matcor(sav.X, sav.Y), type = 1)
img.matcor(matcor(sav.X, sav.Y), type = 2)


# 정준상관분석 수행sav.cc <- cc(sav.X, sav.Y)              # cc(X 변수집합의 데이터행렬, Y 변수집합의 데이터행렬)NAsav.cc
$cor
[1] 0.8247966 0.3652762

$names
$names$Xnames
[1] "pop15" "pop75"

$names$Ynames
[1] "sr"   "dpi"  "ddpi"

$names$ind.names
 [1] "Australia"      "Austria"        "Belgium"       
 [4] "Bolivia"        "Brazil"         "Canada"        
 [7] "Chile"          "China"          "Colombia"      
[10] "Costa Rica"     "Denmark"        "Ecuador"       
[13] "Finland"        "France"         "Germany"       
[16] "Greece"         "Guatamala"      "Honduras"      
[19] "Iceland"        "India"          "Ireland"       
[22] "Italy"          "Japan"          "Korea"         
[25] "Luxembourg"     "Malta"          "Norway"        
[28] "Netherlands"    "New Zealand"    "Nicaragua"     
[31] "Panama"         "Paraguay"       "Peru"          
[34] "Philippines"    "Portugal"       "South Africa"  
[37] "South Rhodesia" "Spain"          "Sweden"        
[40] "Switzerland"    "Turkey"         "Tunisia"       
[43] "United Kingdom" "United States"  "Venezuela"     
[46] "Zambia"         "Jamaica"        "Uruguay"       
[49] "Libya"          "Malaysia"      


$xcoef
             [,1]       [,2]
pop15  0.06377599 -0.2535544
pop75 -0.34053260 -1.8221811

$ycoef
              [,1]          [,2]
sr   -0.0592971550  0.2336554912
dpi  -0.0009151786 -0.0005311762
ddpi -0.0291942000 -0.0858752749

$scores
$scores$xscores
                      [,1]        [,2]
Australia      -0.56253600  0.40390249
Austria        -1.47152544 -0.87332319
Belgium        -1.44772362 -1.03147293
Bolivia         0.64585407 -0.58905269
Brazil          0.95103425  0.86551308
Canada         -0.40457624 -0.16057787
Chile           0.62111144  0.55740907
China           1.16878601  0.50796273
Colombia        1.15651493 -0.68190575
Costa Rica      1.19304831 -1.08123466
Denmark        -1.23791620 -0.27758614
Ecuador         1.09119961 -0.83511633
Finland        -0.48857145  1.69786021
France         -1.45930966 -1.84294039
Germany        -1.11119865  1.06072429
Greece         -0.87874295  0.93055884
Guatamala       1.18358828 -0.18609424
Honduras        1.36333825  0.02032415
Iceland        -0.33557620 -1.16539024
India           0.85064214  0.85175743
Ireland        -0.89660448 -2.46031003
Italy          -1.07829893  0.51703990
Japan          -0.38486053  2.74651367
Korea           0.89509245  0.83383808
Luxembourg     -1.33690279  0.75116267
Malta          -0.22287754  0.32393631
Norway         -1.05180046 -0.19175733
Netherlands    -0.98785900  0.88796621
New Zealand    -0.45678604 -0.96933925
Nicaragua       1.00339345 -0.54954583
Panama          0.91241030 -0.15606348
Paraguay        0.81170333  0.72072321
Peru            0.92534657 -0.46157725
Philippines     1.11184809 -0.69488593
Portugal       -0.58059799  0.53923234
South Africa   -0.19644195  0.82228337
South Rhodesia  0.06108731  2.21221207
Spain          -0.66521535  0.81212511
Sweden         -1.63569355 -0.63352441
Switzerland    -1.22912136  0.32265569
Turkey          0.94434558  0.09809587
Tunisia         1.07227152 -0.82338461
United Kingdom -1.49174087 -0.95175452
United States  -0.72389730 -0.73315394
Venezuela       1.19569390 -0.32950372
Zambia          1.23813259  0.58162543
Jamaica         0.57631460 -0.50314665
Uruguay        -0.58926282  0.98656605
Libya           0.62443782 -1.77432308
Malaysia        1.32844252 -0.09502380

$scores$yscores
                       [,1]        [,2]
Australia      -1.197582618 -0.16236396
Austria        -0.514485534  0.33260994
Belgium        -1.126047497  0.28011657
Bolivia         1.175575433 -0.12494843
Brazil          0.132491457  0.88183195
Canada         -1.625987352 -1.08839364
Chile           0.975882427 -1.79030274
China           0.535391632  0.71855258
Colombia        1.057642399 -0.59695499
Costa Rica      0.543808669  0.67893036
Denmark        -1.704368254  0.91924174
Ecuador         1.155871496 -0.85121380
Finland        -0.635218480  0.01315294
France         -1.211470012  0.04020705
Germany        -1.397266488 -0.01731182
Greece          0.083021015  0.14211897
Guatamala       1.209216281 -0.92679302
Honduras        0.933602822  0.05262497
Iceland        -0.150891245 -2.15783934
India           1.036015081  0.57429510
Ireland        -0.106933726  0.43825829
Italy          -0.526164584  0.94515342
Japan          -0.945445589  2.20814404
Korea           1.100359257 -1.02841475
Luxembourg     -1.205145263 -0.36666114
Malta          -0.009000439  1.25130272
Norway         -1.059225255 -0.45008336
Netherlands    -0.989337775  0.49151632
New Zealand    -0.349384397  0.20271478
Nicaragua       0.892846437 -0.02931829
Panama          0.807040147 -0.92369850
Paraguay        1.344342456 -1.08273725
Peru            0.557284192  1.34827236
Philippines     0.740722188  1.38450895
Portugal        0.206695290  0.61907452
South Africa    0.375656978  0.71988759
South Rhodesia  0.619330744  1.45344991
Spain           0.167542079  0.61909114
Sweden         -1.818231179 -1.75733210
Switzerland    -1.628446935  0.32307189
Turkey          0.948826794 -0.61162985
Tunisia         1.267754398 -0.92230572
United Kingdom -0.485816535 -0.66038997
United States  -2.486211894 -1.91878127
Venezuela       0.389454702  0.32762273
Zambia          0.318834488  2.47265581
Jamaica         0.591415820 -0.62589387
Uruguay         0.391732707  0.24124982
Libya           0.567959967 -0.77253487
Malaysia        1.046343696 -0.81375377

$scores$corr.X.xscores
            [,1]       [,2]
pop15  0.9829821 -0.1837015
pop75 -0.9697929 -0.2439299

$scores$corr.Y.xscores
            [,1]        [,2]
sr   -0.40500636  0.31259455
dpi  -0.78728255 -0.09633306
ddpi -0.03904398  0.05142128

$scores$corr.X.yscores
            [,1]        [,2]
pop15  0.8107603 -0.06710179
pop75 -0.7998819 -0.08910177

$scores$corr.Y.yscores
           [,1]       [,2]
sr   -0.4910379  0.8557760
dpi  -0.9545172 -0.2637266
ddpi -0.0473377  0.1407737

# 정준상관계수sav.cc$cor
[1] 0.8247966 0.3652762

Result! 제1정준상관계수가 0.825이며, 이는 “인구특성” 변수집합의 선형결합과 “저축” 변수집합의 선형결합 사이에 매우 높은 상관성이 있음을 나타낸다.


# 정준상관계수 그래프barplot(sav.cc$cor,                               # 정준상관계수        xlab = "Dimension",                       # x축 라벨 이름
        ylab = "Canonical Correlations",          # y축 라벨 이름
        names.arg = 1:2,                          # 막대 라벨 이름이름
        ylim = c(0, 1))                           # y축 범위


# 정준계수sav.cc$xcoef                            # a_1X_1+...+a_pX_p의 a값
             [,1]       [,2]
pop15  0.06377599 -0.2535544
pop75 -0.34053260 -1.8221811
sav.cc$ycoef                            # b_1Y_1+...+b_qY_q의 b값
              [,1]          [,2]
sr   -0.0592971550  0.2336554912
dpi  -0.0009151786 -0.0005311762
ddpi -0.0291942000 -0.0858752749

Caution! 총 2개의 정준계수벡터가 출력되었는데 이는 \(s=\text{min}(2,3)=2\)에 의해 결정되었다.
Result! “인구특성” 변수집합에서 제1정준계수벡터 (0.064, -0.341)에 대응되는 제1정준변수는 \(\hat{V}_1=0.064X_1-0.341X_2\)이고, “저축” 변수집합에서 제1정준계수벡터 (-0.059, -0.001, -0.029)에 대응되는 제1정준변수는 \(\hat{W}_1=-0.059Y_1-0.001Y_2-0.029Y_3\)이다. 이 두 정준변수의 상관계수가 위에서 출력된 제1정준상관계수 0.825이다. 또한, 변수 “pop75”의 값이 1 단위 증가할 때 “인구특성” 변수집합의 제1정준변수 \(\hat{V}_1\)의 값은 0.341 감소한다.


# 표준화된 정준계수NAsav.cc$xcoef*apply(sav.X, 2, sd)        
            [,1]      [,2]
pop15  0.5836605 -2.320461
pop75 -0.4395497 -2.352019
sav.cc$ycoef*apply(sav.Y, 2, sd)    
            [,1]       [,2]
sr   -0.26567538  1.0468717
dpi  -0.90682202 -0.5263260
ddpi -0.08378358 -0.2464509

Result! “인구특성” 변수집합에서 표준화된 제1정준계수벡터 (0.584, -0.440)에 대응되는 표준화된 제1정준변수는 \(\hat{V}_1=0.584Z_{X_1}-0.440Z_{X_2}\)이고, “저축” 변수집합에서 제1정준계수벡터 (-0.266, -0.907, -0.084)에 대응되는 제1정준변수는 \(\hat{W}_1=-0.266Z_{Y_1}-0.907Z_{Y_2}-0.084Z_{Y_3}\)이다. 여기서 \(Z_{X_i}\)\(Z_{Y_i}\)은 표준화된 관찰변수(관찰값에 평균을 빼고 표준편차로 나눔)를 의미한다. 이 두 정준변수의 상관계수는 공분산행렬을 이용하여 계산된 제1정준상관계수와 동일하다. 즉, 0.825이다. 변수들의 영향력을 살펴보면 “인구특성” 변수집합의 제1정준변수에는 변수 “pop15”와 “pop75” 둘 다 상대적으로 큰 기여를 하고 있으며, “저축” 변수집합의 제1정준변수에는 변수 “dpi”가 상대적으로 큰 기여를 하고 있음을 알 수 있다.


# 정준점수sav.cc$scores$xscores
                      [,1]        [,2]
Australia      -0.56253600  0.40390249
Austria        -1.47152544 -0.87332319
Belgium        -1.44772362 -1.03147293
Bolivia         0.64585407 -0.58905269
Brazil          0.95103425  0.86551308
Canada         -0.40457624 -0.16057787
Chile           0.62111144  0.55740907
China           1.16878601  0.50796273
Colombia        1.15651493 -0.68190575
Costa Rica      1.19304831 -1.08123466
Denmark        -1.23791620 -0.27758614
Ecuador         1.09119961 -0.83511633
Finland        -0.48857145  1.69786021
France         -1.45930966 -1.84294039
Germany        -1.11119865  1.06072429
Greece         -0.87874295  0.93055884
Guatamala       1.18358828 -0.18609424
Honduras        1.36333825  0.02032415
Iceland        -0.33557620 -1.16539024
India           0.85064214  0.85175743
Ireland        -0.89660448 -2.46031003
Italy          -1.07829893  0.51703990
Japan          -0.38486053  2.74651367
Korea           0.89509245  0.83383808
Luxembourg     -1.33690279  0.75116267
Malta          -0.22287754  0.32393631
Norway         -1.05180046 -0.19175733
Netherlands    -0.98785900  0.88796621
New Zealand    -0.45678604 -0.96933925
Nicaragua       1.00339345 -0.54954583
Panama          0.91241030 -0.15606348
Paraguay        0.81170333  0.72072321
Peru            0.92534657 -0.46157725
Philippines     1.11184809 -0.69488593
Portugal       -0.58059799  0.53923234
South Africa   -0.19644195  0.82228337
South Rhodesia  0.06108731  2.21221207
Spain          -0.66521535  0.81212511
Sweden         -1.63569355 -0.63352441
Switzerland    -1.22912136  0.32265569
Turkey          0.94434558  0.09809587
Tunisia         1.07227152 -0.82338461
United Kingdom -1.49174087 -0.95175452
United States  -0.72389730 -0.73315394
Venezuela       1.19569390 -0.32950372
Zambia          1.23813259  0.58162543
Jamaica         0.57631460 -0.50314665
Uruguay        -0.58926282  0.98656605
Libya           0.62443782 -1.77432308
Malaysia        1.32844252 -0.09502380
sav.cc$scores$yscores
                       [,1]        [,2]
Australia      -1.197582618 -0.16236396
Austria        -0.514485534  0.33260994
Belgium        -1.126047497  0.28011657
Bolivia         1.175575433 -0.12494843
Brazil          0.132491457  0.88183195
Canada         -1.625987352 -1.08839364
Chile           0.975882427 -1.79030274
China           0.535391632  0.71855258
Colombia        1.057642399 -0.59695499
Costa Rica      0.543808669  0.67893036
Denmark        -1.704368254  0.91924174
Ecuador         1.155871496 -0.85121380
Finland        -0.635218480  0.01315294
France         -1.211470012  0.04020705
Germany        -1.397266488 -0.01731182
Greece          0.083021015  0.14211897
Guatamala       1.209216281 -0.92679302
Honduras        0.933602822  0.05262497
Iceland        -0.150891245 -2.15783934
India           1.036015081  0.57429510
Ireland        -0.106933726  0.43825829
Italy          -0.526164584  0.94515342
Japan          -0.945445589  2.20814404
Korea           1.100359257 -1.02841475
Luxembourg     -1.205145263 -0.36666114
Malta          -0.009000439  1.25130272
Norway         -1.059225255 -0.45008336
Netherlands    -0.989337775  0.49151632
New Zealand    -0.349384397  0.20271478
Nicaragua       0.892846437 -0.02931829
Panama          0.807040147 -0.92369850
Paraguay        1.344342456 -1.08273725
Peru            0.557284192  1.34827236
Philippines     0.740722188  1.38450895
Portugal        0.206695290  0.61907452
South Africa    0.375656978  0.71988759
South Rhodesia  0.619330744  1.45344991
Spain           0.167542079  0.61909114
Sweden         -1.818231179 -1.75733210
Switzerland    -1.628446935  0.32307189
Turkey          0.948826794 -0.61162985
Tunisia         1.267754398 -0.92230572
United Kingdom -0.485816535 -0.66038997
United States  -2.486211894 -1.91878127
Venezuela       0.389454702  0.32762273
Zambia          0.318834488  2.47265581
Jamaica         0.591415820 -0.62589387
Uruguay         0.391732707  0.24124982
Libya           0.567959967 -0.77253487
Malaysia        1.046343696 -0.81375377

Result! “인구특성” 변수집합에서 표준화된 제1정준변수 \(\hat{V}_1=0.584Z_{X_1}-0.440Z_{X_2}\)\(Z_{X_i}(i=1,2)\)에 개체에 의해 관찰된 값을 표준화하여 대입하면 “sav.cc$scores$xscores”의 1열에 대한 결과가 출력된다.


# 정준점수 그래프score <- cbind(sav.cc$scores$xscores,
               sav.cc$scores$yscores)
colnames(score) <- c("v1", "v2", "w1", "w2")
rownames(score) <- rownames(score)

plot(score[,c(1,3)], pch = 1, col = "blue", xlab = expression(hat(V)[1]), ylab = expression(hat(W)[1]))
abline(v = 0, h = 0, lty = 2)
text(score[,c(1,3)], labels = rownames(score), pos = 4, col = "red")

Result! 제3사분면에 있는 국가 “Sweden”, “Denmark”, “Belgium”, “Luxembourg”들은 제1정준변수 \(\hat{V}_1\)\(\hat{W}_1\)의 값이 음수이면서 높다는 것을 의미한다. 즉, \(\hat{V}_1\)의 값이 높은 음수값을 가질려면 음수이면서 큰 영향을 미치는 변수 “pop75”의 값이 높다는 것이고 \(\hat{W}_1\)의 값이 높은 음수값을 가지려면 마찬가지로 변수 “dpi”의 값이 높다는 것을 의미한다.


# 정준적재NAsav.cc$scores$corr.X.xscores
            [,1]       [,2]
pop15  0.9829821 -0.1837015
pop75 -0.9697929 -0.2439299
sav.cc$scores$corr.Y.yscores
           [,1]       [,2]
sr   -0.4910379  0.8557760
dpi  -0.9545172 -0.2637266
ddpi -0.0473377  0.1407737

Result! “인구특성” 변수집합의 정준적재(“sav.cc$scores$corr.X.xscores”)를 살펴보면, 제1정준변수 \(\hat{V}_1\)은 그의 관찰변수들과 0.9 이상의 높은 상관계수를 가지고 있음을 알 수 있다. 한편, “저축” 변수집합의 정준적재(sav.cc$scores$corr.Y.yscores)를 살펴보면, 변수 “dpi”가 제1정준변수 \(\hat{W}_1\)과 매우 높은 상관성을 가지고 있다는 것을 알 수 있다. 즉, \(r(Y_2, \hat{W}_1)=-0.9545\).


# 정준적재 그래프NAload <- rbind(sav.cc$scores$corr.X.xscores,
              sav.cc$scores$corr.Y.yscores)
plot(load[,1:2], pch = 1, col = "blue", xlab = "제1정준변수와의 정준적재"ab = "제="제2정준변수와의 정준적재"NA= c(-1, 1), ylim = c(-1, 1))
abline(v = 0, h = 0, lty = 2)
text(load[,1:2], labels = rownames(load), pos = 4, col = "red")


# 교차적재NAsav.cc$scores$corr.X.yscores
            [,1]        [,2]
pop15  0.8107603 -0.06710179
pop75 -0.7998819 -0.08910177
sav.cc$scores$corr.Y.xscores
            [,1]        [,2]
sr   -0.40500636  0.31259455
dpi  -0.78728255 -0.09633306
ddpi -0.03904398  0.05142128

Result! “인구특성” 변수집합의 교차적재(“sav.cc$scores$corr.X.yscores”)를 살펴보면, “저축” 변수집합으로부터 유도된 제1정준변수 \(\hat{W}_1\)과 변수 “pop15”, “pop75”는 큰 연관성을 가지고 있음을 알 수 있다. “저축” 변수집합의 교차적재(“sav.cc$scores$corr.Y.xscores”)를 살펴보면, “인구특성” 변수집합으로부터 유도된 제1정준변수 \(\hat{V}_1\)과 변수 “dpi”는 \(r(Y_2, \hat{V}_1)=-0.787\)로 매우 높은 연관성을 가지고 있으며, 이는 \(\hat{V}_1\)은 변수 “dpi”를 가장 많이 설명하고 있다는 것을 의미한다.


# X 변수집합의 변이에 대한 정준변수들의 공헌도NAcxx <- sav.cc$scores$corr.X.xscores
cv  <- colSums(cxx^2)/nrow(cxx)        
cum.cv <- cumsum(cv)

cbind(cv, cum.cv)
             cv   cum.cv
[1,] 0.95337598 0.953376
[2,] 0.04662402 1.000000

Result! “인구특성” 변수집합에 의해 유도된 정준변수들의 공헌도를 살펴보면, 제1정준변수는 전체변이 중 약 95.3%로 가장 높은 설명력을 가졌다.


# Y 변수집합의 변이에 대한 정준변수들의 공헌도NAcyy <- sav.cc$scores$corr.Y.yscores
cw  <- colSums(cyy^2)/nrow(cyy)        
cum.cw <- cumsum(cw)

cbind(cw, cum.cw)
            cw    cum.cw
[1,] 0.3848207 0.3848207
[2,] 0.2739072 0.6587279

Caution! “저축” 변수집합에는 3개의 변수들이 포함되어 있으나, 유도된 정준변수는 2개로 1개가 적다. 그렇기 때문에, 누적 설명력은 1이 되지 않는다.
Result! “저축” 변수집합에 의해 유도된 정준변수들의 공헌도를 살펴보면, 제1정준변수는 전체변이 중 약 38.5%로 가장 높은 설명력을 가졌다. 게다가, 두 개의 정준변수들로 전체 표본변이 중 약 65.9%가 설명됨을 알 수 있다.


# 독립성 검정 검정
pacman::p_load("CCP")

rho <- sav.cc$cor                 # 정준상관계수

N <- nrow(sav)                    # 전체 개체 개수p <- ncol(sav.X)                  # X 변수집합의 변수 개수
q <- ncol(sav.Y)                  # Y 변수집합의 변수 개수

# 정준상관계수에 대한 유의성 검정p.asym(rho,                       # 정준상관계수       N,                         # 각 변수들에 대한 관측 개수개수
       p,                         # 독립변수 개수수 개수
       q,                         # 종속변수 개수개수
       tstat = "Wilks")           # 검정통계량, "Wilks" / "Hotelling" / "Pillai" / "Roy"
Wilks' Lambda, using F-approximation (Rao's F):
              stat   approx df1 df2      p.value
1 to 2:  0.2770526 13.49772   6  90 7.300349e-11
2 to 2:  0.8665733  3.54132   2  46 3.711268e-02

Result! 분석 결과를 살펴보면, 먼저 제1정준상관계수에 대한 가설에 대해 검정통계량 값은 \(\chi^2=0.277\)이고 이에 대응되는 \(p\)-값은 7.300349e-11이다. 이에 근거하여, 유의수준 5%에서 \(p\)-값은 유의수준 \(\alpha=0.05\)보다 작기 때문에 귀무가설을 기각할 수 있다. 즉, 제1정준상관계수는 통계적으로 유의한 의미를 가진다. 제2정준상관계수에 대한 가설에 대해 검정통계량 값은 \(\chi^2=0.867\)이고 이에 대응되는 \(p\)-값은 3.711268e-02이다. 이에 근거하여, 유의수준 5%에서 \(p\)-값은 유의수준 \(\alpha=0.05\)보다 작기 때문에 귀무가설을 기각할 수 있다. 즉, 제2정준상관계수는 통계적으로 유의한 의미를 가진다.

Reuse

Text and figures are licensed under Creative Commons Attribution CC BY 4.0. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".