주성분 분석 :: 통계 - mindscale
Skip to content

주성분 분석

차원 축소

복잡한 데이터의 패턴을 파악하고 시각화하는 차원축소를 알아봅니다. 수많은 변수로 이루어진 복잡한 데이터에서 공통의 요인을 찾아내고 패턴이 잘 드러나도록 시각화하는 방법을 배웁니다.

변수

  • 데이터를 이루는 여러 건의 자료들 속 달라지는 정보들
  • 사람: 이름, 키, 나이, 전화번호 등
  • 스마트폰: CPU, 화면 크기 운영체제, 제조사 등
  • 자동차: 모델, 연료, 크기, 엔진 등

차원

  • 위치를 나타내는데 필요한 숫자의 개수
  • 3차원: 가로, 세로, 높이

변수와 차원

  • 변수와 차원은 비슷한 개념으로 생각할 수 있음
이름 면적 인구
한국 100,210 50,617,045
일본 377,944 126,989,659
필리핀 300,000 102,370,400
- 변수: 면적, 인구
  • 면적과 인구를 하나의 차원으로 나타내 2차원 상에 표현

변수가 많을 때 생기는 문제들

  • 컴퓨터: 처리해야 할 데이터가 많아지면 메모리가 많이 필요하고 시간도 오래 걸림
  • 시각화: 변수가 많아지면 그래프로 표현하기 어려움
  • 분석: 쓸모없는 변수들도 포함되어 결과가 잘못 나올 수도 있음
  • 데이터: 변수가 많아질수록 필요한 데이터가 많아짐
  • 해석: 변수가 많아지면 해석하기가 어려움

해결책

  • 변수 선택: 중요한 변수만 사용
  • 변수 추출: 새로운 변수를 생성
이름 면적($km^2$) 면적($mi^2$)
한국 100,210 38,691
일본 377,944 145,925
필리핀 300,000 115,831
  • 대부분의 데이터에는 중복 정보들이 존재함
  • 한국, 필리핀, 일본이 한 직선에 표현됨
  • 변수가 두 가지이지만 사실은 하나의 변수만 있어도 면적을 표현할 수 있음
  • 하나의 선으로 표현되진 않지만 대략적으로 경향성을 보임
  • 약간의 정보 손실은 감수하고 이런 식으로 데이터를 변경할 수 있음
  • 점선만큼 왜곡이 생김
  • 변수가 두 개에서 하나로 줄어듦
  • 정보를 잃는 대신 변수를 줄임

변수를 줄여도 괜찮을까?

  • 차원을 축소하면서 데이터가 일부 사라짐
  • 그러나 대부분의 정보는 존재
  • 남은 것은 여러 변수에 공통적인 정보를 갖고 있음
  • 점들이 옮겨지면서 그만큼의 오차가 생기지만 증가하는 패턴은 여전히 그대로 존재함
  • 모든 변수에는 오차와 잡음이 섞여 있음
  • 오차는 각 변수에 들어가는 독특한 것이기 때문에 공통 정보만 추출하면 오차와 잡음도 사라짐
  • 정보가 줄어서 더 좋은 정보가 될 수 있음

변수가 줄어서 해결되는 문제들

  • 컴퓨터
  • 시각화
  • 분석
  • 데이터
  • 해석(?): 해석이 쉬워지기도 하지만 어려워지는 경우도 있음
  • 해석이 쉬워지는 경우: 고객 만족도 조사
    • 별점: 고객마다 별점 주는 기준이 다를 수 있고 무성의한 응답을 하는 경우도 있음
    • 재방문: 재구매를 위한 방문일 수도 있으나 이전에 샀던 재품을 반품이나 교환하러 왔을 수도 있음
    • 이러한 부정확한 변수들을 합쳐 하나의 변수로 만들면 더 정확해져 해석이 더 쉬워짐
  • 해석이 어려워지는 경우: 반대로 서로 상관 없는 것들을 합쳐 놓으면 정보는 많이 보존되어 있지만 정보의 의미가 무엇인지 해석하기 어려움

차원 축소의 방법들

  • 주성분분석(PCA)
  • 요인분석(FA): 연구방법론으로 많이 쓰임
  • 독립성분분석(ICA): 특수한 분야에서만 사용
  • 다차원 척도법(MDS)
  • 비선형 차원축소법들

차원 축소와 관련 있는 방법들

  • 인공신경망 / 딥러닝
  • 다변량 분석법 / 구조방정식 모형

설치 및 데이터

필요 패키지

아래 명령을 R에 입력하여 패키지들을 설치합니다

install.packages(c('rgl', 'lle', 'tsne', 'vegan'))

비선형 차원 축소를 위한 실습 데이터

차원 축소의 방법들

  • 주성분분석(PCA)
  • 요인분석(FA)
  • 독립성분분석(ICA)
  • 다차원 척도법(MDS)
  • 비선형 차원축소법들

주성분분석(PCA)

  • 데이터의 경향성을 잘 설명하는 선을 찾아 이 선을 새로운 차원으로 선택하는 게 주성분분석의 기본 원리

다차원 척도법(MDS)

  • 차원을 줄이는 것이 아니라 만드는 것
  • 예) 제품의 유사성을 만족될 수 있는 공간을 찾는 것
  • A사, S사, L사의 휴대폰 중 A사의 휴대폰과 S사의 휴대폰이 비슷하다면 2차원 또는 3차원에서 가까이 붙어 있을 것이고 L사 폰과는 멀리 떨어져 있을 것임
  • 이런 식으로 좌표를 찾아내는 것

독립성분분석(Independennt Component Analysis)

  • 원: 마이크
  • 사각형: 사람
  • 1번 사람이 하는 말도 두 마이크에 다 들어갈 것이고 2번 사람이 하는 말도 두 마이크에 다 들어갈 것이며 3번 사람이 하는 말도 두 마이크에 다 들어갈 것임
  • 즉 1번 마이크에도 세 사람의 말이 들어가고 2번 마이크에도 세 사람의 말이 들어감
  • 오디오가 물리게 됨
  • 독립성분분석에서는 한 마이크가 한 사람의 목소리만 잡도록 수학적, 통계적 방식을 이용해 변환을 함
  • 사회 과학 데이터 분석에서는 많이 쓰이진 않음
  • 신호 탐지를 하는 분야에서 사용

