Discriminant Analysis

Multivariate Data Analysis

Description for Discriminant Analysis

Yeongeun Jeon
11-18-2022

1. 재무지표 데이터

# 데이터 불러오기
finance <- read.csv("C:/Users/User/Desktop/finance.csv")
head(finance)
  ID     x1     x2    x3    x4 y
1  1 -0.448 -0.410 1.086 0.452 1
2  2 -0.563 -0.311 1.513 0.164 1
3  3  0.064  0.015 1.007 0.397 1
4  4 -0.072 -0.093 1.454 0.258 1
5  5 -0.100 -0.091 1.564 0.668 1
6  6 -0.142 -0.065 0.706 0.279 1
# 데이터 전처리pacman::p_load("dplyr")

finance.X <- finance %>%
  select(2:5)                                      # 판별변수 선택  

head(finance.X)
      x1     x2    x3    x4
1 -0.448 -0.410 1.086 0.452
2 -0.563 -0.311 1.513 0.164
3  0.064  0.015 1.007 0.397
4 -0.072 -0.093 1.454 0.258
5 -0.100 -0.091 1.564 0.668
6 -0.142 -0.065 0.706 0.279

※ 비록 예제에서는 적용하지 않겠지만, 데이터의 전처리는 판별분석의 응용에서 중요하다. 판별분석의 적용에 앞서 수치형 변수는 중심화와 척도화, 즉, 함수 scale(, center = TRUE, scale = TRUE)를 이용하여 정규화를 수행하여야 한다.


2. 다변량 정규분포에 기초한 판별분석

# 모공분산행렬의 동일성에 대한 검정pacman::p_load("biotools")

