logo

[통계] 주성분 분석

차원 축소

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

 

변수

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

차원

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

변수와 차원

  • 변수와 차원은 비슷한 개념으로 생각할 수 있음

이름|면적|인구 --|--:|--: 한국|100,210|50,617,045 일본|377,944|126,989,659 필리핀|300,000|102,370,400

  • 변수: 면적, 인구

  • 면적과 인구를 하나의 차원으로 나타내 2차원 상에 표현

 

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

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

해결책

  • 변수 선택: 중요한 변수만 사용
  • 변수 추출: 새로운 변수를 생성

이름|면적(km2km^2)|면적(mi2mi^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))
  • 대각선 값만 나옴

분산 합 구하기

sum(diag(var(USArrests)))

7261.38411428571

주성분분석 실행

arrest.pca = prcomp(USArrests)
arrest.pca
  • Standard deviations: 표준 편차
    • 네 개의 변수로 네 개의 새로운 변수를 만듦
    • PC1의 표준 편차는 83이므로 분산은 6889이므로 원래 분산인 7261에서 6889만큼 설명
  • Rotation
    • 각 데이터에 Rotation PC1 밑에 있는 숫자를 곱한 뒤 다 더해서 PC1을 만듦

주성분분석 요약

summary(arrest.pca)
  • 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)
  • 첫 번째 차원이 71%를 차지하고 common에 해당함
  • 두 번째 차원이 29%를 차지함

그래프 그리기

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

PC1의 값 확인하기

p$x[,1]

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)
  • 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)
  • 첫 번째 차원과 두 번째 차원의 설명 비율이 거의 비슷함

그래프 그리기

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
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)
  • 시험 과목이 24이기 때문에 주성분이 24개가 나옴
  • 하나의 점수로 줄여도 34%밖에 설명하지 못함
  • 이를 통해 부분 점수를 줄 수 있음
    • 언어, 수리 등 대과목 별로 부분 점수를 줄 수 있음
  • 학생들 차이를 잘 드러내는 점수를 위해 약 80% 보존하고 싶다면 주성분 10개를 사용해야 함
  • 비율에는 기준이 없음
    • 부분 점수를 많이 쓰면 원래 정보를 많이 담지만 부분 점수를 적게 쓰면 원래 정보를 잃음
    • 원래 정보를 잃어버린다고 해서 나쁜 것은 아님
    • 알고자 하는 것은 학생의 언어별, 수리별 능력이기 때문에 공통적인 것만 잘 뽑아 낸다면 소수의 주성분만 쓰는 것이 나쁜 것은 아님

주성분 수 결정하기

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

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

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

PCA 후 oblimin 회전

p = principal(iq, 3, rotate = 'oblimin')
p
  • 기존 주성분 분석의 축 방향은 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
Next
통계