비선형 차원 축소

  • 비선형적인 구부러진 공간을 찾는 것
  • 점들을 하나로 연결한 뒤 직선으로 펼치면 하나의 차원에 어떤 정보의 손실 없이 전부 들어가게 됨
  • 일반적으로 통계를 할 때 많이 사용되지 않음
  • 관계 파악하기 어려워 이해하기 어려움
  • 시각화를 할 때 사용

주성분 분석 (PCA)

Principal Component Analysis

사용되는 용도

  • 지표 만들기: 수치가 여러 가지가 있을 때 수치들을 종합해 하나의 수치로 만드는 것
  • 시각화: 대개 2차원으로 줄여 데이터를 보여줌
  • 분석: 주성분분석을 한 뒤 데이터 분석을 하거나 데이터 분석에 주성분분석을 결합하기도 함

원리

  • 점들이 우상향으로 퍼져 있음
  • 즉, 분산이 우상향에서 가장 큼
  • 분산이 초록색 화살표에서 가장 크게 존재
  • 그 다음으로 분산이 파란색 화살표에서 크게 존재
  • 이 두선을 새로운 축으로 잡을 수 있음
  • 회전을 시키면 초록색 화살표가 가로축, 파란색 화살표가 세로축이 됨
  • 각 축이 설명하는 분산들을 합치면 전체 분산이 됨
  • 초록색 화살표: 성분 1에 의해 설명되는 분산
  • 파란색 화살표: 성분 2에 의해 설명되는 분산
  • 파란색 차원을 포기하면 파란색 방향으로 흩어진 것들은 다 없어지게 됨
  • 즉, 가로 방향으로 흩어진 정도는 그대로지만 세로 방향으로 흩어진 정도는 없어짐

정리: 데이터 안의 분산의 방향을 큰 순서대로 찾아내 분산이 큰 성분을 선택

PCA 실습

USArrests내장 데이터 사용

head(USArrests)
MurderAssaultUrbanPopRape
Alabama13.2236 58 21.2
Alaska10.0263 48 44.5
Arizona 8.1294 80 31.0
Arkansas 8.8190 50 19.5
California 9.0276 91 40.6
Colorado 7.9204 78 38.7
  • 미국 50개 주의 Murder(살인), Assault(폭력), Rape(성폭력) 범죄의 인구 10만명당 체포 건수와 도시에 사는 인구의 비율

분산 구하기

var(USArrests)
MurderAssaultUrbanPopRape
Murder 18.970465 291.0624 4.386204 22.99141
Assault291.0623676945.1657 312.275102519.26906
UrbanPop 4.386204 312.2751 209.518776 55.76808
Rape 22.991412 519.2691 55.768082 87.72916
  • 우하향 대각선이 분산
  • 나머지는 공분산
  • Assault의 분산이 큼

분산만 구하기

diag(var(USArrests))
Murder
18.9704653061224
Assault
6945.16571428571
UrbanPop
209.518775510204
Rape
87.7291591836735
  • 대각선 값만 나옴

분산 합 구하기

sum(diag(var(USArrests)))

7261.38411428571

주성분분석 실행

arrest.pca = prcomp(USArrests)
arrest.pca
Standard deviations (1, .., p=4):
[1] 83.732400 14.212402  6.489426  2.482790

Rotation (n x k) = (4 x 4):
                PC1         PC2         PC3         PC4
Murder   0.04170432 -0.04482166  0.07989066 -0.99492173
Assault  0.99522128 -0.05876003 -0.06756974  0.03893830
UrbanPop 0.04633575  0.97685748 -0.20054629 -0.05816914
Rape     0.07515550  0.20071807  0.97408059  0.07232502
  • Standard deviations: 표준 편차
  • 네 개의 변수로 네 개의 새로운 변수를 만듦
  • PC1의 표준 편차는 83이므로 분산은 6889이므로 원래 분산인 7261에서 6889만큼 설명
  • Rotation
  • 각 데이터에 Rotation PC1 밑에 있는 숫자를 곱한 뒤 다 더해서 PC1을 만듦

주성분분석 요약

summary(arrest.pca)
Importance of components:
                           PC1      PC2    PC3     PC4
Standard deviation     83.7324 14.21240 6.4894 2.48279
Proportion of Variance  0.9655  0.02782 0.0058 0.00085
Cumulative Proportion   0.9655  0.99335 0.9991 1.00000
  • Proportion of Variance: 원래 분산 중에 몇 퍼센트를 차지하는지
  • Cumulative Proportion: 위의 값의 합계를 낸 것
  • 첫 번째 차원이 대부분을 설명하고 있음
  • 두 가지 차원만 가지고도 99.33%를 보존하여 설명할 수 있음

각 차원마다 어떤 값을 가지는지 확인

