#title 행렬의 분해 [[TableOfContents]] ==== 스펙트럴 분해(spectral decomposition) ==== 주성분 분석의 자료축약 또는 차원 축약의 목적으로 사용된다. * $values 공분산행렬의 특성치 * $vectors 특성벡터 행렬 {{{ > cost.d <-read.table("cost.d", header=T) > a <- eigen(var(cost.d)) > a $values [1] 34.310148 13.210205 7.000452 $vectors [,1] [,2] [,3] [1,] 0.7432852 -0.38596102 0.5464075 [2,] 0.6198618 0.09017059 -0.7795130 [3,] 0.2515918 0.91809768 0.3062650 > }}} 다음은 [주성분분석]한 결과이다. {{{ > p <- prcomp(na.exclude(cost.d), scale=FALSE) > p Standard deviations: [1] 5.857487 3.634585 2.645837 Rotation: PC1 PC2 PC3 fuel -0.7432852 0.38596102 -0.5464075 repair -0.6198618 -0.09017059 0.7795130 capital -0.2515918 -0.91809768 -0.3062650 > summary(p) Importance of components: PC1 PC2 PC3 Standard deviation 5.857 3.635 2.646 --> 표준편차 Proportion of Variance 0.629 0.242 0.128 --> 기여율 Cumulative Proportion 0.629 0.872 1.000 --> 누적기여율 > }}} ==== 비정칙치분해(singular value decomposition) ==== [정준상관분석], 행렬도(biplot)등에서 많이 쓰인다. {{{ > svd(cost.d) $d [1] 110.32576 22.84343 16.41742 $u [,1] [,2] [,3] [1,] -0.21215522 0.0557455210 0.0725904757 [2,] -0.07619639 0.0370332907 -0.1049516978 [3,] -0.11574898 -0.1296149503 -0.2949589350 [4,] -0.08932679 -0.1431146096 0.1234046163 [5,] -0.14429006 -0.1031125634 -0.1470916023 [6,] -0.16302051 -0.0006433233 -0.1984222467 [7,] -0.18418323 0.0017336700 0.0915719044 [8,] -0.19172148 0.0688678809 0.2756749095 [9,] -0.26590080 0.6501805280 -0.1318042864 [10,] -0.16263552 -0.0320523374 -0.0566200519 [11,] -0.11187080 -0.0840168906 0.0213498245 [12,] -0.12248962 -0.0873105804 -0.1716797465 [13,] -0.13593625 -0.1053789574 -0.1136849473 [14,] -0.13375240 0.0172668362 -0.0684177005 [15,] -0.20813275 -0.1385088088 0.2807563704 [16,] -0.10553498 0.0231003004 -0.2180119006 [17,] -0.14920051 -0.1709554639 -0.0723412842 [18,] -0.12690229 -0.2320596468 -0.2074527082 [19,] -0.16796813 -0.0919029542 -0.0486415090 [20,] -0.17239678 -0.1332897290 0.3956716562 [21,] -0.32277302 0.1043890831 -0.0005510683 [22,] -0.15240260 0.0917636909 -0.0136353114 [23,] -0.24991933 -0.1596454855 0.0679756164 [24,] -0.21008575 -0.1203127239 0.0199879122 [25,] -0.16962065 -0.3547313171 -0.1525053416 [26,] -0.09693646 0.0794405351 -0.0689330444 [27,] -0.14454429 0.0625152432 0.2635558982 [28,] -0.14497868 0.1487047602 0.0234333724 [29,] -0.09958599 -0.0022836128 -0.2181248591 [30,] -0.11888776 0.0022965253 0.1200896118 [31,] -0.15912291 0.2178887605 0.1323627644 [32,] -0.13400657 -0.0347721187 0.2107091410 [33,] -0.21290915 -0.0332402427 0.0267472202 [34,] -0.14362342 -0.0679547768 0.1378210132 [35,] -0.15695219 -0.1248936937 -0.2144344826 [36,] -0.16102451 0.2766651395 -0.2039635092 $v [,1] [,2] [,3] [1,] -0.7008955 0.5017183 -0.50697566 [2,] -0.4766155 0.1993547 0.85620987 [3,] -0.5306441 -0.8417461 -0.09939989 > }}} ==== 콜레스키분해(cholesky decomposition) ==== 회귀선 추정에 이용된다. '''이 부분은 도대체 뭐라는지 모르겠다 ㅡㅡ;;''' {{{ > At <- chol(var(cost.d)) > At fuel repair capital fuel 4.797224 2.577823 0.6058939 repair 0.000000 3.301354 0.9726902 capital 0.000000 0.000000 3.5566980 > t(At)%*%At #공분산행렬 fuel repair capital fuel 23.013361 12.366395 2.906609 repair 12.366395 17.544111 4.773082 capital 2.906609 4.773082 13.963334 }}} ==== 산포 ==== 평균으로부터의 자료의 퍼짐의 정도를 측정하는 척도 {{{ > S <- var(cost.d) > prod(eigen(S)$values) #일반화된 분산 [1] 3172.914 > sum(diag(S)) #전체변이 [1] 54.52081 > }}} 이상치를 제거해보면..([공분산과 상관계수] 참고) {{{ > S <- var(cost.d[-c(9,21), ]) #9, 21번째 자료 제외, 이상치이므로.., 콤마(,)주의!! > prod(eigen(S)$values) #일반화된 분산 [1] 1052.025 > sum(diag(S)) #전체변이 [1] 35.27106 > }}} ==== 거리 ==== 두 점 사이의 거리를 정의하는 방법으로, 이상치 제거에 주로 사용된다. * 유클리디안 거리(Euclidean distance) : 모든 변수가 동일한 단위로 측정되고, 독립일 경우 사용한다. * 표본 마하라노비스 거리(mahalanobis distance): 모든 자료에 입각한 표본공분산행렬을 이용하여 사용 {{{ > mah <- mahalanobis(cost.d, mean(cost.d), var(cost.d)) > sort(mah) [1] 0.1118357 0.3881699 0.4038355 0.4943593 0.5103162 0.6876501 0.9259149 1.0222128 1.0360761 1.0909704 1.1795764 [12] 1.2436025 1.2828406 1.3408737 1.3693061 1.7448672 1.8811388 2.0838168 2.2881410 2.2910694 2.3969789 2.4234025 [23] 3.0191470 3.0324225 3.1860502 3.1916645 3.2669984 3.3742718 3.5981017 4.2023630 4.2800402 5.0913270 5.8390193 [34] 6.3492220 10.7295757 17.6428421 > }}} 10.7295757과 17.6428421의 거리가 크므로 이상치 자료일 가능성이 매우 높다.