finance.boxM <- boxM(finance.X,                   # 데이터행렬NAfinance$y)                   # 집단변수
finance.boxM

    Box's M-test for Homogeneity of Covariance Matrices

data:  finance.X
Chi-Sq (approx.) = 64.869, df = 10, p-value = 4.294e-10

Result! 가설 \(H_0 : \boldsymbol{\Sigma}_1=\boldsymbol{\Sigma}_2\), \(H_1 : \boldsymbol{\Sigma}_1\ne\boldsymbol{\Sigma}_2\)에 대하여, 카이제곱 검정통계량 \(\chi^2\) 값은 64.869, \(p\)-값은 0에 가깝다. 이에 근거하여, 유의수준 5%에서 \(p\)-값이 0.05보다 작기 때문에 귀무가설 \(H_0\)를 기각할 수 있다. 즉, 두 부분집단의 모공분산행렬은 동일하지 않다.

※ 하지만, 판별분석에 대해 전반적으로 설명하기 위해 모공분산행렬의 동일성 가정을 만족하지 않아도 재무지표 데이터를 이용한다.


2-1. 선형 판별분석

# 집단 분류x1 <- as.matrix(finance.X[which(finance$y==1),])   # y = 1인 집단 NAx2 <- as.matrix(finance.X[which(finance$y==2),])   # y = 2인 집단NAn1 <- nrow(x1)                                     # y = 1인 집단의 개체 개수n2 <- nrow(x2)                                     # y = 2인 집단의 개체 개수
# 평균벡터 계산xbar1 <- apply(x1, 2, mean)
print(xbar1,digits=4)
      x1       x2       x3       x4 
-0.07319 -0.08181  1.36705  0.43786 
xbar2 <- apply(x2, 2, mean)
print(xbar2,digits=4)
     x1      x2      x3      x4 
0.23492 0.05472 2.58040 0.42812 
# 합동 표본공분산 행렬
pacman::p_load("Morpho")

# 집단에 대한 합동 표본공분산행렬S <- covW(finance.X,                               # 데이터행렬NAas.factor(finance$y))                    # 집단변수
S
             x1          x2         x3           x4
x1  0.044975115 0.017034959 0.05723586 -0.001399235
x2  0.017034959 0.010721643 0.01647615  0.001627191
x3  0.057235863 0.016476150 0.64941902  0.029682931
x4 -0.001399235 0.001627191 0.02968293  0.034807846
attr(,"means")
           x1          x2       x3        x4
1 -0.07319048 -0.08180952 1.367048 0.4378571
2  0.23492000  0.05472000 2.580400 0.4281200

Caution! Package Morpho에서 제공하는 함수 covW()를 통해 합동 표본공분산행렬을 얻을 수 있다.

# 선형 판별계수
L1.a <- -(1/2)*t(xbar1)%*%solve(S)%*%xbar1   
print(L1.a,digits=4)
       [,1]
[1,] -4.384
L1.b <- solve(S)%*%xbar1 
print(L1.b,digits=4)
      [,1]
x1   2.844
x2 -16.625
x3   1.728
x4  11.997
L2.a <- -(1/2)*t(xbar2)%*%solve(S)%*%xbar2  
print(L2.a,digits=4)
       [,1]
[1,] -6.756
L2.b <- solve(S)%*%xbar2   
print(L2.b,digits=4)
     [,1]
x1  4.739
x2 -9.065
x3  3.325
x4 10.078

Result! 유도된 선형 판별함수는 다음과 같으며, 각 선형 판별함수들은 집단 1, 2에 속할 확률이다. \[ \begin{align} L_1(\boldsymbol{x})&=-4.384+2.844x_1-16.625x_2+1.728x_3+11.997x_4,\\ L_2(\boldsymbol{x})&=-6.756+4.739x_1-9.065x_2+3.325x_3+10.078x_4. \end{align} \] 또한, 두 집단 선형 판별함수의 차이를 계산하면 다음과 같다. \[ \begin{align} L(\boldsymbol{x})=L_2(\boldsymbol{x})-L_1(\boldsymbol{x})=-2.372+1.895x_1+7.560x_2+1.597x_3-1.919x_4. \end{align} \] 선형 판별계수들의 부호에 관심을 가지고 이를 해석해보면, \(x_1\)(총부채 대비 현금 유출입), \(x_2\)(총자산 대비 순이익), \(x_3\)(채무 대비 자산)이 클수록 \(L(\boldsymbol{x})\) 값이 커지므로 파산 기업(\(y=1\))에 비해 건전 기업(\(y=2\))에 속할 확률의 추정치가 커지며, 반면에 \(x_4\)(순매출 대비 자산)이 클수록 \(L(\boldsymbol{x})\) 값이 작아지므로 건전 기업(\(y=2\))에 속할 확률의 추정치가 작아짐을 알 수 있다.


Caution! Package MASS에서 제공하는 함수 lda()를 통해 두 집단 선형 판별함수의 차이 \(L(\boldsymbol{x})\)를 쉽게 얻을 수 있다. 다만, 함수 lda()에서는 각 변수들을 중심화(평균을 0으로 만듦)한 후 분석을 수행하며, 판별계수벡터를 정규화한다. 함수 lda()에 대한 자세한 옵션은 여기를 참고한다.

# 함수 ldapacman::p_load("MASS")

finance.lda <- lda(y ~ x1 + x2 + x3 + x4,           # formula : 반응변수(집단변수) ~ 판별변수# prior = c(1/2, 1/2),           # 사전확률                   data = finance)               
finance.lda
Call:
lda(y ~ x1 + x2 + x3 + x4, data = finance)

Prior probabilities of groups:
        1         2 
0.4565217 0.5434783 

Group means:
           x1          x2       x3        x4
1 -0.07319048 -0.08180952 1.367048 0.4378571
2  0.23492000  0.05472000 2.580400 0.4281200

Coefficients of linear discriminants:
          LD1
x1  1.0023665
x2  3.9998578
x3  0.8450508
x4 -1.0153181

Result! “Prior probabilities of groups”는 사전확률을 의미하며, 함수 lda()의 옵션 prior을 이용하여 직접 지정할 수 있다. 만약 옵션으로 따로 지정해주지 않는다면, 예제처럼 데이터에서 계산된 각 집단의 비율이 사전확률로 지정된다. 즉, 데이터 “finance”에서 파산 기업(\(y=1\))의 비율은 46%, 건전 기업(\(y=2\))의 비율은 54%이다. “Groups means”는 판별변수들의 집단별 평균을 의미한다. 예를 들어, 변수 \(x_4\)(순매출 대비 자산)은 두 집단의 평균이 0.438과 0.428로서 큰 차이가 없으므로, 이 변수는 판별에 기여하는 정도가 작을 것임을 짐작할 수 있다. “Coefficients of linear discriminants”는 선형 판별계수로 이 계수들을 이용하여 선형 판별함수를 표현하면 다음과 같다. \[ \begin{align} L(\boldsymbol{x})=1.002(x_1-\bar{x}_1)+3.999(x_2-\bar{x}_2)+0.845(x_3-\bar{x}_3)-1.015(x_4-\bar{x}_4). \end{align} \] 여기서, \(\bar{x}_i\)\(i\)번째 판별변수의 평균을 의미한다.
선형 판별계수들의 부호에 관심을 가지고 이를 해석해보면, \(x_1\)(총부채 대비 현금 유출입), \(x_2\)(총자산 대비 순이익), \(x_3\)(채무 대비 자산)이 클수록 \(L(\boldsymbol{x})\) 값이 커지므로 파산 기업(\(y=1\))에 비해 건전 기업(\(y=2\))에 속할 확률의 추정치가 커지며, 반면에 \(x_4\)(순매출 대비 자산)이 클수록 \(L(\boldsymbol{x})\) 값이 작아지므로 건전 기업(\(y=2\))에 속할 확률의 추정치가 작아진다.


# 새로운 개체에 대한 집단 예측
pred.finance <- predict(finance.lda,                # 함수 lda로부터 출력된 객체NAfinance)                    # 새로운 데이터pred.finance
$class
 [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 1 1 1 2 1 2 2 2 2 2 2 2 2 2 2 2 2
[34] 1 2 2 2 2 2 2 2 2 2 2 2 2
Levels: 1 2

$posterior
              1           2
1  0.9949306255 0.005069374
2  0.9710865699 0.028913430
3  0.7534057857 0.246594214
4  0.7703536176 0.229646382
5  0.8652242888 0.134775711
6  0.9142224102 0.085777590
7  0.7275761568 0.272423843
8  0.7900065070 0.209993493
9  0.6986301491 0.301369851
10 0.8910355393 0.108964461
11 0.9909008401 0.009099160
12 0.5721926558 0.427807344
13 0.5186738620 0.481326138
14 0.9767718689 0.023228131
15 0.2830962416 0.716903758
16 0.1444402841 0.855559716
17 0.7959204159 0.204079584
18 0.7430841132 0.256915887
19 0.7948128315 0.205187169
20 0.4167975396 0.583202460
21 0.9765310652 0.023468935
22 0.0777227190 0.922277281
23 0.4312959648 0.568704035
24 0.0206146974 0.979385303
25 0.1849003795 0.815099620
26 0.0107529268 0.989247073
27 0.0102128980 0.989787102
28 0.3399783669 0.660021633
29 0.3647147773 0.635285223
30 0.1440766724 0.855923328
31 0.3964772846 0.603522715
32 0.2946098358 0.705390164
33 0.3978140247 0.602185975
34 0.8742880520 0.125711948
35 0.1431237130 0.856876287
36 0.2675674570 0.732432543
37 0.1440439732 0.855956027
38 0.2674111138 0.732588886
39 0.0819781313 0.918021869
40 0.3937354665 0.606264534
41 0.2631920057 0.736807994
42 0.0033216079 0.996678392
43 0.2147405101 0.785259490
44 0.0281618125 0.971838188
45 0.1156120162 0.884387984
46 0.0008935622 0.999106438

$x
            LD1
1  -2.967536513
2  -2.033574427
3  -0.765301792
4  -0.814741367
5  -1.158132769
6  -1.426330659
7  -0.694143990
8  -0.875400305
9  -0.619242570
10 -1.286156120
11 -2.655911886
12 -0.328273634
13 -0.213959740
14 -2.152494806
15  0.317148807
16  0.766703877
17 -0.894459197
18 -0.736310023
19 -0.890858943
20  0.003303386
21 -2.146907954
22  1.134294600
23 -0.028105557
24  1.868209164
25  0.610423361
26  2.217831504
27  2.245380525
28  0.176545470
29  0.119179080
30  0.768262185
31  0.047866131
32  0.287492462
33  0.044912308
34 -1.200478173
35  0.772361805
36  0.358332875
37  0.768402482
38  0.358755017
39  1.103646750
40  0.053935539
41  0.370206933
42  2.843285122
43  0.511538395
44  1.699071683
45  0.902017830
46  3.539213134

Caution! 함수 predict()를 이용하면 유도된 선형 판별함수로부터 새로운 개체에 대한 집단 예측을 수행할 수 있다.
Result! 함수 predict()는 3개의 객체를 생성한다.

  1. x : 새로운 개체에 대한 선형 판별점수 \(L(\boldsymbol{x})\) 값이 저장되어 있다.
  2. posterior : 예측된 소속 확률 \(P(y=g|\boldsymbol{x})\)이 저장되어 있다.
  3. class : 예측된 소속 집단이 저장되어 있다.
    • 위의 예제에서는 다음과 같이 집단을 예측한다.
      • \(P(y=1|\boldsymbol{x})>P(y=2|\boldsymbol{x})\), 즉, \(L(\boldsymbol{x})<0\)이면, 집단 1(파산 기업)에 분류
      • \(P(y=1|\boldsymbol{x})<P(y=2|\boldsymbol{x})\), 즉, \(L(\boldsymbol{x})>0\)이면, 집단 2(건전 기업)에 분류
# 선형 판별점수, 예측 확률, 예측 집단pf <- cbind(finance, pred.finance$x, pred.finance$posterior, pred.finance$class)
pf
   ID     x1     x2    x3    x4 y          LD1            1
1   1 -0.448 -0.410 1.086 0.452 1 -2.967536513 0.9949306255
2   2 -0.563 -0.311 1.513 0.164 1 -2.033574427 0.9710865699
3   3  0.064  0.015 1.007 0.397 1 -0.765301792 0.7534057857
4   4 -0.072 -0.093 1.454 0.258 1 -0.814741367 0.7703536176
5   5 -0.100 -0.091 1.564 0.668 1 -1.158132769 0.8652242888
6   6 -0.142 -0.065 0.706 0.279 1 -1.426330659 0.9142224102
7   7  0.035  0.014 1.504 0.708 1 -0.694143990 0.7275761568
8   8 -0.065 -0.056 1.373 0.403 1 -0.875400305 0.7900065070
9   9 -0.072 -0.007 1.372 0.336 1 -0.619242570 0.6986301491
10 10 -0.135 -0.143 1.419 0.434 1 -1.286156120 0.8910355393
11 11 -0.229 -0.296 0.331 0.182 1 -2.655911886 0.9909008401
12 12  0.073  0.020 1.312 0.249 1 -0.328273634 0.5721926558
13 13  0.010  0.001 2.149 0.696 1 -0.213959740 0.5186738620
14 14 -0.227 -0.231 1.191 0.660 1 -2.152494806 0.9767718689
15 15  0.145  0.050 1.876 0.272 1  0.317148807 0.2830962416
16 16  0.370  0.109 1.994 0.382 1  0.766703877 0.1444402841
17 17 -0.075 -0.082 1.507 0.421 1 -0.894459197 0.7959204159
18 18  0.045  0.026 1.675 0.949 1 -0.736310023 0.7430841132
19 19  0.011 -0.003 1.260 0.608 1 -0.890858943 0.7948128315
20 20  0.122  0.105 1.143 0.165 1  0.003303386 0.4167975396
21 21 -0.284 -0.270 1.272 0.512 1 -2.146907954 0.9765310652
22 22  0.513  0.100 2.487 0.536 2  1.134294600 0.0777227190
23 23  0.076  0.019 2.006 0.530 2 -0.028105557 0.4312959648
24 24  0.377  0.107 3.265 0.354 2  1.868209164 0.0206146974
25 25  0.193  0.047 2.250 0.330 2  0.610423361 0.1849003795
26 26  0.324  0.071 4.240 0.627 2  2.217831504 0.0107529268
27 27  0.313  0.051 4.450 0.685 2  2.245380525 0.0102128980
28 28  0.118  0.049 2.251 0.692 2  0.176545470 0.3399783669
29 29 -0.017  0.023 2.053 0.348 2  0.119179080 0.3647147773
30 30  0.216  0.077 2.348 0.397 2  0.768262185 0.1440766724
31 31  0.170  0.069 1.797 0.571 2  0.047866131 0.3964772846
32 32  0.146  0.051 2.169 0.550 2  0.287492462 0.2946098358
33 33 -0.098 -0.012 2.502 0.577 2  0.044912308 0.3978140247
34 34  0.139 -0.031 0.461 0.264 2 -1.200478173 0.8742880520
35 35  0.137  0.072 2.612 0.515 2  0.772361805 0.1431237130
36 36  0.148  0.056 2.234 0.556 2  0.358332875 0.2675674570
37 37  0.163  0.048 2.308 0.197 2  0.768402482 0.1440439732
38 38  0.290  0.059 1.838 0.378 2  0.358755017 0.2674111138
39 39  0.538  0.106 2.329 0.483 2  1.103646750 0.0819781313
40 40 -0.333 -0.085 3.012 0.473 2  0.053935539 0.3937354665
41 41  0.478  0.091 1.244 0.184 2  0.370206933 0.2631920057
42 42  0.560  0.111 4.291 0.444 2  2.843285122 0.0033216079
43 43  0.202  0.079 1.936 0.301 2  0.511538395 0.2147405101
44 44  0.474  0.138 2.916 0.448 2  1.699071683 0.0281618125
45 45  0.166  0.035 2.452 0.137 2  0.902017830 0.1156120162
46 46  0.580  0.037 5.059 0.126 2  3.539213134 0.0008935622
             2 pred.finance$class
1  0.005069374                  1
2  0.028913430                  1
3  0.246594214                  1
4  0.229646382                  1
5  0.134775711                  1
6  0.085777590                  1
7  0.272423843                  1
8  0.209993493                  1
9  0.301369851                  1
10 0.108964461                  1
11 0.009099160                  1
12 0.427807344                  1
13 0.481326138                  1
14 0.023228131                  1
15 0.716903758                  2
16 0.855559716                  2
17 0.204079584                  1
18 0.256915887                  1
19 0.205187169                  1
20 0.583202460                  2
21 0.023468935                  1
22 0.922277281                  2
23 0.568704035                  2
24 0.979385303                  2
25 0.815099620                  2
26 0.989247073                  2
27 0.989787102                  2
28 0.660021633                  2
29 0.635285223                  2
30 0.855923328                  2
31 0.603522715                  2
32 0.705390164                  2
33 0.602185975                  2
34 0.125711948                  1
35 0.856876287                  2
36 0.732432543                  2
37 0.855956027                  2
38 0.732588886                  2
39 0.918021869                  2
40 0.606264534                  2
41 0.736807994                  2
42 0.996678392                  2
43 0.785259490                  2
44 0.971838188                  2
45 0.884387984                  2
46 0.999106438                  2

# 오분류표
pacman::p_load("DescTools")

# 도수분포표
finance.ctbl1 <- table(finance$y,                   # 실제 집단                       pred.finance$class)          # 예측된 집단finance.ctbl1
   
     1  2
  1 18  3
  2  1 24
Desc(finance.ctbl1,                                 # 도수분포표
     digits = 4)
-------------------------------------------------------------------- 
finance.ctbl1 (table)

Summary: 
n: 5e+01, rows: 2e+00, columns: 2e+00

Pearson's Chi-squared test (cont. adj):
  X-squared = 28.154, df = 1, p-value = 1.121e-07
Fisher's exact test p-value = 8.054e-09
McNemar's chi-squared = 0.25, df = 1, p-value = 0.6171

                    estimate   lwr.ci   upr.ci'
                                              
odds ratio           144.000   13.813 1501.237
rel. risk (col1)      21.429    3.116  147.380
rel. risk (col2)       0.149    0.052    0.426


Phi-Coefficient        0.827
Contingency Coeff.     0.637
Cramer's V             0.827

                                         
                    1         2       Sum
                                         
1     freq      2e+01     3e+00     2e+01
      perc   39.1304%   6.5217%  45.6522%
      p.row  85.7143%  14.2857%         .
      p.col  94.7368%  11.1111%         .
                                         
2     freq      1e+00     2e+01     2e+01
      perc    2.1739%  52.1739%  54.3478%
      p.row   4.0000%  96.0000%         .
      p.col   5.2632%  88.8889%         .
                                         
Sum   freq      2e+01     3e+01     5e+01
      perc   41.3043%  58.6957% 100.0000%
      p.row         .         .         .
      p.col         .         .         .
                                         

----------
' 95% conf. level

Caution! Package DescTools에서 제공하는 함수 Desc()를 이용하여 오분류표를 작성할 수 있다.
Result! 원래 집단 1에 속하는 21개의 개체 중 18개(18/21=85.7%)는 집단 1에 제대로 분류되었으나 3개(3/21=14.3%)는 집단 2로 잘못 분류되었다. 또한, 원래 집단 2에 속하는 25개의 개체 중 1개(1/25=4%)는 집단 1로 잘못 분류되었으나 24개(24/25=96%)는 집단 2에 제대로 분류되었다. 유도된 선형 판별함수에 대한 오류율은 (3+1)/46=8.7%이며, 정확도는 (18+24)/46=91.3%이다.


2-2. 이차 판별분석

# 이차 판별분석pacman::p_load("MASS")

finance.qda <- qda(y ~ x1 + x2 + x3 + x4,           # formula : 반응변수(집단변수) ~ 판별변수수
                   data = finance)
finance.qda
Call:
qda(y ~ x1 + x2 + x3 + x4, data = finance)

Prior probabilities of groups:
        1         2 
0.4565217 0.5434783 

Group means:
           x1          x2       x3        x4
1 -0.07319048 -0.08180952 1.367048 0.4378571
2  0.23492000  0.05472000 2.580400 0.4281200

Caution! 이차 판별분석에서는 판별계수벡터를 출력하지 않는다.


# 새로운 개체에 대한 집단 예측
pred2.finance <- predict(finance.qda,               # 함수 qda로부터 출력된 객체NAfinance)                   # 새로운 데이터cbind(finance, pred2.finance$posterior, pred2.finance$class)
   ID     x1     x2    x3    x4 y            1            2
1   1 -0.448 -0.410 1.086 0.452 1 1.000000e+00 3.116818e-39
2   2 -0.563 -0.311 1.513 0.164 1 1.000000e+00 1.111932e-14
3   3  0.064  0.015 1.007 0.397 1 5.421135e-01 4.578865e-01
4   4 -0.072 -0.093 1.454 0.258 1 9.983000e-01 1.699964e-03
5   5 -0.100 -0.091 1.564 0.668 1 9.999242e-01 7.579056e-05
6   6 -0.142 -0.065 0.706 0.279 1 8.842837e-01 1.157163e-01
7   7  0.035  0.014 1.504 0.708 1 8.582123e-01 1.417877e-01
8   8 -0.065 -0.056 1.373 0.403 1 9.739957e-01 2.600431e-02
9   9 -0.072 -0.007 1.372 0.336 1 5.907891e-01 4.092109e-01
10 10 -0.135 -0.143 1.419 0.434 1 9.999995e-01 4.807386e-07
11 11 -0.229 -0.296 0.331 0.182 1 1.000000e+00 3.046234e-22
12 12  0.073  0.020 1.312 0.249 1 6.209643e-01 3.790357e-01
13 13  0.010  0.001 2.149 0.696 1 5.581252e-01 4.418748e-01
14 14 -0.227 -0.231 1.191 0.660 1 1.000000e+00 3.388701e-17
15 15  0.145  0.050 1.876 0.272 1 2.419224e-01 7.580776e-01
16 16  0.370  0.109 1.994 0.382 1 1.601880e-02 9.839812e-01
17 17 -0.075 -0.082 1.507 0.421 1 9.977404e-01 2.259613e-03
18 18  0.045  0.026 1.675 0.949 1 9.755293e-01 2.447070e-02
19 19  0.011 -0.003 1.260 0.608 1 8.489113e-01 1.510887e-01
20 20  0.122  0.105 1.143 0.165 1 9.869655e-01 1.303450e-02
21 21 -0.284 -0.270 1.272 0.512 1 1.000000e+00 1.199323e-19
22 22  0.513  0.100 2.487 0.536 2 3.561964e-06 9.999964e-01
23 23  0.076  0.019 2.006 0.530 2 3.296200e-01 6.703800e-01
24 24  0.377  0.107 3.265 0.354 2 4.602133e-08 1.000000e+00
25 25  0.193  0.047 2.250 0.330 2 1.477562e-02 9.852244e-01
26 26  0.324  0.071 4.240 0.627 2 1.289663e-14 1.000000e+00
27 27  0.313  0.051 4.450 0.685 2 1.958738e-16 1.000000e+00
28 28  0.118  0.049 2.251 0.692 2 2.487000e-01 7.513000e-01
29 29 -0.017  0.023 2.053 0.348 2 1.896533e-01 8.103467e-01
30 30  0.216  0.077 2.348 0.397 2 2.116533e-02 9.788347e-01
31 31  0.170  0.069 1.797 0.571 2 4.594406e-01 5.405594e-01
32 32  0.146  0.051 2.169 0.550 2 1.360733e-01 8.639267e-01
33 33 -0.098 -0.012 2.502 0.577 2 1.747878e-02 9.825212e-01
34 34  0.139 -0.031 0.461 0.264 2 6.910115e-01 3.089885e-01
35 35  0.137  0.072 2.612 0.515 2 1.254622e-02 9.874538e-01
36 36  0.148  0.056 2.234 0.556 2 1.067476e-01 8.932524e-01
37 37  0.163  0.048 2.308 0.197 2 1.527945e-02 9.847205e-01
38 38  0.290  0.059 1.838 0.378 2 3.006097e-02 9.699390e-01
39 39  0.538  0.106 2.329 0.483 2 2.952091e-06 9.999970e-01
40 40 -0.333 -0.085 3.012 0.473 2 8.847632e-06 9.999912e-01
41 41  0.478  0.091 1.244 0.184 2 3.000447e-04 9.997000e-01
42 42  0.560  0.111 4.291 0.444 2 5.720113e-20 1.000000e+00
43 43  0.202  0.079 1.936 0.301 2 2.514586e-01 7.485414e-01
44 44  0.474  0.138 2.916 0.448 2 2.602885e-06 9.999974e-01
45 45  0.166  0.035 2.452 0.137 2 2.169365e-03 9.978306e-01
46 46  0.580  0.037 5.059 0.126 2 1.908462e-35 1.000000e+00
   pred2.finance$class
1                    1
2                    1
3                    1
4                    1
5                    1
6                    1
7                    1
8                    1
9                    1
10                   1
11                   1
12                   1
13                   1
14                   1
15                   2
16                   2
17                   1
18                   1
19                   1
20                   1
21                   1
22                   2
23                   2
24                   2
25                   2
26                   2
27                   2
28                   2
29                   2
30                   2
31                   2
32                   2
33                   2
34                   1
35                   2
36                   2
37                   2
38                   2
39                   2
40                   2
41                   2
42                   2
43                   2
44                   2
45                   2
46                   2

Caution! 이차 판별분석에서 함수 predict()는 판별점수를 출력하지 않는다.


# 오분류표
pacman::p_load("DescTools")

# 도수분포표
finance.ctbl2 <- table(finance$y,                   # 실제 집단                       pred2.finance$class)         # 예측된 집단finance.ctbl2
   
     1  2
  1 19  2
  2  1 24
Desc(finance.ctbl2,                                 # 도수분포표
     digits = 4)
-------------------------------------------------------------------- 
finance.ctbl2 (table)

Summary: 
n: 5e+01, rows: 2e+00, columns: 2e+00

Pearson's Chi-squared test (cont. adj):
  X-squared = 31.3, df = 1, p-value = 2.21e-08
Fisher's exact test p-value = 9.399e-10
McNemar's chi-squared = 0, df = 1, p-value = 1

                    estimate   lwr.ci   upr.ci'
                                              
odds ratio          2.28e+02 1.92e+01 2.71e+03
rel. risk (col1)    2.26e+01 3.30e+00 1.55e+02
rel. risk (col2)    9.92e-02 2.65e-02 3.72e-01


Phi-Coefficient        0.869
Contingency Coeff.     0.656
Cramer's V             0.869

                                         
                    1         2       Sum
                                         
1     freq      2e+01     2e+00     2e+01
      perc   41.3043%   4.3478%  45.6522%
      p.row  90.4762%   9.5238%         .
      p.col  95.0000%   7.6923%         .
                                         
2     freq      1e+00     2e+01     2e+01
      perc    2.1739%  52.1739%  54.3478%
      p.row   4.0000%  96.0000%         .
      p.col   5.0000%  92.3077%         .
                                         
Sum   freq      2e+01     3e+01     5e+01
      perc   43.4783%  56.5217% 100.0000%
      p.row         .         .         .
      p.col         .         .         .
                                         

----------
' 95% conf. level

Result! 원래 집단 1에 속하는 21개의 개체 중 19개(19/21=90.5%)는 집단 1에 제대로 분류되었으나 2개(5/21=9.5%)는 집단 2로 잘못 분류되었다. 또한, 원래 집단 2에 속하는 25개의 개체 중 1개(1/25=4%)는 집단 1로 잘못 분류되었으나 24개(24/25=96%)는 집단 2에 제대로 분류되었다. 유도된 선형 판별함수에 대한 오류율은 (2+1)/46=6.5%이며, 정확도는 (19+24)/46=93.5%이다. 이는 앞선 선형 판별분석보다 정확도가 증가하였음을 의미한다.


Caution! Package klaR에서 제공하는 함수 partimat()을 통해 판별분석의 분류 영역을 각 판별변수의 쌍에 대하여 표현할 수 있다.

# 그래프적 표현NApacman::p_load("klaR")

finance$y <- as.factor(finance$y)

# 선형 판별함수partimat(y ~ x1 + x2 + x3 + x4,      
         data = finance,
         method = "lda")
# 이차 판별함수NApartimat(y ~ x1 + x2 + x3 + x4,
         data = finance,
         method = "qda")

Result! 그래프를 통해 선형 판별함수와 이차 판별함수의 “선형”, “이차”라는 용어의 의미를 이해할 수 있다. 선형 판별함수는 각 판별변수의 쌍에 대하여 집단 1과 2는 선형(직선)으로 분류되었으며, 이차 판별함수는 집단 1과 2는 비선형으로 분류되었다. 또한, 각 집단에 대해 잘못 분류된 개체는 빨간색으로 표시되어 있다.


3. 정준 판별분석


3-1. 부분집단이 두 개인 경우

# 정준 판별분석
pacman::p_load("MASS")

finance.lda <- lda(y ~ x1 + x2 + x3 + x4,           # formula : 반응변수(집단변수) ~ 판별변수수
                   data = finance)                   
finance.lda
Call:
lda(y ~ x1 + x2 + x3 + x4, data = finance)

Prior probabilities of groups:
        1         2 
0.4565217 0.5434783 

Group means:
           x1          x2       x3        x4
1 -0.07319048 -0.08180952 1.367048 0.4378571
2  0.23492000  0.05472000 2.580400 0.4281200

Coefficients of linear discriminants:
          LD1
x1  1.0023665
x2  3.9998578
x3  0.8450508
x4 -1.0153181

Result! 부분집단이 두 개인 경우, 구해진 정준 판별계수는 (1.002, 3.999, 0.845, -1.015)이며, 정준 판별계수를 이용하여 정준 판별함수를 표현하면 다음과 같다. \[ \begin{align*} V=1.002(x_1-\bar{x}_1)+3.999(x_2-\bar{x}_2)+0.845(x_3-\bar{x}_3)-1.015(x_4-\bar{x}_4). \end{align*} \] 판별점수(\(V\))가 클수록, 즉, \(x_1\)(총부채 대비 현금 유출입), \(x_2\)(총자산 대비 순이익), \(x_3\)(채무 대비 자산)이 클수록 건전 기업(\(y=2\))에 속할 확률이 커지고, 판별점수(\(V\))가 작을수록, 즉, \(x_4\)(순매출 대비 자산)이 클수록 건전 기업(\(y=2\))에 속할 확률이 작아짐을 알 수 있다.


# 그래프적 표현NAplot(finance.lda)

Result! 유도된 판별함수에 의해 계산된 판별점수의 분포를 그래프로 표현한 결과이다. 첫 번째 그래프는 파산 기업(\(y=1\))에 대한 판별점수의 분포이며, 두 번째 그래프는 건전 기업(\(y=2\))에 대한 판별점수의 분포이다. 파산 기업(\(y=1\))에 대한 판별점수, 즉, \(V\)값은 음수가 나와야 파산 기업(\(y=1\))으로 분류하며, 이는 0보다 큰 점수에 대해 오분류되었다는 것을 의미한다. 건전 기업(\(y=2\))에 대한 판별점수, 즉, \(V\)값은 양수가 나와야 건전 기(\(y=2\))업으로 분류하며, 이는 0보다 작은 점수에 대해 오분류되었다는 것을 의미한다.


# 새로운 개체에 대한 집단 예측
pred.finance <- predict(finance.lda,                # 함수 lda로부터 출력된 객체NAfinance)                    # 새로운 데이터
# 선형 판별점수, 예측 확률, 예측 집단pf <- cbind(finance, pred.finance$x, pred.finance$posterior, pred.finance$class)

# 집단별 판별점수(LD1) 값의 평균aggregate(LD1 ~ y,     # 분석 변수 ~ 집단변수변수
          data = pf,   # 데이터프레임NAmean)        # 적용할 통계량NA
  y        LD1
1 1 -1.0272657
2 2  0.8629032

Result! 파산 기업(\(y=1\))으로 예측된 개체들의 판별점수의 평균은 -1.027이며 건전 기업(\(y=2\))으로 예측된 개체들의 판별점수의 평균은 0.863이다. 즉, 판별점수가 낮을수록 파산 기업(\(y=1\))으로 예측할 확률이 커지는 반면, 판별점수가 높을수록 건전 기업(\(y=2\))으로 예측할 확률이 커진다.


3-2. 부분집단이 세 개 이상인 경우

# 데이터 불러오기
data(iris)
head(iris)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa
# 정준 판별분석
pacman::p_load("MASS")

iris.lda <- lda(Species ~ ., data = iris)
iris.lda
Call:
lda(Species ~ ., data = iris)

Prior probabilities of groups:
    setosa versicolor  virginica 
 0.3333333  0.3333333  0.3333333 

Group means:
           Sepal.Length Sepal.Width Petal.Length Petal.Width
setosa            5.006       3.428        1.462       0.246
versicolor        5.936       2.770        4.260       1.326
virginica         6.588       2.974        5.552       2.026

Coefficients of linear discriminants:
                    LD1         LD2
Sepal.Length  0.8293776  0.02410215
Sepal.Width   1.5344731  2.16452123
Petal.Length -2.2012117 -0.93192121
Petal.Width  -2.8104603  2.83918785

Proportion of trace:
   LD1    LD2 
0.9912 0.0088 

Result! 데이터 “iris”의 “setosa”, “versicolor”, “virginica”의 비율은 0.33으로 동일하며, “virginica”의 “Petal.Length”는 다른 두 종류보다 평균적으로 더 길다. 또한, “proportion of trace”는 판별함수에 의해 설명되는 집단간 변동의 비율이며 유도된 두 판별함수의 설명력은 각각 99.1%, 0.9%임을 알 수 있다. 출력된 정준 판별계수를 이용하여 두 정준 판별함수를 표현하여 보면 다음과 같다. \[ \begin{align*} V_1&=0.829(x_1-\bar{x}_1)+1.534(x_2-\bar{x}_2)-2.201(x_3-\bar{x}_3)-2.810(x_4-\bar{x}_4),\\ V_2&=0.024(x_1-\bar{x}_1)+2.165(x_2-\bar{x}_2)-0.932(x_3-\bar{x}_3)+2.839(x_4-\bar{x}_4). \end{align*} \] 여기서, \(x_1, x_2, x_3, x_4\)는 각각 “Sepal.Length”(꽃받침조각의 길이), “Sepal.Width”(꽃받침조각의 폭), “Petal.Length”(꽃잎의 길이), “Petal.Width”(꽃잎의 폭)에 해당한다.


# 예측
pred <- predict(iris.lda,                            # 함수 lda로부터 출력된 객체NAiris)                                # 새로운 데이터
# 선형 판별점수, 예측 확률, 예측 집단iris.pred <- cbind(iris, pred$x, pred$posterior, pred$class)
iris.pred
    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
1            5.1         3.5          1.4         0.2     setosa
2            4.9         3.0          1.4         0.2     setosa
3            4.7         3.2          1.3         0.2     setosa
4            4.6         3.1          1.5         0.2     setosa
5            5.0         3.6          1.4         0.2     setosa
6            5.4         3.9          1.7         0.4     setosa
7            4.6         3.4          1.4         0.3     setosa
8            5.0         3.4          1.5         0.2     setosa
9            4.4         2.9          1.4         0.2     setosa
10           4.9         3.1          1.5         0.1     setosa
11           5.4         3.7          1.5         0.2     setosa
12           4.8         3.4          1.6         0.2     setosa
13           4.8         3.0          1.4         0.1     setosa
14           4.3         3.0          1.1         0.1     setosa
15           5.8         4.0          1.2         0.2     setosa
16           5.7         4.4          1.5         0.4     setosa
17           5.4         3.9          1.3         0.4     setosa
18           5.1         3.5          1.4         0.3     setosa
19           5.7         3.8          1.7         0.3     setosa
20           5.1         3.8          1.5         0.3     setosa
21           5.4         3.4          1.7         0.2     setosa
22           5.1         3.7          1.5         0.4     setosa
23           4.6         3.6          1.0         0.2     setosa
24           5.1         3.3          1.7         0.5     setosa
25           4.8         3.4          1.9         0.2     setosa
26           5.0         3.0          1.6         0.2     setosa
27           5.0         3.4          1.6         0.4     setosa
28           5.2         3.5          1.5         0.2     setosa
29           5.2         3.4          1.4         0.2     setosa
30           4.7         3.2          1.6         0.2     setosa
31           4.8         3.1          1.6         0.2     setosa
32           5.4         3.4          1.5         0.4     setosa
33           5.2         4.1          1.5         0.1     setosa
34           5.5         4.2          1.4         0.2     setosa
35           4.9         3.1          1.5         0.2     setosa
36           5.0         3.2          1.2         0.2     setosa
37           5.5         3.5          1.3         0.2     setosa
38           4.9         3.6          1.4         0.1     setosa
39           4.4         3.0          1.3         0.2     setosa
40           5.1         3.4          1.5         0.2     setosa
41           5.0         3.5          1.3         0.3     setosa
42           4.5         2.3          1.3         0.3     setosa
43           4.4         3.2          1.3         0.2     setosa
44           5.0         3.5          1.6         0.6     setosa
45           5.1         3.8          1.9         0.4     setosa
46           4.8         3.0          1.4         0.3     setosa
47           5.1         3.8          1.6         0.2     setosa
48           4.6         3.2          1.4         0.2     setosa
49           5.3         3.7          1.5         0.2     setosa
50           5.0         3.3          1.4         0.2     setosa
51           7.0         3.2          4.7         1.4 versicolor
52           6.4         3.2          4.5         1.5 versicolor
53           6.9         3.1          4.9         1.5 versicolor
54           5.5         2.3          4.0         1.3 versicolor
55           6.5         2.8          4.6         1.5 versicolor
56           5.7         2.8          4.5         1.3 versicolor
57           6.3         3.3          4.7         1.6 versicolor
58           4.9         2.4          3.3         1.0 versicolor
59           6.6         2.9          4.6         1.3 versicolor
60           5.2         2.7          3.9         1.4 versicolor
61           5.0         2.0          3.5         1.0 versicolor
62           5.9         3.0          4.2         1.5 versicolor
63           6.0         2.2          4.0         1.0 versicolor
64           6.1         2.9          4.7         1.4 versicolor
65           5.6         2.9          3.6         1.3 versicolor
66           6.7         3.1          4.4         1.4 versicolor
67           5.6         3.0          4.5         1.5 versicolor
68           5.8         2.7          4.1         1.0 versicolor
69           6.2         2.2          4.5         1.5 versicolor
70           5.6         2.5          3.9         1.1 versicolor
71           5.9         3.2          4.8         1.8 versicolor
72           6.1         2.8          4.0         1.3 versicolor
73           6.3         2.5          4.9         1.5 versicolor
74           6.1         2.8          4.7         1.2 versicolor
75           6.4         2.9          4.3         1.3 versicolor
76           6.6         3.0          4.4         1.4 versicolor
77           6.8         2.8          4.8         1.4 versicolor
78           6.7         3.0          5.0         1.7 versicolor
79           6.0         2.9          4.5         1.5 versicolor
80           5.7         2.6          3.5         1.0 versicolor
81           5.5         2.4          3.8         1.1 versicolor
82           5.5         2.4          3.7         1.0 versicolor
83           5.8         2.7          3.9         1.2 versicolor
84           6.0         2.7          5.1         1.6 versicolor
85           5.4         3.0          4.5         1.5 versicolor
86           6.0         3.4          4.5         1.6 versicolor
87           6.7         3.1          4.7         1.5 versicolor
88           6.3         2.3          4.4         1.3 versicolor
89           5.6         3.0          4.1         1.3 versicolor
90           5.5         2.5          4.0         1.3 versicolor
91           5.5         2.6          4.4         1.2 versicolor
92           6.1         3.0          4.6         1.4 versicolor
93           5.8         2.6          4.0         1.2 versicolor
94           5.0         2.3          3.3         1.0 versicolor
95           5.6         2.7          4.2         1.3 versicolor
96           5.7         3.0          4.2         1.2 versicolor
97           5.7         2.9          4.2         1.3 versicolor
98           6.2         2.9          4.3         1.3 versicolor
99           5.1         2.5          3.0         1.1 versicolor
100          5.7         2.8          4.1         1.3 versicolor
101          6.3         3.3          6.0         2.5  virginica
102          5.8         2.7          5.1         1.9  virginica
103          7.1         3.0          5.9         2.1  virginica
104          6.3         2.9          5.6         1.8  virginica
105          6.5         3.0          5.8         2.2  virginica
106          7.6         3.0          6.6         2.1  virginica
107          4.9         2.5          4.5         1.7  virginica
108          7.3         2.9          6.3         1.8  virginica
109          6.7         2.5          5.8         1.8  virginica
110          7.2         3.6          6.1         2.5  virginica
111          6.5         3.2          5.1         2.0  virginica
112          6.4         2.7          5.3         1.9  virginica
113          6.8         3.0          5.5         2.1  virginica
114          5.7         2.5          5.0         2.0  virginica
115          5.8         2.8          5.1         2.4  virginica
116          6.4         3.2          5.3         2.3  virginica
117          6.5         3.0          5.5         1.8  virginica
118          7.7         3.8          6.7         2.2  virginica
119          7.7         2.6          6.9         2.3  virginica
120          6.0         2.2          5.0         1.5  virginica
121          6.9         3.2          5.7         2.3  virginica
122          5.6         2.8          4.9         2.0  virginica
123          7.7         2.8          6.7         2.0  virginica
124          6.3         2.7          4.9         1.8  virginica
125          6.7         3.3          5.7         2.1  virginica
126          7.2         3.2          6.0         1.8  virginica
127          6.2         2.8          4.8         1.8  virginica
128          6.1         3.0          4.9         1.8  virginica
129          6.4         2.8          5.6         2.1  virginica
130          7.2         3.0          5.8         1.6  virginica
131          7.4         2.8          6.1         1.9  virginica
132          7.9         3.8          6.4         2.0  virginica
133          6.4         2.8          5.6         2.2  virginica
134          6.3         2.8          5.1         1.5  virginica
135          6.1         2.6          5.6         1.4  virginica
136          7.7         3.0          6.1         2.3  virginica
137          6.3         3.4          5.6         2.4  virginica
138          6.4         3.1          5.5         1.8  virginica
139          6.0         3.0          4.8         1.8  virginica
140          6.9         3.1          5.4         2.1  virginica
141          6.7         3.1          5.6         2.4  virginica
142          6.9         3.1          5.1         2.3  virginica
143          5.8         2.7          5.1         1.9  virginica
144          6.8         3.2          5.9         2.3  virginica
145          6.7         3.3          5.7         2.5  virginica
146          6.7         3.0          5.2         2.3  virginica
147          6.3         2.5          5.0         1.9  virginica
148          6.5         3.0          5.2         2.0  virginica
149          6.2         3.4          5.4         2.3  virginica
150          5.9         3.0          5.1         1.8  virginica
           LD1          LD2       setosa   versicolor    virginica
1    8.0617998  0.300420621 1.000000e+00 3.896358e-22 2.611168e-42
2    7.1286877 -0.786660426 1.000000e+00 7.217970e-18 5.042143e-37
3    7.4898280 -0.265384488 1.000000e+00 1.463849e-19 4.675932e-39
4    6.8132006 -0.670631068 1.000000e+00 1.268536e-16 3.566610e-35
5    8.1323093  0.514462530 1.000000e+00 1.637387e-22 1.082605e-42
6    7.7019467  1.461720967 1.000000e+00 3.883282e-21 4.566540e-40
7    7.2126176  0.355836209 1.000000e+00 1.113469e-18 2.302608e-37
8    7.6052935 -0.011633838 1.000000e+00 3.877586e-20 1.074496e-39
9    6.5605516 -1.015163624 1.000000e+00 1.902813e-15 9.482936e-34
10   7.3430599 -0.947319209 1.000000e+00 1.111803e-18 2.724060e-38
11   8.3973865  0.647363392 1.000000e+00 1.185277e-23 3.237084e-44
12   7.2192969 -0.109646389 1.000000e+00 1.621649e-18 1.833201e-37
13   7.3267960 -1.072989426 1.000000e+00 1.459225e-18 3.262506e-38
14   7.5724707 -0.805464137 1.000000e+00 1.117219e-19 1.316642e-39
15   9.8498430  1.585936985 1.000000e+00 5.487399e-30 1.531265e-52
16   9.1582389  2.737596471 1.000000e+00 1.261505e-27 2.268705e-48
17   8.5824314  1.834489452 1.000000e+00 6.754338e-25 3.868271e-45
18   7.7807538  0.584339407 1.000000e+00 4.223741e-21 1.224313e-40
19   8.0783588  0.968580703 1.000000e+00 1.774911e-22 2.552153e-42
20   8.0209745  1.140503656 1.000000e+00 2.593237e-22 5.792079e-42
21   7.4968023 -0.188377220 1.000000e+00 1.274639e-19 4.357774e-39
22   7.5864812  1.207970318 1.000000e+00 1.465999e-20 1.987241e-39
23   8.6810429  0.877590154 1.000000e+00 6.569280e-25 7.769177e-46
24   6.2514036  0.439696367 1.000000e+00 8.912348e-15 9.178624e-32
25   6.5589334 -0.389222752 1.000000e+00 1.070702e-15 1.167516e-33
26   6.7713832 -0.970634453 1.000000e+00 2.497339e-16 5.710269e-35
27   6.8230803  0.463011612 1.000000e+00 3.967732e-17 4.378624e-35
28   7.9246164  0.209638715 1.000000e+00 1.548165e-21 1.595360e-41
29   7.9912902  0.086378713 1.000000e+00 9.271847e-22 6.297955e-42
30   6.8294645 -0.544960851 1.000000e+00 9.665144e-17 2.977974e-35
31   6.7589549 -0.759002759 1.000000e+00 2.299936e-16 7.182666e-35
32   7.3749525  0.565844592 1.000000e+00 1.975404e-19 2.788334e-38
33   9.1263463  1.224432671 1.000000e+00 7.100041e-27 2.216408e-48
34   9.4676820  1.825226345 1.000000e+00 1.610295e-28 2.743783e-50
35   7.0620139 -0.663400423 1.000000e+00 1.205219e-17 1.277245e-36
36   7.9587624 -0.164961722 1.000000e+00 1.597186e-21 9.033772e-42
37   8.6136720  0.403253602 1.000000e+00 1.939869e-24 1.662808e-45
38   8.3304176  0.228133530 1.000000e+00 3.310234e-23 7.004971e-44
39   6.9341201 -0.705519379 1.000000e+00 4.190242e-17 6.991441e-36
40   7.6882313 -0.009223623 1.000000e+00 1.769359e-20 3.541694e-40
41   7.9179372  0.675121313 1.000000e+00 1.063014e-21 2.003866e-41
42   5.6618807 -1.934355243 1.000000e+00 2.174217e-11 1.213781e-28
43   7.2410147 -0.272615132 1.000000e+00 1.540753e-18 1.305719e-37
44   6.4144356  1.247301306 1.000000e+00 8.940589e-16 1.315511e-32
45   6.8594438  1.051653957 1.000000e+00 1.616206e-17 3.205992e-35
46   6.7647039 -0.505151855 1.000000e+00 1.714743e-16 7.172435e-35
47   8.0818994  0.763392750 1.000000e+00 2.083089e-22 2.289783e-42
48   7.1867690 -0.360986823 1.000000e+00 2.793482e-18 2.629539e-37
49   8.3144488  0.644953177 1.000000e+00 2.597560e-23 9.820820e-44
50   7.6719674 -0.134893840 1.000000e+00 2.322258e-20 4.241757e-40
51  -1.4592755  0.028543764 1.969732e-18 9.998894e-01 1.105878e-04
52  -1.7977057  0.484385502 1.242878e-19 9.992575e-01 7.425297e-04
53  -2.4169489 -0.092784031 2.088263e-22 9.958069e-01 4.193053e-03
54  -2.2624735 -1.587252508 2.198898e-22 9.996423e-01 3.576502e-04
55  -2.5486784 -0.472204898 4.213678e-23 9.955903e-01 4.409655e-03
56  -2.4299673 -0.966132066 8.127287e-23 9.985020e-01 1.497982e-03
57  -2.4484846  0.795961954 3.549900e-22 9.858346e-01 1.416542e-02
58  -0.2226665 -1.584673183 5.007065e-14 9.999999e-01 1.119811e-07
59  -1.7502012 -0.821180130 5.683334e-20 9.998781e-01 1.218649e-04
60  -1.9584224 -0.351563753 1.241039e-20 9.995027e-01 4.973085e-04
61  -1.1937603 -2.634455704 1.956628e-18 9.999986e-01 1.420841e-06
62  -1.8589257  0.319006544 5.968900e-20 9.992294e-01 7.705716e-04
63  -1.1580939 -2.643409913 2.716128e-18 9.999988e-01 1.220169e-06
64  -2.6660572 -0.642504540 1.184445e-23 9.943267e-01 5.673286e-03
65  -0.3783672  0.086638931 5.574931e-14 9.999984e-01 1.649215e-06
66  -1.2011726  0.084437359 2.369511e-17 9.999573e-01 4.268212e-05
67  -2.7681025  0.032199536 8.429328e-24 9.806471e-01 1.935289e-02
68  -0.7768540 -1.659161847 2.505072e-16 9.999991e-01 9.151716e-07
69  -3.4980543 -1.684956162 1.670352e-27 9.595735e-01 4.042653e-02
70  -1.0904279 -1.626583496 1.341503e-17 9.999967e-01 3.296105e-06
71  -3.7158961  1.044514421 7.408118e-28 2.532282e-01 7.467718e-01
72  -0.9976104 -0.490530602 9.399292e-17 9.999907e-01 9.345291e-06
73  -3.8352593 -1.405958061 7.674672e-29 8.155328e-01 1.844672e-01
74  -2.2574125 -1.426794234 2.683018e-22 9.995723e-01 4.277469e-04
75  -1.2557133 -0.546424197 7.813875e-18 9.999758e-01 2.421458e-05
76  -1.4375576 -0.134424979 2.073207e-18 9.999171e-01 8.290530e-05
77  -2.4590614 -0.935277280 6.357538e-23 9.982541e-01 1.745936e-03
78  -3.5184849  0.160588866 5.639473e-27 6.892131e-01 3.107869e-01
79  -2.5897987 -0.174611728 3.773528e-23 9.925169e-01 7.483138e-03
80   0.3074879 -1.318871459 9.555338e-12 1.000000e+00 1.910624e-08
81  -1.1066918 -1.752253714 1.022109e-17 9.999970e-01 3.007748e-06
82  -0.6055246 -1.942980378 9.648075e-16 9.999997e-01 3.266704e-07
83  -0.8987038 -0.904940034 1.616405e-16 9.999962e-01 3.778441e-06
84  -4.4984664 -0.882749915 4.241952e-32 1.433919e-01 8.566081e-01
85  -2.9339780  0.027379106 1.724514e-24 9.635576e-01 3.644242e-02
86  -2.1036082  1.191567675 1.344746e-20 9.940401e-01 5.959931e-03
87  -2.1425821  0.088779781 3.304868e-21 9.982223e-01 1.777672e-03
88  -2.4794560 -1.940739273 2.034571e-23 9.994557e-01 5.443096e-04
89  -1.3255257 -0.162869550 5.806986e-18 9.999486e-01 5.137101e-05
90  -1.9555789 -1.154348262 5.981190e-21 9.998183e-01 1.816870e-04
91  -2.4015702 -1.594583407 5.878614e-23 9.993856e-01 6.144200e-04
92  -2.2924888 -0.332860296 5.399006e-22 9.980934e-01 1.906591e-03
93  -1.2722722 -1.214584279 3.559507e-18 9.999887e-01 1.128570e-05
94  -0.2931761 -1.798715092 2.104146e-14 9.999999e-01 1.135016e-07
95  -2.0059888 -0.905418042 4.700877e-21 9.996980e-01 3.020226e-04
96  -1.1816631 -0.537570242 1.584328e-17 9.999817e-01 1.826327e-05
97  -1.6161564 -0.470103580 2.802293e-19 9.998892e-01 1.108315e-04
98  -1.4215888 -0.551244626 1.626918e-18 9.999536e-01 4.640488e-05
99   0.4759738 -0.799905482 7.638378e-11 1.000000e+00 1.867332e-08
100 -1.5494826 -0.593363582 4.679301e-19 9.999269e-01 7.305863e-05
101 -7.8394740  2.139733449 7.503075e-52 7.127303e-09 1.000000e+00
102 -5.5074800 -0.035813989 5.213802e-38 1.078251e-03 9.989217e-01
103 -6.2920085  0.467175777 1.231264e-42 2.592826e-05 9.999741e-01
104 -5.6054563 -0.340738058 1.537499e-38 1.068139e-03 9.989319e-01
105 -6.8505600  0.829825394 6.242501e-46 1.812963e-06 9.999982e-01
106 -7.4181678 -0.173117995 4.209281e-49 6.656263e-07 9.999993e-01
107 -4.6779954 -0.499095015 3.797837e-33 4.862025e-02 9.513797e-01
108 -6.3169269 -0.968980756 1.352176e-42 1.395463e-04 9.998605e-01
109 -6.3277368 -1.383289934 1.323390e-42 2.235313e-04 9.997765e-01
110 -6.8528134  2.717589632 3.453358e-46 1.727277e-07 9.999998e-01
111 -4.4407251  1.347236918 5.452660e-32 1.305353e-02 9.869465e-01
112 -5.4500957 -0.207736942 1.182560e-37 1.673875e-03 9.983261e-01
113 -5.6603371  0.832713617 5.204321e-39 2.006352e-04 9.997994e-01
114 -5.9582372 -0.094017545 1.269953e-40 1.948672e-04 9.998051e-01
115 -6.7592628  1.600232061 1.685361e-45 1.000455e-06 9.999990e-01
116 -5.8070433  2.010198817 5.141640e-40 2.605493e-05 9.999739e-01
117 -5.0660123 -0.026273384 1.909820e-35 6.083553e-03 9.939164e-01
118 -6.6088188  1.751635872 1.207799e-44 1.503799e-06 9.999985e-01
119 -9.1714749 -0.748255067 3.181265e-59 1.317279e-09 1.000000e+00
120 -4.7645357 -2.155737197 1.598511e-33 2.207990e-01 7.792010e-01
121 -6.2728391  1.649481407 1.119461e-42 6.451865e-06 9.999935e-01
122 -5.3607119  0.646120732 3.038170e-37 8.272676e-04 9.991727e-01
123 -7.5811998 -0.980722934 6.032879e-50 9.509838e-07 9.999990e-01
124 -4.3715028 -0.121297458 1.951261e-31 9.711942e-02 9.028806e-01
125 -5.7231753  1.293275530 1.956408e-39 8.836845e-05 9.999116e-01
126 -5.2791592 -0.042458238 1.109337e-36 2.679310e-03 9.973207e-01
127 -4.0808721  0.185936572 7.841997e-30 1.883675e-01 8.116325e-01
128 -4.0770364  0.523238483 7.964690e-30 1.342431e-01 8.657569e-01
129 -6.5191040  0.296976389 6.190641e-44 1.303681e-05 9.999870e-01
130 -4.5837194 -0.856815813 1.406448e-32 1.036823e-01 8.963177e-01
131 -6.2282401 -0.712719638 4.108129e-42 1.442338e-04 9.998558e-01
132 -5.2204877  1.468195094 1.555697e-36 5.198047e-04 9.994802e-01
133 -6.8001500  0.580895175 1.320330e-45 3.014091e-06 9.999970e-01
134 -3.8151597 -0.942985932 1.283891e-28 7.293881e-01 2.706119e-01
135 -5.1074897 -2.130589999 1.926560e-35 6.602253e-02 9.339775e-01
136 -6.7967163  0.863090395 1.271083e-45 2.152818e-06 9.999978e-01
137 -6.5244960  2.445035271 3.038963e-44 8.881859e-07 9.999991e-01
138 -4.9955028  0.187768525 4.605973e-35 6.165648e-03 9.938344e-01
139 -3.9398530  0.614020389 4.538634e-29 1.925262e-01 8.074738e-01
140 -5.2038309  1.144768076 2.140232e-36 8.290895e-04 9.991709e-01
141 -6.6530868  1.805319760 6.570902e-45 1.180810e-06 9.999988e-01
142 -5.1055595  1.992182010 6.202588e-36 4.276398e-04 9.995724e-01
143 -5.5074800 -0.035813989 5.213802e-38 1.078251e-03 9.989217e-01
144 -6.7960192  1.460686950 1.073945e-45 1.028519e-06 9.999990e-01
145 -6.8473594  2.428950671 4.048249e-46 2.524984e-07 9.999997e-01
146 -5.6450035  1.677717335 4.970070e-39 7.473361e-05 9.999253e-01
147 -5.1795646 -0.363475041 4.616611e-36 5.898784e-03 9.941012e-01
148 -4.9677409  0.821140550 5.548962e-35 3.145874e-03 9.968541e-01
149 -5.8861454  2.345090513 1.613687e-40 1.257468e-05 9.999874e-01
150 -4.6831543  0.332033811 2.858012e-33 1.754229e-02 9.824577e-01
    pred$class
1       setosa
2       setosa
3       setosa
4       setosa
5       setosa
6       setosa
7       setosa
8       setosa
9       setosa
10      setosa
11      setosa
12      setosa
13      setosa
14      setosa
15      setosa
16      setosa
17      setosa
18      setosa
19      setosa
20      setosa
21      setosa
22      setosa
23      setosa
24      setosa
25      setosa
26      setosa
27      setosa
28      setosa
29      setosa
30      setosa
31      setosa
32      setosa
33      setosa
34      setosa
35      setosa
36      setosa
37      setosa
38      setosa
39      setosa
40      setosa
41      setosa
42      setosa
43      setosa
44      setosa
45      setosa
46      setosa
47      setosa
48      setosa
49      setosa
50      setosa
51  versicolor
52  versicolor
53  versicolor
54  versicolor
55  versicolor
56  versicolor
57  versicolor
58  versicolor
59  versicolor
60  versicolor
61  versicolor
62  versicolor
63  versicolor
64  versicolor
65  versicolor
66  versicolor
67  versicolor
68  versicolor
69  versicolor
70  versicolor
71   virginica
72  versicolor
73  versicolor
74  versicolor
75  versicolor
76  versicolor
77  versicolor
78  versicolor
79  versicolor
80  versicolor
81  versicolor
82  versicolor
83  versicolor
84   virginica
85  versicolor
86  versicolor
87  versicolor
88  versicolor
89  versicolor
90  versicolor
91  versicolor
92  versicolor
93  versicolor
94  versicolor
95  versicolor
96  versicolor
97  versicolor
98  versicolor
99  versicolor
100 versicolor
101  virginica
102  virginica
103  virginica
104  virginica
105  virginica
106  virginica
107  virginica
108  virginica
109  virginica
110  virginica
111  virginica
112  virginica
113  virginica
114  virginica
115  virginica
116  virginica
117  virginica
118  virginica
119  virginica
120  virginica
121  virginica
122  virginica
123  virginica
124  virginica
125  virginica
126  virginica
127  virginica
128  virginica
129  virginica
130  virginica
131  virginica
132  virginica
133  virginica
134 versicolor
135  virginica
136  virginica
137  virginica
138  virginica
139  virginica
140  virginica
141  virginica
142  virginica
143  virginica
144  virginica
145  virginica
146  virginica
147  virginica
148  virginica
149  virginica
150  virginica

Caution! 함수 predict()를 통해 유도된 판별함수에 의한 새로운 개체의 정준 판별점수 값, 예측 확률, 예측 집단을 출력할 수 있다.
Result! 예를 들어, 유도된 판별함수에 의한 첫 번째 객체의 정준 판별점수 (LD1, LD2)는 (8.062, 0.300)이다.


# 판별점수에 대한 산점도 11
plot(iris.lda,                                       # 함수 lda로부터 출력된 객체NA= as.integer(iris$Species))                 # 각 집단별로 동일한 색깔 지정
# 판별점수에 대한 산점도 22
pacman::p_load("ggplot2")

ggplot(iris.pred, aes(LD1, LD2)) +                   # 선형 판별점수, 예측 확률, 예측 집단 데이터 NAgeom_point(aes(color = Species)) +                 # 각 집단별로 동일한 색깔 지정  theme_bw()

Caution! 함수 plot()ggplot()을 이용해서 두 판별점수 (LD1, LD2)에 대한 산점도를 작성할 수 있다.
Result! “Species”의 “setosa”는 첫 번째 판별함수에 의한 판별점수 LD1이 다른 두 종류와 달리 큰 양수값이다. 게다가, “setosa”는 다른 두 품종과 멀리 분리되어 있으나, “versicolor”와 “virginica”는 가깝게 인접해 있음을 볼 수 있다.


# 히스토그램
plot(iris.lda,                                       # 함수 lda로부터 출력된 객체NA= 1,                                      # 첫 번째 정준 판별점수만을 이용     type = "both")                                  # 히스토그램과 분포도 모두 출력

Result! 위의 산점도에서 확인한 것처럼 “Species”의 “setosa”는 첫 번째 판별함수에 의한 판별점수 LD1이 다른 두 종류와 달리 큰 양수값이며, 두 번째로 “versicolor”의 판별점수 값이 높으며, 마지막으로 “virginica”의 판별점수 값이 가장 낮다.


pacman::p_load("klaR")

partimat(Species ~ .,
         data = iris,
         method = "lda")


# 오분류표
pacman::p_load("DescTools")

# 도수분포표
iris.ctbl <- table(iris$Species,                     # 실제 집단                   pred$class)                       # 예측된 집단iris.ctbl
            
             setosa versicolor virginica
  setosa         50          0         0
  versicolor      0         48         2
  virginica       0          1        49
Desc(iris.ctbl,                                      # 도수분포표
     digits = 4)
-------------------------------------------------------------------- 
iris.ctbl (table)

Summary: 
n: 2e+02, rows: 3e+00, columns: 3e+00

Pearson's Chi-squared test:
  X-squared = 282.59, df = 4, p-value < 2.2e-16
Likelihood Ratio:
  X-squared = 302.95, df = 4, p-value < 2.2e-16
Mantel-Haenszel Chi-squared:
  X-squared = 144.6, df = 1, p-value < 2.2e-16

Phi-Coefficient        1.373
Contingency Coeff.     0.808
Cramer's V             0.971

                                                               
                      setosa   versicolor   virginica       Sum
                                                               
setosa       freq      5e+01            0           0     5e+01
             perc   33.3333%      0.0000%     0.0000%  33.3333%
             p.row 100.0000%      0.0000%     0.0000%         .
             p.col 100.0000%      0.0000%     0.0000%         .
                                                               
versicolor   freq          0        5e+01       2e+00     5e+01
             perc    0.0000%     32.0000%     1.3333%  33.3333%
             p.row   0.0000%     96.0000%     4.0000%         .
             p.col   0.0000%     97.9592%     3.9216%         .
                                                               
virginica    freq          0        1e+00       5e+01     5e+01
             perc    0.0000%      0.6667%    32.6667%  33.3333%
             p.row   0.0000%      2.0000%    98.0000%         .
             p.col   0.0000%      2.0408%    96.0784%         .
                                                               
Sum          freq      5e+01        5e+01       5e+01     2e+02
             perc   33.3333%     32.6667%    34.0000% 100.0000%
             p.row         .            .           .         .
             p.col         .            .           .         .
                                                               

Result! 원래 집단 “setosa”에 속하는 50개의 개체 모두 집단 “setosa”에 제대로 분류되었다. 원래 집단 “versicolor”에 속하는 50개의 개체 중 48개(48/50=96%)는 제대로 분류되었으나 2개(2/50=4%)는 잘못 분류되었다. 또한, 원래 집단 “virginica”에 속하는 50개의 개체 중 49개(49/50=98)는 제대로 분류되었으나 1개(1/50=2)는 잘못 분류되었다. 유도된 선형 판별함수에 대한 오류율은 (2+1)/150=2%이며, 정확도는 (50+48+49)/150=98%이다.


4. 예측

# 데이터 불러오기
data(iris)
head(iris)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa
# 정준 판별분석
pacman::p_load("MASS")

iris.lda <- lda(Species ~ ., data = iris)

# 예측 
predict(iris.lda,                            # 함수 lda로부터 출력된 객체NAiris)                                # 새로운 데이터
$class
  [1] setosa     setosa     setosa     setosa     setosa    
  [6] setosa     setosa     setosa     setosa     setosa    
 [11] setosa     setosa     setosa     setosa     setosa    
 [16] setosa     setosa     setosa     setosa     setosa    
 [21] setosa     setosa     setosa     setosa     setosa    
 [26] setosa     setosa     setosa     setosa     setosa    
 [31] setosa     setosa     setosa     setosa     setosa    
 [36] setosa     setosa     setosa     setosa     setosa    
 [41] setosa     setosa     setosa     setosa     setosa    
 [46] setosa     setosa     setosa     setosa     setosa    
 [51] versicolor versicolor versicolor versicolor versicolor
 [56] versicolor versicolor versicolor versicolor versicolor
 [61] versicolor versicolor versicolor versicolor versicolor
 [66] versicolor versicolor versicolor versicolor versicolor
 [71] virginica  versicolor versicolor versicolor versicolor
 [76] versicolor versicolor versicolor versicolor versicolor
 [81] versicolor versicolor versicolor virginica  versicolor
 [86] versicolor versicolor versicolor versicolor versicolor
 [91] versicolor versicolor versicolor versicolor versicolor
 [96] versicolor versicolor versicolor versicolor versicolor
[101] virginica  virginica  virginica  virginica  virginica 
[106] virginica  virginica  virginica  virginica  virginica 
[111] virginica  virginica  virginica  virginica  virginica 
[116] virginica  virginica  virginica  virginica  virginica 
[121] virginica  virginica  virginica  virginica  virginica 
[126] virginica  virginica  virginica  virginica  virginica 
[131] virginica  virginica  virginica  versicolor virginica 
[136] virginica  virginica  virginica  virginica  virginica 
[141] virginica  virginica  virginica  virginica  virginica 
[146] virginica  virginica  virginica  virginica  virginica 
Levels: setosa versicolor virginica

$posterior
          setosa   versicolor    virginica
1   1.000000e+00 3.896358e-22 2.611168e-42
2   1.000000e+00 7.217970e-18 5.042143e-37
3   1.000000e+00 1.463849e-19 4.675932e-39
4   1.000000e+00 1.268536e-16 3.566610e-35
5   1.000000e+00 1.637387e-22 1.082605e-42
6   1.000000e+00 3.883282e-21 4.566540e-40
7   1.000000e+00 1.113469e-18 2.302608e-37
8   1.000000e+00 3.877586e-20 1.074496e-39
9   1.000000e+00 1.902813e-15 9.482936e-34
10  1.000000e+00 1.111803e-18 2.724060e-38
11  1.000000e+00 1.185277e-23 3.237084e-44
12  1.000000e+00 1.621649e-18 1.833201e-37
13  1.000000e+00 1.459225e-18 3.262506e-38
14  1.000000e+00 1.117219e-19 1.316642e-39
15  1.000000e+00 5.487399e-30 1.531265e-52
16  1.000000e+00 1.261505e-27 2.268705e-48
17  1.000000e+00 6.754338e-25 3.868271e-45
18  1.000000e+00 4.223741e-21 1.224313e-40
19  1.000000e+00 1.774911e-22 2.552153e-42
20  1.000000e+00 2.593237e-22 5.792079e-42
21  1.000000e+00 1.274639e-19 4.357774e-39
22  1.000000e+00 1.465999e-20 1.987241e-39
23  1.000000e+00 6.569280e-25 7.769177e-46
24  1.000000e+00 8.912348e-15 9.178624e-32
25  1.000000e+00 1.070702e-15 1.167516e-33
26  1.000000e+00 2.497339e-16 5.710269e-35
27  1.000000e+00 3.967732e-17 4.378624e-35
28  1.000000e+00 1.548165e-21 1.595360e-41
29  1.000000e+00 9.271847e-22 6.297955e-42
30  1.000000e+00 9.665144e-17 2.977974e-35
31  1.000000e+00 2.299936e-16 7.182666e-35
32  1.000000e+00 1.975404e-19 2.788334e-38
33  1.000000e+00 7.100041e-27 2.216408e-48
34  1.000000e+00 1.610295e-28 2.743783e-50
35  1.000000e+00 1.205219e-17 1.277245e-36
36  1.000000e+00 1.597186e-21 9.033772e-42
37  1.000000e+00 1.939869e-24 1.662808e-45
38  1.000000e+00 3.310234e-23 7.004971e-44
39  1.000000e+00 4.190242e-17 6.991441e-36
40  1.000000e+00 1.769359e-20 3.541694e-40
41  1.000000e+00 1.063014e-21 2.003866e-41
42  1.000000e+00 2.174217e-11 1.213781e-28
43  1.000000e+00 1.540753e-18 1.305719e-37
44  1.000000e+00 8.940589e-16 1.315511e-32
45  1.000000e+00 1.616206e-17 3.205992e-35
46  1.000000e+00 1.714743e-16 7.172435e-35
47  1.000000e+00 2.083089e-22 2.289783e-42
48  1.000000e+00 2.793482e-18 2.629539e-37
49  1.000000e+00 2.597560e-23 9.820820e-44
50  1.000000e+00 2.322258e-20 4.241757e-40
51  1.969732e-18 9.998894e-01 1.105878e-04
52  1.242878e-19 9.992575e-01 7.425297e-04
53  2.088263e-22 9.958069e-01 4.193053e-03
54  2.198898e-22 9.996423e-01 3.576502e-04
55  4.213678e-23 9.955903e-01 4.409655e-03
56  8.127287e-23 9.985020e-01 1.497982e-03
57  3.549900e-22 9.858346e-01 1.416542e-02
58  5.007065e-14 9.999999e-01 1.119811e-07
59  5.683334e-20 9.998781e-01 1.218649e-04
60  1.241039e-20 9.995027e-01 4.973085e-04
61  1.956628e-18 9.999986e-01 1.420841e-06
62  5.968900e-20 9.992294e-01 7.705716e-04
63  2.716128e-18 9.999988e-01 1.220169e-06
64  1.184445e-23 9.943267e-01 5.673286e-03
65  5.574931e-14 9.999984e-01 1.649215e-06
66  2.369511e-17 9.999573e-01 4.268212e-05
67  8.429328e-24 9.806471e-01 1.935289e-02
68  2.505072e-16 9.999991e-01 9.151716e-07
69  1.670352e-27 9.595735e-01 4.042653e-02
70  1.341503e-17 9.999967e-01 3.296105e-06
71  7.408118e-28 2.532282e-01 7.467718e-01
72  9.399292e-17 9.999907e-01 9.345291e-06
73  7.674672e-29 8.155328e-01 1.844672e-01
74  2.683018e-22 9.995723e-01 4.277469e-04
75  7.813875e-18 9.999758e-01 2.421458e-05
76  2.073207e-18 9.999171e-01 8.290530e-05
77  6.357538e-23 9.982541e-01 1.745936e-03
78  5.639473e-27 6.892131e-01 3.107869e-01
79  3.773528e-23 9.925169e-01 7.483138e-03
80  9.555338e-12 1.000000e+00 1.910624e-08
81  1.022109e-17 9.999970e-01 3.007748e-06
82  9.648075e-16 9.999997e-01 3.266704e-07
83  1.616405e-16 9.999962e-01 3.778441e-06
84  4.241952e-32 1.433919e-01 8.566081e-01
85  1.724514e-24 9.635576e-01 3.644242e-02
86  1.344746e-20 9.940401e-01 5.959931e-03
87  3.304868e-21 9.982223e-01 1.777672e-03
88  2.034571e-23 9.994557e-01 5.443096e-04
89  5.806986e-18 9.999486e-01 5.137101e-05
90  5.981190e-21 9.998183e-01 1.816870e-04
91  5.878614e-23 9.993856e-01 6.144200e-04
92  5.399006e-22 9.980934e-01 1.906591e-03
93  3.559507e-18 9.999887e-01 1.128570e-05
94  2.104146e-14 9.999999e-01 1.135016e-07
95  4.700877e-21 9.996980e-01 3.020226e-04
96  1.584328e-17 9.999817e-01 1.826327e-05
97  2.802293e-19 9.998892e-01 1.108315e-04
98  1.626918e-18 9.999536e-01 4.640488e-05
99  7.638378e-11 1.000000e+00 1.867332e-08
100 4.679301e-19 9.999269e-01 7.305863e-05
101 7.503075e-52 7.127303e-09 1.000000e+00
102 5.213802e-38 1.078251e-03 9.989217e-01
103 1.231264e-42 2.592826e-05 9.999741e-01
104 1.537499e-38 1.068139e-03 9.989319e-01
105 6.242501e-46 1.812963e-06 9.999982e-01
106 4.209281e-49 6.656263e-07 9.999993e-01
107 3.797837e-33 4.862025e-02 9.513797e-01
108 1.352176e-42 1.395463e-04 9.998605e-01
109 1.323390e-42 2.235313e-04 9.997765e-01
110 3.453358e-46 1.727277e-07 9.999998e-01
111 5.452660e-32 1.305353e-02 9.869465e-01
112 1.182560e-37 1.673875e-03 9.983261e-01
113 5.204321e-39 2.006352e-04 9.997994e-01
114 1.269953e-40 1.948672e-04 9.998051e-01
115 1.685361e-45 1.000455e-06 9.999990e-01
116 5.141640e-40 2.605493e-05 9.999739e-01
117 1.909820e-35 6.083553e-03 9.939164e-01
118 1.207799e-44 1.503799e-06 9.999985e-01
119 3.181265e-59 1.317279e-09 1.000000e+00
120 1.598511e-33 2.207990e-01 7.792010e-01
121 1.119461e-42 6.451865e-06 9.999935e-01
122 3.038170e-37 8.272676e-04 9.991727e-01
123 6.032879e-50 9.509838e-07 9.999990e-01
124 1.951261e-31 9.711942e-02 9.028806e-01
125 1.956408e-39 8.836845e-05 9.999116e-01
126 1.109337e-36 2.679310e-03 9.973207e-01
127 7.841997e-30 1.883675e-01 8.116325e-01
128 7.964690e-30 1.342431e-01 8.657569e-01
129 6.190641e-44 1.303681e-05 9.999870e-01
130 1.406448e-32 1.036823e-01 8.963177e-01
131 4.108129e-42 1.442338e-04 9.998558e-01
132 1.555697e-36 5.198047e-04 9.994802e-01
133 1.320330e-45 3.014091e-06 9.999970e-01
134 1.283891e-28 7.293881e-01 2.706119e-01
135 1.926560e-35 6.602253e-02 9.339775e-01
136 1.271083e-45 2.152818e-06 9.999978e-01
137 3.038963e-44 8.881859e-07 9.999991e-01
138 4.605973e-35 6.165648e-03 9.938344e-01
139 4.538634e-29 1.925262e-01 8.074738e-01
140 2.140232e-36 8.290895e-04 9.991709e-01
141 6.570902e-45 1.180810e-06 9.999988e-01
142 6.202588e-36 4.276398e-04 9.995724e-01
143 5.213802e-38 1.078251e-03 9.989217e-01
144 1.073945e-45 1.028519e-06 9.999990e-01
145 4.048249e-46 2.524984e-07 9.999997e-01
146 4.970070e-39 7.473361e-05 9.999253e-01
147 4.616611e-36 5.898784e-03 9.941012e-01
148 5.548962e-35 3.145874e-03 9.968541e-01
149 1.613687e-40 1.257468e-05 9.999874e-01
150 2.858012e-33 1.754229e-02 9.824577e-01

$x
           LD1          LD2
1    8.0617998  0.300420621
2    7.1286877 -0.786660426
3    7.4898280 -0.265384488
4    6.8132006 -0.670631068
5    8.1323093  0.514462530
6    7.7019467  1.461720967
7    7.2126176  0.355836209
8    7.6052935 -0.011633838
9    6.5605516 -1.015163624
10   7.3430599 -0.947319209
11   8.3973865  0.647363392
12   7.2192969 -0.109646389
13   7.3267960 -1.072989426
14   7.5724707 -0.805464137
15   9.8498430  1.585936985
16   9.1582389  2.737596471
17   8.5824314  1.834489452
18   7.7807538  0.584339407
19   8.0783588  0.968580703
20   8.0209745  1.140503656
21   7.4968023 -0.188377220
22   7.5864812  1.207970318
23   8.6810429  0.877590154
24   6.2514036  0.439696367
25   6.5589334 -0.389222752
26   6.7713832 -0.970634453
27   6.8230803  0.463011612
28   7.9246164  0.209638715
29   7.9912902  0.086378713
30   6.8294645 -0.544960851
31   6.7589549 -0.759002759
32   7.3749525  0.565844592
33   9.1263463  1.224432671
34   9.4676820  1.825226345
35   7.0620139 -0.663400423
36   7.9587624 -0.164961722
37   8.6136720  0.403253602
38   8.3304176  0.228133530
39   6.9341201 -0.705519379
40   7.6882313 -0.009223623
41   7.9179372  0.675121313
42   5.6618807 -1.934355243
43   7.2410147 -0.272615132
44   6.4144356  1.247301306
45   6.8594438  1.051653957
46   6.7647039 -0.505151855
47   8.0818994  0.763392750
48   7.1867690 -0.360986823
49   8.3144488  0.644953177
50   7.6719674 -0.134893840
51  -1.4592755  0.028543764
52  -1.7977057  0.484385502
53  -2.4169489 -0.092784031
54  -2.2624735 -1.587252508
55  -2.5486784 -0.472204898
56  -2.4299673 -0.966132066
57  -2.4484846  0.795961954
58  -0.2226665 -1.584673183
59  -1.7502012 -0.821180130
60  -1.9584224 -0.351563753
61  -1.1937603 -2.634455704
62  -1.8589257  0.319006544
63  -1.1580939 -2.643409913
64  -2.6660572 -0.642504540
65  -0.3783672  0.086638931
66  -1.2011726  0.084437359
67  -2.7681025  0.032199536
68  -0.7768540 -1.659161847
69  -3.4980543 -1.684956162
70  -1.0904279 -1.626583496
71  -3.7158961  1.044514421
72  -0.9976104 -0.490530602
73  -3.8352593 -1.405958061
74  -2.2574125 -1.426794234
75  -1.2557133 -0.546424197
76  -1.4375576 -0.134424979
77  -2.4590614 -0.935277280
78  -3.5184849  0.160588866
79  -2.5897987 -0.174611728
80   0.3074879 -1.318871459
81  -1.1066918 -1.752253714
82  -0.6055246 -1.942980378
83  -0.8987038 -0.904940034
84  -4.4984664 -0.882749915
85  -2.9339780  0.027379106
86  -2.1036082  1.191567675
87  -2.1425821  0.088779781
88  -2.4794560 -1.940739273
89  -1.3255257 -0.162869550
90  -1.9555789 -1.154348262
91  -2.4015702 -1.594583407
92  -2.2924888 -0.332860296
93  -1.2722722 -1.214584279
94  -0.2931761 -1.798715092
95  -2.0059888 -0.905418042
96  -1.1816631 -0.537570242
97  -1.6161564 -0.470103580
98  -1.4215888 -0.551244626
99   0.4759738 -0.799905482
100 -1.5494826 -0.593363582
101 -7.8394740  2.139733449
102 -5.5074800 -0.035813989
103 -6.2920085  0.467175777
104 -5.6054563 -0.340738058
105 -6.8505600  0.829825394
106 -7.4181678 -0.173117995
107 -4.6779954 -0.499095015
108 -6.3169269 -0.968980756
109 -6.3277368 -1.383289934
110 -6.8528134  2.717589632
111 -4.4407251  1.347236918
112 -5.4500957 -0.207736942
113 -5.6603371  0.832713617
114 -5.9582372 -0.094017545
115 -6.7592628  1.600232061
116 -5.8070433  2.010198817
117 -5.0660123 -0.026273384
118 -6.6088188  1.751635872
119 -9.1714749 -0.748255067
120 -4.7645357 -2.155737197
121 -6.2728391  1.649481407
122 -5.3607119  0.646120732
123 -7.5811998 -0.980722934
124 -4.3715028 -0.121297458
125 -5.7231753  1.293275530
126 -5.2791592 -0.042458238
127 -4.0808721  0.185936572
128 -4.0770364  0.523238483
129 -6.5191040  0.296976389
130 -4.5837194 -0.856815813
131 -6.2282401 -0.712719638
132 -5.2204877  1.468195094
133 -6.8001500  0.580895175
134 -3.8151597 -0.942985932
135 -5.1074897 -2.130589999
136 -6.7967163  0.863090395
137 -6.5244960  2.445035271
138 -4.9955028  0.187768525
139 -3.9398530  0.614020389
140 -5.2038309  1.144768076
141 -6.6530868  1.805319760
142 -5.1055595  1.992182010
143 -5.5074800 -0.035813989
144 -6.7960192  1.460686950
145 -6.8473594  2.428950671
146 -5.6450035  1.677717335
147 -5.1795646 -0.363475041
148 -4.9677409  0.821140550
149 -5.8861454  2.345090513
150 -4.6831543  0.332033811

5. 오분류율 계산

# 데이터 불러오기
data(iris)
head(iris)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa
# 1. 재대입에 의한 오분류율 계산 NA## 정준 판별분석
pacman::p_load("MASS")

iris.lda <- lda(Species ~ ., data = iris)

## 예측
pred <- predict(iris.lda,                            # 함수 lda로부터 출력된 객체NAiris)                                # 판별함수를 유도하는 데 사용했던 데이터## 오분류율 계산
## 함수 table()iris.ctbl <- table(iris$Species,                     # 실제 집단                   pred$class)                       # 예측된 집단iris.ctbl
            
             setosa versicolor virginica
  setosa         50          0         0
  versicolor      0         48         2
  virginica       0          1        49
## 함수 Desc()pacman::p_load("DescTools")

Desc(iris.ctbl,                                      # 도수분포표
     digits = 4)
-------------------------------------------------------------------- 
iris.ctbl (table)

Summary: 
n: 2e+02, rows: 3e+00, columns: 3e+00

Pearson's Chi-squared test:
  X-squared = 282.59, df = 4, p-value < 2.2e-16
Likelihood Ratio:
  X-squared = 302.95, df = 4, p-value < 2.2e-16
Mantel-Haenszel Chi-squared:
  X-squared = 144.6, df = 1, p-value < 2.2e-16

Phi-Coefficient        1.373
Contingency Coeff.     0.808
Cramer's V             0.971

                                                               
                      setosa   versicolor   virginica       Sum
                                                               
setosa       freq      5e+01            0           0     5e+01
             perc   33.3333%      0.0000%     0.0000%  33.3333%
             p.row 100.0000%      0.0000%     0.0000%         .
             p.col 100.0000%      0.0000%     0.0000%         .
                                                               
versicolor   freq          0        5e+01       2e+00     5e+01
             perc    0.0000%     32.0000%     1.3333%  33.3333%
             p.row   0.0000%     96.0000%     4.0000%         .
             p.col   0.0000%     97.9592%     3.9216%         .
                                                               
virginica    freq          0        1e+00       5e+01     5e+01
             perc    0.0000%      0.6667%    32.6667%  33.3333%
             p.row   0.0000%      2.0000%    98.0000%         .
             p.col   0.0000%      2.0408%    96.0784%         .
                                                               
Sum          freq      5e+01        5e+01       5e+01     2e+02
             perc   33.3333%     32.6667%    34.0000% 100.0000%
             p.row         .            .           .         .
             p.col         .            .           .         .
                                                               
## 함수 confusionMatrix()pacman::p_load("caret")

confusionMatrix(pred$class,                          # 예측된 집단                iris$Species)                        # 실제 집단
Confusion Matrix and Statistics

            Reference
Prediction   setosa versicolor virginica
  setosa         50          0         0
  versicolor      0         48         1
  virginica       0          2        49

Overall Statistics
                                          
               Accuracy : 0.98            
                 95% CI : (0.9427, 0.9959)
    No Information Rate : 0.3333          
    P-Value [Acc > NIR] : < 2.2e-16       
                                          
                  Kappa : 0.97            
                                          
 Mcnemar's Test P-Value : NA              

Statistics by Class:

                     Class: setosa Class: versicolor Class: virginica
Sensitivity                 1.0000            0.9600           0.9800
Specificity                 1.0000            0.9900           0.9800
Pos Pred Value              1.0000            0.9796           0.9608
Neg Pred Value              1.0000            0.9802           0.9899
Prevalence                  0.3333            0.3333           0.3333
Detection Rate              0.3333            0.3200           0.3267
Detection Prevalence        0.3333            0.3267           0.3400
Balanced Accuracy           1.0000            0.9750           0.9800

# 2. 표본분할에 의한 오분류율 계산## 표본 분할
pacman::p_load("caret")

set.seed(200)                                        # Seed 고정
ind <- createDataPartition(iris$Species,             # 반응변수
                           p = .7,                   # 판별함수를 유도하는 데 사용되는 데이터 비율
                           list = F)                 # 출력 결과를 List로 반환할 것인지 여부  NAtrd <- iris[ind,]                                    # 판별함수를 유도하는 데 사용되는 데이터
ted <- iris[-ind,]                                   # 오분류율 계산을 위해 사용되는 데이터 NA

Caution! Package caret에서 제공하는 함수 createDataPartition()은 반응변수의 집단별 비율을 원본 데이터와 같게 유지하면서 판별함수를 유도하는 데 사용할 데이터의 인덱스를 추출한다.

## 정준 판별분석
pacman::p_load("MASS")

iris.lda <- lda(Species ~ ., data = trd)

## 예측
pred <- predict(iris.lda,                            # 함수 lda로부터 출력된 객체NAted)                                 # 새로운 데이터## 오분류율 계산
## 함수 table()iris.ctbl <- table(ted$Species,                      # 실제 집단                   pred$class)                       # 예측된 집단iris.ctbl
            
             setosa versicolor virginica
  setosa         15          0         0
  versicolor      0         15         0
  virginica       0          0        15
## 함수 Desc()pacman::p_load("DescTools")

Desc(iris.ctbl,                                      # 도수분포표
     digits = 4)
-------------------------------------------------------------------- 
iris.ctbl (table)

Summary: 
n: 4e+01, rows: 3e+00, columns: 3e+00

Pearson's Chi-squared test:
  X-squared = 90, df = 4, p-value < 2.2e-16
Likelihood Ratio:
  X-squared = 98.875, df = 4, p-value < 2.2e-16
Mantel-Haenszel Chi-squared:
  X-squared = 44, df = 1, p-value = 3.284e-11

Phi-Coefficient        1.414
Contingency Coeff.     0.816
Cramer's V             1.000

                                                               
                      setosa   versicolor   virginica       Sum
                                                               
setosa       freq      2e+01            0           0     2e+01
             perc   33.3333%      0.0000%     0.0000%  33.3333%
             p.row 100.0000%      0.0000%     0.0000%         .
             p.col 100.0000%      0.0000%     0.0000%         .
                                                               
versicolor   freq          0        2e+01           0     2e+01
             perc    0.0000%     33.3333%     0.0000%  33.3333%
             p.row   0.0000%    100.0000%     0.0000%         .
             p.col   0.0000%    100.0000%     0.0000%         .
                                                               
virginica    freq          0            0       2e+01     2e+01
             perc    0.0000%      0.0000%    33.3333%  33.3333%
             p.row   0.0000%      0.0000%   100.0000%         .
             p.col   0.0000%      0.0000%   100.0000%         .
                                                               
Sum          freq      2e+01        2e+01       2e+01     4e+01
             perc   33.3333%     33.3333%    33.3333% 100.0000%
             p.row         .            .           .         .
             p.col         .            .           .         .
                                                               
## 함수 confusionMatrix()pacman::p_load("caret")

confusionMatrix(pred$class,                          # 예측된 집단                ted$Species)                         # 실제 집단
Confusion Matrix and Statistics

            Reference
Prediction   setosa versicolor virginica
  setosa         15          0         0
  versicolor      0         15         0
  virginica       0          0        15

Overall Statistics
                                     
               Accuracy : 1          
                 95% CI : (0.9213, 1)
    No Information Rate : 0.3333     
    P-Value [Acc > NIR] : < 2.2e-16  
                                     
                  Kappa : 1          
                                     
 Mcnemar's Test P-Value : NA         

Statistics by Class:

                     Class: setosa Class: versicolor Class: virginica
Sensitivity                 1.0000            1.0000           1.0000
Specificity                 1.0000            1.0000           1.0000
Pos Pred Value              1.0000            1.0000           1.0000
Neg Pred Value              1.0000            1.0000           1.0000
Prevalence                  0.3333            0.3333           0.3333
Detection Rate              0.3333            0.3333           0.3333
Detection Prevalence        0.3333            0.3333           0.3333
Balanced Accuracy           1.0000            1.0000           1.0000

# 3. 교차타당성에 의한 오분류율 계산
## 정준 판별분석
pacman::p_load("MASS")

iris.lda <- lda(Species ~ ., data = iris,
                CV = TRUE)

Caution! 함수 lda()의 옵션 CV = TRUE을 지정하면 교차타당성에 의한 오분류율을 계산할 수 있다.

## 오분류율 계산
## 함수 table()iris.ctbl <- table(iris$Species,                      # 실제 집단                   iris.lda$class)                    # 예측된 집단iris.ctbl
            
             setosa versicolor virginica
  setosa         50          0         0
  versicolor      0         48         2
  virginica       0          1        49
## 함수 Desc()pacman::p_load("DescTools")

Desc(iris.ctbl,                                      # 도수분포표
     digits = 4)
-------------------------------------------------------------------- 
iris.ctbl (table)

Summary: 
n: 2e+02, rows: 3e+00, columns: 3e+00

Pearson's Chi-squared test:
  X-squared = 282.59, df = 4, p-value < 2.2e-16
Likelihood Ratio:
  X-squared = 302.95, df = 4, p-value < 2.2e-16
Mantel-Haenszel Chi-squared:
  X-squared = 144.6, df = 1, p-value < 2.2e-16

Phi-Coefficient        1.373
Contingency Coeff.     0.808
Cramer's V             0.971

                                                               
                      setosa   versicolor   virginica       Sum
                                                               
setosa       freq      5e+01            0           0     5e+01
             perc   33.3333%      0.0000%     0.0000%  33.3333%
             p.row 100.0000%      0.0000%     0.0000%         .
             p.col 100.0000%      0.0000%     0.0000%         .
                                                               
versicolor   freq          0        5e+01       2e+00     5e+01
             perc    0.0000%     32.0000%     1.3333%  33.3333%
             p.row   0.0000%     96.0000%     4.0000%         .
             p.col   0.0000%     97.9592%     3.9216%         .
                                                               
virginica    freq          0        1e+00       5e+01     5e+01
             perc    0.0000%      0.6667%    32.6667%  33.3333%
             p.row   0.0000%      2.0000%    98.0000%         .
             p.col   0.0000%      2.0408%    96.0784%         .
                                                               
Sum          freq      5e+01        5e+01       5e+01     2e+02
             perc   33.3333%     32.6667%    34.0000% 100.0000%
             p.row         .            .           .         .
             p.col         .            .           .         .
                                                               
## 함수 confusionMatrix()pacman::p_load("caret")

confusionMatrix(iris.lda$class,                       # 예측된 집단                iris$Species)                         # 실제 집단
Confusion Matrix and Statistics

            Reference
Prediction   setosa versicolor virginica
  setosa         50          0         0
  versicolor      0         48         1
  virginica       0          2        49

Overall Statistics
                                          
               Accuracy : 0.98            
                 95% CI : (0.9427, 0.9959)
    No Information Rate : 0.3333          
    P-Value [Acc > NIR] : < 2.2e-16       
                                          
                  Kappa : 0.97            
                                          
 Mcnemar's Test P-Value : NA              

Statistics by Class:

                     Class: setosa Class: versicolor Class: virginica
Sensitivity                 1.0000            0.9600           0.9800
Specificity                 1.0000            0.9900           0.9800
Pos Pred Value              1.0000            0.9796           0.9608
Neg Pred Value              1.0000            0.9802           0.9899
Prevalence                  0.3333            0.3333           0.3333
Detection Rate              0.3333            0.3200           0.3267
Detection Prevalence        0.3333            0.3267           0.3400
Balanced Accuracy           1.0000            0.9750           0.9800

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 ...".