#max_print_lines
arrest.pca$x
PC1PC2PC3PC4
Alabama 64.802164 -11.4480074 -2.49493284-2.4079009
Alaska 92.827450 -17.9829427 20.12657487 4.0940470
Arizona 124.068216 8.8304030 -1.68744836 4.3536852
Arkansas 18.340035 -16.7039114 0.21018936 0.5209936
California 107.422953 22.5200698 6.74587299 2.8118259
Colorado 34.975986 13.7195840 12.27936280 1.7214637
Connecticut -60.887282 12.9325302 -8.42065719 0.6999023
Delaware 66.731025 1.3537978 -11.28095735 3.7279812
Florida 165.244370 6.2746901 -2.99793315-1.2476807
Georgia 40.535177 -7.2902396 3.60952946-7.3436728
Hawaii-123.536106 24.2912079 3.72444284-3.4728494
Idaho -51.797002 -9.4691910 -1.52006356 3.3478283
Illinois 78.992097 12.8970605 -5.88326477-0.3676407
Indiana -57.550961 2.8462647 3.73816049-1.6494302
Iowa-115.586790 -3.3421305 -0.65402935 0.8694960
Kansas -55.789694 3.1572339 0.38436416-0.6527917
Kentucky -62.383181 -10.6732715 2.23708903-3.8762164
Louisiana 78.277631 -4.2949175 -3.82786965-4.4835590
Maine -89.261044 -11.4878272 -4.69240562 2.1161995
Maryland 129.330136 -5.0070315 -2.34717282 1.9283242
Massachusetts -21.266283 19.4501790 -7.50714835 1.0348189
Michigan 85.451527 5.9045567 6.46434210-0.4990479
Minnesota -98.954816 5.2096006 0.00657376 0.7318957
Mississippi 86.856358 -27.4284196 -5.00343624-3.8797577
Missouri 7.986289 5.2756414 5.50057972-0.6794055
Montana -62.483635 -9.5105021 1.83835536-0.2459426
Nebraska -69.096544 -0.2111959 0.46802086 0.6565664
Nevada 83.613578 15.1021839 15.88869482-0.3341962
New Hampshire-114.777355 -4.7345584 -2.28238693 0.9359106
New Jersey -10.815725 23.1373389 -6.31015739-1.6124273
New Mexico 114.868163 -0.3364531 2.26126996 1.3812478
New York 84.294231 15.9239655 -4.72125960-0.8920194
North Carolina 164.325514 -31.0966153 -11.69616350 2.1111927
North Dakota-127.495597 -16.1350394 -1.31182982 2.3009639
Ohio -50.086822 12.2793244 1.65733077-2.0291157
Oklahoma -19.693723 3.3701310 -0.45314329 0.1803457
Oregon -11.150240 3.8660682 8.12998050 2.9140109
Pennsylvania -64.689142 8.9115466 -3.20646858-1.8749353
Rhode Island 3.063973 18.3739704 -17.47001970 2.3082597
South Carolina 107.281069 -23.5361159 -2.03279501-1.2517463
South Dakota -86.106720 -16.5978586 1.31437998 1.2522874
Tennessee 17.506264 -6.5065756 6.10012753-3.9228558
Texas 31.291122 12.9849566 -0.39340922-4.2420040
Utah -49.913397 17.6484577 1.78816852 1.8677052
Vermont-124.714469 -27.3135591 4.80277765 2.0049857
Virginia -14.817448 -1.7526150 1.04538813-1.1738408
Washington -25.075839 9.9679669 4.78112764 2.6910819
West Virginia -91.544647 -22.9528778 -0.40198344-0.7368781
Wisconsin-118.176328 5.5075792 -2.71132077-0.2049724
Wyoming -10.434539 -5.9244529 -3.79444682 0.5178674
  • 새로운 변수 값들을 가지게 됨

시각화

biplot(arrest.pca)
  • 각 주들의 위치를 표현해 줌
  • x축이 PC1, y축이 PC2이며 0이 평균
  • 4차원을 2차원으로 줄이면서 원래 변수들이 납작하게 표현됨
  • Assault 축은 길게 남아 있고 나머지 축은 납작함
  • Assault는 단위가 크고 분산이 크기 때문에 차원을 줄였음에도 불구하고 차지하는 비중이 많이 줄어들지 않음
  • 즉, Assault와 PC1이 거의 비슷함
  • 새로 차원을 뽑았는데 전의 변수와 비슷하다면 차원을 잘 줄였다고 할 수 없음
  • 해결하는 방법은 다음 강의에서 설명

표준화와 PCA

  • 목표: 첫 번째 차원이 Assault를 너무 많이 반영하여 표준화를 진행 한 뒤 다시 PCA

표준화

  • 데이터에서 평균을 빼주고 표준 편차로 나누어 평균이 0이고 표준 편차가 1이 되도록 만들어주는 것
  • 수능에서 원점수와 상관 없이 평균에 비해 얼마나 큰지 작은지를 나타내 등급을 정할 때 사용

데이터 확인

#max_print_lines
USArrests
MurderAssaultUrbanPopRape
Alabama13.2236 58 21.2
Alaska10.0263 48 44.5
Arizona 8.1294 80 31.0
Arkansas 8.8190 50 19.5
California 9.0276 91 40.6
Colorado 7.9204 78 38.7
Connecticut 3.3110 77 11.1
Delaware 5.9238 72 15.8
Florida15.4335 80 31.9
Georgia17.4211 60 25.8
Hawaii 5.3 46 83 20.2
Idaho 2.6120 54 14.2
Illinois10.4249 83 24.0
Indiana 7.2113 65 21.0
Iowa 2.2 56 57 11.3
Kansas 6.0115 66 18.0
Kentucky 9.7109 52 16.3
Louisiana15.4249 66 22.2
Maine 2.1 83 51 7.8
Maryland11.3300 67 27.8
Massachusetts 4.4149 85 16.3
Michigan12.1255 74 35.1
Minnesota 2.7 72 66 14.9
Mississippi16.1259 44 17.1
Missouri 9.0178 70 28.2
Montana 6.0109 53 16.4
Nebraska 4.3102 62 16.5
Nevada12.2252 81 46.0
New Hampshire 2.1 57 56 9.5
New Jersey 7.4159 89 18.8
New Mexico11.4285 70 32.1
New York11.1254 86 26.1
North Carolina13.0337 45 16.1
North Dakota 0.8 45 44 7.3
Ohio 7.3120 75 21.4
Oklahoma 6.6151 68 20.0
Oregon 4.9159 67 29.3
Pennsylvania 6.3106 72 14.9
Rhode Island 3.4174 87 8.3
South Carolina14.4279 48 22.5
South Dakota 3.8 86 45 12.8
Tennessee13.2188 59 26.9
Texas12.7201 80 25.5
Utah 3.2120 80 22.9
Vermont 2.2 48 32 11.2
Virginia 8.5156 63 20.7
Washington 4.0145 73 26.2
West Virginia 5.7 81 39 9.3
Wisconsin 2.6 53 66 10.8
Wyoming 6.8161 60 15.6
  • 변수마다 단위가 다름
  • Assault가 단위가 커 많이 반영하게 됨

표준화하기

#max_print_lines
scale(USArrests)
MurderAssaultUrbanPopRape
Alabama 1.24256408 0.78283935 -0.52090661 -0.003416473
Alaska 0.50786248 1.10682252 -1.21176419 2.484202941
Arizona 0.07163341 1.47880321 0.99898006 1.042878388
Arkansas 0.23234938 0.23086801 -1.07359268 -0.184916602
California 0.27826823 1.26281442 1.75892340 2.067820292
Colorado 0.02571456 0.39885929 0.86080854 1.864967207
Connecticut-1.03041900 -0.72908214 0.79172279 -1.081740768
Delaware-0.43347395 0.80683810 0.44629400 -0.579946294
Florida 1.74767144 1.97077766 0.99898006 1.138966691
Georgia 2.20685994 0.48285493 -0.38273510 0.487701523
Hawaii-0.57123050 -1.49704226 1.20623733 -0.110181255
Idaho-1.19113497 -0.60908837 -0.79724965 -0.750769945
Illinois 0.59970018 0.93883125 1.20623733 0.295524916
Indiana-0.13500142 -0.69308401 -0.03730631 -0.024769429
Iowa-1.28297267 -1.37704849 -0.58999237 -1.060387812
Kansas-0.41051452 -0.66908525 0.03177945 -0.345063775
Kentucky 0.43898421 -0.74108152 -0.93542116 -0.526563903
Louisiana 1.74767144 0.93883125 0.03177945 0.103348309
Maine-1.30593210 -1.05306531 -1.00450692 -1.434064548
Maryland 0.80633501 1.55079947 0.10086521 0.701231086
Massachusetts-0.77786532 -0.26110644 1.34440885 -0.526563903
Michigan 0.99001041 1.01082751 0.58446551 1.480613993
Minnesota-1.16817555 -1.18505846 0.03177945 -0.676034598
Mississippi 1.90838741 1.05882502 -1.48810723 -0.441152078
Missouri 0.27826823 0.08687549 0.30812248 0.743936999
Montana-0.41051452 -0.74108152 -0.86633540 -0.515887425
Nebraska-0.80082475 -0.82507715 -0.24456358 -0.505210947
Nevada 1.01296983 0.97482938 1.06806582 2.644350114
New Hampshire-1.30593210 -1.36504911 -0.65907813 -1.252564419
New Jersey-0.08908257 -0.14111267 1.62075188 -0.259651949
New Mexico 0.82929443 1.37080881 0.30812248 1.160319648
New York 0.76041616 0.99882813 1.41349461 0.519730957
North Carolina 1.19664523 1.99477641 -1.41902147 -0.547916860
North Dakota-1.60440462 -1.50904164 -1.48810723 -1.487446939
Ohio-0.11204199 -0.60908837 0.65355127 0.017936483
Oklahoma-0.27275797 -0.23710769 0.16995096 -0.131534211
Oregon-0.66306820 -0.14111267 0.10086521 0.861378259
Pennsylvania-0.34163624 -0.77707965 0.44629400 -0.676034598
Rhode Island-1.00745957 0.03887798 1.48258036 -1.380682157
South Carolina 1.51807718 1.29881255 -1.21176419 0.135377743
South Dakota-0.91562187 -1.01706718 -1.41902147 -0.900240639
Tennessee 1.24256408 0.20686926 -0.45182086 0.605142783
Texas 1.12776696 0.36286116 0.99898006 0.455672088
Utah-1.05337842 -0.60908837 0.99898006 0.178083656
Vermont-1.28297267 -1.47304350 -2.31713632 -1.071064290
Virginia 0.16347111 -0.17711080 -0.17547783 -0.056798864
Washington-0.86970302 -0.30910395 0.51537975 0.530407436
West Virginia-0.47939280 -1.07706407 -1.83353601 -1.273917376
Wisconsin-1.19113497 -1.41304662 0.03177945 -1.113770203
Wyoming-0.22683912 -0.11711392 -0.38273510 -0.601299251
  • 평균 0, 표준 편차 1

표준화하여 주성분분석하기

arrest.pca = prcomp(USArrests, scale. = T)
summary(arrest.pca)
Importance of components:
                          PC1    PC2     PC3     PC4
Standard deviation     1.5749 0.9949 0.59713 0.41645
Proportion of Variance 0.6201 0.2474 0.08914 0.04336
Cumulative Proportion  0.6201 0.8675 0.95664 1.00000
  • 첫 번째 차원에 극단적으로 몰리지 않음
  • 하나의 차원으로 62%를 설명하는 것도 많이 설명한다고 볼 수 있음
  • 두 개의 차원으로 86%를 설명

시각화

biplot(arrest.pca)
  • 네 개의 변수가 비슷하게 반영되었음
  • 각 축의 바깥으로 갈수록 그 변수의 값이 커지는 지역임
  • 좌측 하단: 범죄도 많고 도시 인구도 많은 지역
  • 좌측 상단: 범죄는 많고 도시 인구는 적은 지역
  • 우측 상단: 범죄도 적고 도시 인구도 적은 지역
  • 우측 하단: 범죄는 적고 도시 인구는 많은 지역

시뮬레이션으로 PCA의 특성 알아보기

시뮬레이션1

공통 부분 만들기

#hide
set.seed(1234)
common = rnorm(100)
  • 100개의 난수 생성

noise 만들기

noise1 = rnorm(100)
noise2 = rnorm(100)

common과 noise의 패턴 확인하기

plot(common, noise1)
plot(common, noise2)
  • 별다른 패턴이 존재하지 않음

noise간의 패턴 확인하기

plot(noise1, noise2)
  • 별다른 패턴이 존재하지 않음

x와 y 만들기

x = common + noise1
y = common + noise2

x와 y의 그래프 그리기

plot(x, y)
  • 많이 퍼져 있긴 하지만 x가 증가할수록 y가 증가하는 패턴을 보임
  • 주성분 분석을 하면 우상향 축이 가장 많은 분산을 설명할 것이고 우하향 축이 그 다음으로 많은 분산을 설명할 것임
  • 우상향 축은 common을 많이 포함하고 있음

데이터 합치기

m = cbind(x, y)

주성분분석

p = prcomp(m)
summary(p)
Importance of components:
                          PC1    PC2
Standard deviation     1.7914 0.9493
Proportion of Variance 0.7807 0.2193
Cumulative Proportion  0.7807 1.0000
  • 첫 번째 차원이 71%를 차지하고 common에 해당함
  • 두 번째 차원이 29%를 차지함

그래프 그리기

biplot(p)
  • x와 y가 약간 벌어져 있지만 비슷한 방향(PC1의 - 방향)을 가리킴

PC1의 값 확인하기

p$x[,1]
  1. -0.987952770301215
  2. 0.643350026054367
  3. 1.7945584388685
  4. -3.0824199336421
  5. 0.336874627689796
  6. 1.45945811825666
  7. -0.0336067721634608
  8. 0.224135900672707
  9. -0.445368926811501
  10. -2.01221627114992
  11. -0.429398886786651
  12. -2.06908564978431
  13. -0.717636270011832
  14. -0.387791428353817
  15. 1.15619473795156
  16. 0.807910156854894
  17. -1.61639416083148
  18. -1.52345988368477
  19. -0.851299846835085
  20. 3.93143491172796
  21. 0.780384182269092
  22. -0.683078178312719
  23. 2.52389724061966
  24. 2.09659494905968
  25. 0.57851409969789
  26. -2.38327647693971
  27. 2.548684937755
  28. -1.9340042035421
  29. -0.873441953185373
  30. -0.950002845580414
  31. 2.11439497674614
  32. -0.611410881130266
  33. -2.40733316217756
  34. -0.0770147339598183
  35. -3.14243212820329
  36. -2.5968741927619
  37. -5.54003669998595
  38. -3.35452793493294
  39. 0.328138047292457
  40. -0.584510491442726
  41. 1.94138763977957
  42. -0.160456000058598
  43. -1.47129677685181
  44. 0.119782552220927
  45. -0.450394698044474
  46. -0.828793172486977
  47. 0.648416466959533
  48. -1.20599416334206
  49. -0.116303084299769
  50. -0.186108128615817
  51. -2.4212538704964
  52. 0.0873765762953723
  53. -0.0198099669164251
  54. -1.48757516167773
  55. -0.877741805950571
  56. 1.56158829926791
  57. 3.30808957550692
  58. -2.62339687049072
  59. 1.93196081717296
  60. -1.53650728590465
  61. 1.12001122948218
  62. 3.254625271885
  63. -0.142093888129477
  64. -2.25716985871218
  65. 0.597783606011817
  66. 2.55206557266405
  67. -0.529865055947966
  68. 1.11640406189807
  69. 2.01468371614543
  70. 2.06092748362542
  71. 1.06083213517552
  72. 0.777162203572375
  73. -0.187055901780468
  74. 0.40950268345089
  75. 5.46288186615487
  76. -1.18552092006904
  77. -2.08750620374277
  78. 1.88734045480356
  79. 0.606569548134926
  80. -0.16062552174808
  81. -2.7988869287955
  82. 0.109368623313774
  83. -1.681202192658
  84. 0.708310837324387
  85. 1.33798208890089
  86. 2.6798256449948
  87. 1.06718297811381
  88. -1.01821005633235
  89. -0.812072308085937
  90. -1.65322950514429
  91. 0.338796608899469
  92. -1.41549014551427
  93. 0.677282370989456
  94. 1.39304289597263
  95. 2.07974775042958
  96. 2.23183102487102
  97. -1.93305777357574
  98. 0.38782347572461
  99. 1.82479117995123
  100. 1.86228933667364

common과 PC1 그래프 그리기

plot(common, p$x[,1])
  • 오차가 있긴 하지만 뚜렷한 직선 경향성을 볼 수 있음
  • 그 이유는 공통 요소(common)을 많이 반영하고 있기 때문
  • 데이터의 공통 요소와 첫 번째 축(차원)은 밀접한 관련이 있음

시뮬레이션 2

위와 비슷하지만 noise의 비중을 줄임

x = common + 0.5 * noise1
y = common + 0.5 * noise2

x와 y의 그래프 그리기

plot(x, y)
  • 직선 경향이 전보다 훨씬 뚜렷해짐

데이터 합치기

m = cbind(x, y)

주성분분석

p = prcomp(m)
summary(p)
Importance of components:
                          PC1     PC2
Standard deviation     1.5304 0.47418
Proportion of Variance 0.9124 0.08759
Cumulative Proportion  0.9124 1.00000
  • noise가 줄어 common이 차지하는 비율이 증가해 첫 번째 차원이 설명하는 비율이 증가함

그래프 그리기

biplot(p)
  • x와 y의 방향성이 PC1 방향으로 좁아짐

common과 PC1 그래프 그리기

plot(common, p$x[,1])
  • common이 증가하면 PC1이 감소하고 common이 감소하면 PC1이 증가함
  • 컴퓨터가 찾는 것이기 때문에 방향성은 틀릴 수 있음

보기 쉽게 common과 PC1 그래프 그리기

plot(common, -p$x[,1])
  • 노이즈가 섞여 있는 데이터로 주성분분석을 하면 공통 요소를 찾아줌

시뮬레이션3

위와 비슷하지만 noise의 비중을 늘림

x = common + 2 * noise1
y = common + 2 * noise2

x와 y의 그래프 그리기

plot(x, y)
  • 증가하는 패턴을 찾기가 어려움

데이터 합치기

m = cbind(x, y)

주성분분석

p = prcomp(m)
summary(p)
Importance of components:
                          PC1    PC2
Standard deviation     2.5637 1.8986
Proportion of Variance 0.6458 0.3542
Cumulative Proportion  0.6458 1.0000
  • 첫 번째 차원과 두 번째 차원의 설명 비율이 거의 비슷함

그래프 그리기

biplot(p)
  • x가 y가 거의 관련이 없어 직각을 이루고 있음

common과 PC1 그래프 그리기

plot(common, -p$x[,1])
  • 공통 요소를 완벽하게 뽑아내진 못하지만 경향성이 보이긴 함
  • PC1이 common을 반영하고 있기 때문

정리

  • 두 데이터 간 공통 요소가 크면 클수록 분산이 첫 번째 차원에서 많이 설명함
  • 따라서 PC1이 공통 요소와 밀접한 관계를 가짐

PCA를 활용한 시험 점수 분석

패키지 설치하기 - 오른쪽 하단 Packages 탭에서 psych 다운

시뮬레이션으로 예제 데이터 만들기

library(psych)
#max_print_lines
Harman74.cor
$cov
VisualPerceptionCubesPaperFormBoardFlagsGeneralInformationPargraphComprehensionSentenceCompletionWordClassificationWordMeaningAddition...NumberRecognitionFigureRecognitionObjectNumberNumberFigureFigureWordDeductionNumericalPuzzlesProblemReasoningSeriesCompletionArithmeticProblems
VisualPerception1.000 0.318 0.4030.468 0.321 0.335 0.304 0.332 0.326 0.116... 0.238 0.414 0.176 0.368 0.270 0.365 0.369 0.413 0.474 0.282
Cubes0.318 1.000 0.3170.230 0.285 0.234 0.157 0.157 0.195 0.057... 0.131 0.272 0.005 0.255 0.112 0.292 0.306 0.232 0.348 0.211
PaperFormBoard0.403 0.317 1.0000.305 0.247 0.268 0.223 0.382 0.184 -0.075... 0.065 0.263 0.177 0.211 0.312 0.297 0.165 0.250 0.383 0.203
Flags0.468 0.230 0.3051.000 0.227 0.327 0.335 0.391 0.325 0.099... 0.127 0.322 0.187 0.251 0.137 0.339 0.349 0.380 0.335 0.248
GeneralInformation0.321 0.285 0.2470.227 1.000 0.622 0.656 0.578 0.723 0.311... 0.229 0.187 0.208 0.263 0.190 0.398 0.318 0.441 0.435 0.420
PargraphComprehension0.335 0.234 0.2680.327 0.622 1.000 0.722 0.527 0.714 0.203... 0.251 0.291 0.273 0.167 0.251 0.435 0.263 0.386 0.431 0.433
SentenceCompletion0.304 0.157 0.2230.335 0.656 0.722 1.000 0.619 0.685 0.246... 0.172 0.180 0.228 0.159 0.226 0.451 0.314 0.396 0.405 0.437
WordClassification0.332 0.157 0.3820.391 0.578 0.527 0.619 1.000 0.532 0.285... 0.175 0.296 0.255 0.250 0.274 0.427 0.362 0.357 0.501 0.388
WordMeaning0.326 0.195 0.1840.325 0.723 0.714 0.685 0.532 1.000 0.170... 0.248 0.242 0.274 0.208 0.274 0.446 0.266 0.483 0.504 0.424
Addition0.116 0.057 -0.0750.099 0.311 0.203 0.246 0.285 0.170 1.000... 0.154 0.124 0.289 0.317 0.190 0.173 0.405 0.160 0.262 0.531
Code0.308 0.150 0.0910.110 0.344 0.353 0.232 0.300 0.280 0.484... 0.240 0.314 0.362 0.350 0.290 0.202 0.399 0.304 0.251 0.412
CountingDots0.314 0.145 0.1400.160 0.215 0.095 0.181 0.271 0.113 0.585... 0.173 0.119 0.278 0.349 0.110 0.246 0.355 0.193 0.350 0.414
StraightCurvedCapitals0.489 0.239 0.3210.327 0.344 0.309 0.345 0.395 0.280 0.408... 0.139 0.281 0.194 0.323 0.263 0.241 0.425 0.279 0.382 0.358
WordRecognition0.125 0.103 0.1770.066 0.280 0.292 0.236 0.252 0.260 0.172... 0.370 0.412 0.341 0.201 0.206 0.302 0.183 0.243 0.242 0.304
NumberRecognition0.238 0.131 0.0650.127 0.229 0.251 0.172 0.175 0.248 0.154... 1.000 0.325 0.345 0.334 0.192 0.272 0.232 0.246 0.256 0.165
FigureRecognition0.414 0.272 0.2630.322 0.187 0.291 0.180 0.296 0.242 0.124... 0.325 1.000 0.324 0.344 0.258 0.388 0.348 0.283 0.360 0.262
ObjectNumber0.176 0.005 0.1770.187 0.208 0.273 0.228 0.255 0.274 0.289... 0.345 0.324 1.000 0.448 0.324 0.262 0.173 0.273 0.287 0.326
NumberFigure0.368 0.255 0.2110.251 0.263 0.167 0.159 0.250 0.208 0.317... 0.334 0.344 0.448 1.000 0.358 0.301 0.357 0.317 0.272 0.405
FigureWord0.270 0.112 0.3120.137 0.190 0.251 0.226 0.274 0.274 0.190... 0.192 0.258 0.324 0.358 1.000 0.167 0.331 0.342 0.303 0.374
Deduction0.365 0.292 0.2970.339 0.398 0.435 0.451 0.427 0.446 0.173... 0.272 0.388 0.262 0.301 0.167 1.000 0.413 0.463 0.509 0.366
NumericalPuzzles0.369 0.306 0.1650.349 0.318 0.263 0.314 0.362 0.266 0.405... 0.232 0.348 0.173 0.357 0.331 0.413 1.000 0.374 0.451 0.448
ProblemReasoning0.413 0.232 0.2500.380 0.441 0.386 0.396 0.357 0.483 0.160... 0.246 0.283 0.273 0.317 0.342 0.463 0.374 1.000 0.503 0.375
SeriesCompletion0.474 0.348 0.3830.335 0.435 0.431 0.405 0.501 0.504 0.262... 0.256 0.360 0.287 0.272 0.303 0.509 0.451 0.503 1.000 0.434
ArithmeticProblems0.282 0.211 0.2030.248 0.420 0.433 0.437 0.388 0.424 0.531... 0.165 0.262 0.326 0.405 0.374 0.366 0.448 0.375 0.434 1.000
$center
  1. 0
  2. 0
  3. 0
  4. 0
  5. 0
  6. 0
  7. 0
  8. 0
  9. 0
  10. 0
  11. 0
  12. 0
  13. 0
  14. 0
  15. 0
  16. 0
  17. 0
  18. 0
  19. 0
  20. 0
  21. 0
  22. 0
  23. 0
  24. 0
$n.obs
145
  • psych는 심리학에서 많이 쓰이는 패키지
  • n.obs: 관찰 건수
  • 지능 검사에 대한 점수 상관 행렬
  • 실제로 PCA나 요인분석을 할 때 상관 행렬로 변환한 다음에 분석을 함
library(MASS)
iq = mvrnorm(145, Harman74.cor$center, Harman74.cor$cov)
  • Harman74.cor의 상관 행렬로 학생들의 점수 데이터를 생성
iq = iq * 15 + 50
iq = round(iq)
  • 보기 쉽게 변환

주성분 분석

p = prcomp(iq, scale. = T)
summary(p)
Importance of components:
                          PC1     PC2     PC3     PC4     PC5     PC6     PC7
Standard deviation     3.0026 1.47007 1.27909 1.18395 1.06461 0.96679 0.94400
Proportion of Variance 0.3756 0.09005 0.06817 0.05841 0.04723 0.03895 0.03713
Cumulative Proportion  0.3756 0.46569 0.53386 0.59227 0.63950 0.67844 0.71557
                           PC8     PC9    PC10    PC11    PC12    PC13    PC14
Standard deviation     0.92006 0.81764 0.79781 0.77208 0.72423 0.71656 0.68450
Proportion of Variance 0.03527 0.02786 0.02652 0.02484 0.02185 0.02139 0.01952
Cumulative Proportion  0.75084 0.77870 0.80522 0.83006 0.85191 0.87331 0.89283
                          PC15    PC16    PC17    PC18    PC19   PC20    PC21
Standard deviation     0.62122 0.59741 0.58146 0.57014 0.53200 0.5138 0.47465
Proportion of Variance 0.01608 0.01487 0.01409 0.01354 0.01179 0.0110 0.00939
Cumulative Proportion  0.90891 0.92378 0.93787 0.95141 0.96320 0.9742 0.98359
                         PC22    PC23    PC24
Standard deviation     0.3980 0.35138 0.33465
Proportion of Variance 0.0066 0.00514 0.00467
Cumulative Proportion  0.9902 0.99533 1.00000
  • 시험 과목이 24이기 때문에 주성분이 24개가 나옴
  • 하나의 점수로 줄여도 34%밖에 설명하지 못함
  • 이를 통해 부분 점수를 줄 수 있음
  • 언어, 수리 등 대과목 별로 부분 점수를 줄 수 있음
  • 학생들 차이를 잘 드러내는 점수를 위해 약 80% 보존하고 싶다면 주성분 10개를 사용해야 함
  • 비율에는 기준이 없음
  • 부분 점수를 많이 쓰면 원래 정보를 많이 담지만 부분 점수를 적게 쓰면 원래 정보를 잃음
  • 원래 정보를 잃어버린다고 해서 나쁜 것은 아님
  • 알고자 하는 것은 학생의 언어별, 수리별 능력이기 때문에 공통적인 것만 잘 뽑아 낸다면 소수의 주성분만 쓰는 것이 나쁜 것은 아님

주성분 수 결정하기

plot(p)
  • 급격하게 꺾이는 부분에서 끊음
  • 첫 번째나 두 번째가 적절해 보임
biplot(p)
  • 수리와 관련된 시험은 우측 상단에 있고 언어와 관련된 시험은 우측 하단에 있음
  • 과목은 24개가 있지만 이 중 방향성이 비슷한 과목이 있음을 확인할 수 있음

psych 라이브러리의 principal 함수로 주성분 분석

principal(iq, 3)
Principal Components Analysis
Call: principal(r = iq, nfactors = 3)
Standardized loadings (pattern matrix) based upon correlation matrix
                         RC2  RC1   RC3   h2   u2 com
VisualPerception        0.02 0.31  0.70 0.58 0.42 1.4
Cubes                   0.11 0.08  0.61 0.40 0.60 1.1
PaperFormBoard          0.10 0.06  0.63 0.41 0.59 1.1
Flags                   0.16 0.14  0.47 0.26 0.74 1.4
GeneralInformation      0.71 0.38  0.15 0.67 0.33 1.6
PargraphComprehension   0.80 0.14  0.16 0.69 0.31 1.1
SentenceCompletion      0.84 0.12  0.04 0.72 0.28 1.0
WordClassification      0.70 0.24  0.20 0.58 0.42 1.4
WordMeaning             0.81 0.10  0.13 0.69 0.31 1.1
Addition                0.32 0.79 -0.06 0.73 0.27 1.3
Code                    0.33 0.71  0.19 0.64 0.36 1.6
CountingDots           -0.04 0.76  0.21 0.62 0.38 1.2
StraightCurvedCapitals  0.22 0.62  0.35 0.55 0.45 1.9
WordRecognition         0.46 0.12  0.29 0.31 0.69 1.9
NumberRecognition       0.10 0.27  0.41 0.25 0.75 1.9
FigureRecognition       0.17 0.17  0.67 0.50 0.50 1.3
ObjectNumber            0.10 0.62  0.11 0.41 0.59 1.1
NumberFigure            0.14 0.67  0.40 0.63 0.37 1.7
FigureWord              0.17 0.51  0.36 0.42 0.58 2.1
Deduction               0.52 0.09  0.45 0.49 0.51 2.0
NumericalPuzzles        0.30 0.45  0.49 0.53 0.47 2.7
ProblemReasoning        0.45 0.20  0.48 0.48 0.52 2.3
SeriesCompletion        0.41 0.33  0.59 0.62 0.38 2.4
ArithmeticProblems      0.47 0.56  0.30 0.63 0.37 2.5

                       RC2  RC1  RC3
SS loadings           4.56 4.35 3.90
Proportion Var        0.19 0.18 0.16
Cumulative Var        0.19 0.37 0.53
Proportion Explained  0.36 0.34 0.30
Cumulative Proportion 0.36 0.70 1.00

Mean item complexity =  1.6
Test of the hypothesis that 3 components are sufficient.

The root mean square of the residuals (RMSR) is  0.07 
 with the empirical chi square  387.48  with prob <  4.3e-13

Fit based upon off diagonal values = 0.96
  • 앞의 3개의 차원만 선택
  • 원래 점수의 약 50%를 설명함
  • prcomp보다 더 많은 정보를 줌
  • 숫자가 클수록 해당 주성분과 관련이 큼
  • 3개의 각 주성분 별로 언어, 수리, 시공간 영역과 관련이 있음
  • ArithmeticProblems
  • 산수 문제도 언어 능력이 필요하다는 것을 알 수 있음
  • h2: 주성분에 의해 설명이 되는 부분
  • u2: 주성분에 의해 설명이 되지 않는 부분
  • SentenceCompletion(문장 완성 검사)
  • 3개의 주성분으로 77% 설명됨
  • 언어 영역과 관련이 있어 h2높게 나옴
  • ObjectNumber
  • 3개의 주성분으로 68% 설명하지 못함
  • 언어, 수리, 시공간 능력과 모두 관련이 없어 u2가 높게 나옴
  • 이 과목을 반영할 수 있도록 축을 더 넣거나 언어, 수리, 시공간과 관련이 없기 때문에 다음부터는 출제하지 않도록 결정할 수 있음
  • 후에 다중회귀분석을 통해 성적하고 관련이 높은 과목이 언어, 수리, 시공간 중에 어떤 것인지 알아낼 수도 있음

PCA 후 oblimin 회전

p = principal(iq, 3, rotate = 'oblimin')
p
Loading required namespace: GPArotation



Principal Components Analysis
Call: principal(r = iq, nfactors = 3, rotate = "oblimin")
Standardized loadings (pattern matrix) based upon correlation matrix
                         TC2   TC1   TC3   h2   u2 com
VisualPerception       -0.13  0.19  0.71 0.58 0.42 1.2
Cubes                   0.02 -0.07  0.65 0.40 0.60 1.0
PaperFormBoard          0.02 -0.09  0.67 0.41 0.59 1.0
Flags                   0.09  0.03  0.47 0.26 0.74 1.1
GeneralInformation      0.67  0.28  0.00 0.67 0.33 1.3
PargraphComprehension   0.82 -0.01  0.04 0.69 0.31 1.0
SentenceCompletion      0.88 -0.01 -0.09 0.72 0.28 1.0
WordClassification      0.68  0.11  0.09 0.58 0.42 1.1
WordMeaning             0.84 -0.05  0.02 0.69 0.31 1.0
Addition                0.19  0.84 -0.24 0.73 0.27 1.3
Code                    0.18  0.70  0.04 0.64 0.36 1.1
CountingDots           -0.23  0.80  0.11 0.62 0.38 1.2
StraightCurvedCapitals  0.06  0.58  0.25 0.55 0.45 1.4
WordRecognition         0.43 -0.01  0.24 0.31 0.69 1.6
NumberRecognition       0.00  0.20  0.39 0.25 0.75 1.5
FigureRecognition       0.07  0.01  0.68 0.50 0.50 1.0
ObjectNumber           -0.03  0.65  0.00 0.41 0.59 1.0
NumberFigure           -0.04  0.64  0.30 0.63 0.37 1.4
FigureWord              0.03  0.46  0.29 0.42 0.58 1.7
Deduction               0.49 -0.09  0.41 0.49 0.51 2.0
NumericalPuzzles        0.17  0.34  0.42 0.53 0.47 2.3
ProblemReasoning        0.38  0.04  0.44 0.48 0.52 2.0
SeriesCompletion        0.30  0.16  0.53 0.62 0.38 1.8
ArithmeticProblems      0.35  0.49  0.17 0.63 0.37 2.1

                       TC2  TC1  TC3
SS loadings           4.48 4.33 4.01
Proportion Var        0.19 0.18 0.17
Cumulative Var        0.19 0.37 0.53
Proportion Explained  0.35 0.34 0.31
Cumulative Proportion 0.35 0.69 1.00

 With component correlations of 
     TC2  TC1  TC3
TC2 1.00 0.39 0.33
TC1 0.39 1.00 0.41
TC3 0.33 0.41 1.00

Mean item complexity =  1.4
Test of the hypothesis that 3 components are sufficient.

The root mean square of the residuals (RMSR) is  0.07 
 with the empirical chi square  387.48  with prob <  4.3e-13

Fit based upon off diagonal values = 0.96
  • 기존 주성분 분석의 축 방향은 PC1과 PC2와 상관 없음
  • rotaion을 통해 축을 회전시켜 주성분과 축의 방향을 일치하게 만듦
  • 통계적 의미는 전혀 변하지 않음
  • h2와 u2는 변하지 않음
  • PC1, PC2, PC3만 변함
  • rotation을 하지 않았던 위의 principal의 PC1, PC2, PC3의 순서가 달라졌음

oblimin 회전시킨 PCA로 부분 점수 보기

#max_print_lines
p$scores
TC2TC1TC3
0.12333655 -0.69805055 -0.284939214
1.62237932 1.66824266 2.935444560
-1.65610724 -1.61380091 -0.528123212
1.27483112 0.95287140 -1.338265172
0.29099576 1.10614329 0.141238180
1.68261801 0.89170193 0.859988823
-0.68959833 -1.85178830 0.345401736
0.25953725 0.30055691 -1.006452223
-0.10680720 -0.02488884 0.307546278
2.11803478 -0.43275531 -0.009771343
-2.09434867 -0.13236227 0.086084555
0.61520953 0.09821401 1.826421487
-1.17849277 -1.54109955 -1.658917204
-0.23634803 -1.72367247 0.252010710
0.77895655 -0.07266185 0.298398872
1.10554986 0.97693880 0.228065192
-1.49076060 0.00264200 -0.727699175
1.99324081 1.11156323 0.893701130
-0.48949999 1.14506863 0.151058989
-0.32179882 -0.16668443 -0.584706918
-0.88908496 -0.25366755 -0.532820698
-0.89511739 -1.09102171 0.182530589
1.21494079 -1.65028739 0.422944373
-0.66972903 -2.72918273 -0.833623623
-2.33122462 0.02691829 0.067282903
1.47575110 -0.41000281 0.745335426
-0.50532644 1.15354984 0.073829753
0.04314186 0.84185541 0.461144016
0.78465839 -0.38323550 -0.192299526
0.32796493 1.08544169 1.127186203
.........
-0.13589626 -0.852587249-0.47027764
-0.24177725 0.452206908-0.72989567
-1.36832444 -2.009765012-0.03524090
0.20453171 0.694184879 0.69901180
1.48332051 1.659580313 1.08785418
-0.37317776 0.599072061 1.11628194
0.69550911 -0.447540516-0.10576922
0.44846483 0.707028093-0.86033140
0.00761960 1.057521883-0.09952582
0.10422791 -0.326569115-0.37906697
-1.81451991 -0.117207351-0.46522144
1.40962022 2.495990209 1.42768734
-0.48883451 -1.283640062 0.25585085
0.53427776 1.991984048 1.50140739
0.23276171 -0.053964326-0.62686071
-0.87573301 -0.190040148-0.60575551
0.06558164 0.478706982 0.83054815
-0.58571234 -0.816655571-1.02375126
0.02796655 -0.715332532 0.01336562
-0.24870668 0.256072814 0.03255771
0.58801617 -0.247584764 1.09771561
-0.41059930 -0.380221907-1.76572527
-0.59707373 -0.356032453-0.29595181
1.12660384 0.406893802 0.85245653
0.36702731 -0.746840602 0.82957608
-0.27868947 -0.075355624 0.22677671
-0.16975639 -1.120871092-0.58155877
1.67516768 0.663020727 0.23522660
0.93135163 0.006651926-0.16984424
1.44890447 1.376397797-0.50496779
  • 평균이 0, 표준편차 1