獨斷論

데이터축소를 위한 인자분석 실행 방법 (SPSS 사용설명서 26, Factor analysis for data reduction) 본문

과학과 기술/SPSS

데이터축소를 위한 인자분석 실행 방법 (SPSS 사용설명서 26, Factor analysis for data reduction)

부르칸 2015. 5. 9. 11:00

http://dogmas.tistory.com/409에서 데이터축소(data reduction)는 주성분분석(PCA, principal component analysis)에 해당되고 구조검출(structure detection)은 인자분석(factor analysis)에 해당된다고 하였지만 SPSS에서 메뉴는 오직 Factor Analysis 밖에 없기때문에 여기 제목이 데이터축소를 위한 인자분석이라고 달아 놓았다.


이제 우리가 실행하려는 문제를 알아보자. 

자동차회사에서 자동차판매량에 대한 조사를 하려고 할때 변수가 너무 많아 어려움을 겪고 있다고 가정하자. 이때 데이터가 가진 정보는 그대로 유지하면서 변수의 갯수를 줄인다면 효과적으로 분석을 실행할수 있을 것이다. 이때 사용할수 있는 것이 Factor analysis 메뉴에 있는 PCA이다.


우선 아래 데이터를 받아 SPSS에서 읽는다.

car_sales.csv



Analyze > Dimension Reduction > Factor...를 클릭한다.

위와 같은 윈도우가 나타나면 Vehicle type부터 Fuel efficiency까지 변수로 설정한다.


Extraction을 클릭하여 윈도우가 하나 더 나타나면

Method에서 principal components를 설정하고

Display에서 Scree plot을 클릭한다.

Continue을 누른 후에

Factor analysis 창에서 Rotation을 클릭한다.



Method에서 Varimax를 설정한다.

Continue를 클릭한 후에

Factor analysis 윈도우에서 Scores를 클릭하면 아래와 같이 윈도우가 뜬다.



Save as variables를 클릭한 후에

Display factor score coefficient matrix를 클릭하고

Continue를 클릭후 OK를 클릭한다.


PCA 분석결과 보기

Communalities 결과


Communalities는 데이터축소(data reduction)를 실행한 후에 원래 변수들이 얼마만큼 설명되는지를 보여주는 것이다.  따라서 이 값이 작으면 데이터축소는 잘 됐다고 볼수 없다. 이때 communality값을 증가시키기 위하여 principal components의 갯수를 증가시킬수도 있다. 맨 위의 그림에서 이를 지정할수 있는데 기본적으로 eigenvalue가 1인 것을 기준으로 하지만 인위적으로 이를 바꿀수 있다. 


Total Variance Explained

Communality는 principal component에 의하여 각각의 변수가 얼마만큼 설명되는지를 보여주었다면 아래표는 principal component에 의하여 전체데이터의 variance가 얼마나 설명될수 있는지를 보여준다.



위 표에서 전체 변수가 10개이므로 전체 component도 10개이다.

첫번째 component가 전체 데이터 variance의 59.94%를 설명해준다고 하였고

두번째 component가 전체 데이터 variance의 16.55%를 설명해 준다고 하였으며

세번째 component가 전체 데이터 variance의 11.23%를 설명해준다고 하였다.

component 1, 2, 3만을 가지고도 전체 variance의 87.71를 설명할수 있다는걸 보여주고 있다.

앞서 principal component를 선택할때 eigen value가 1보다 큰 것을 선택한다고 하였으므로 여기서 1보다 큰 것 3개(5.994, 1.654, 1.123)만 선택하였다.


축을 회전하였을때 cumulative %는 87.71%로 같지만 component 1, 2, 3 각각이 설명해 주는 것은 전체적으로 고루 퍼져있다. 즉 축을 회전하지 않았을때는 59.9, 16.5, 11.2지만 축을 회전하였을때는 32.2, 31.3, 24.2이다.

이는 축을 회전하였을때 데이터를 해석하기 더 유용하다는 것을 보여준다.


Scree Plot

SPSS는 기본적으로 eigenvalue가 1보다 작은 것을 principal component로 선택하게 되어 있지만 scree plot을 보고 principal component의 갯수를 지정해 줄수도 있다.


위 그래프를 보면 1-2, 2-3, 3-4, 4-5, 5-6 등등 사이의 기울기가 4-5에서 갑지기 완만해졌는데 이때 principal component의 갯수를 그 직전인 3으로 선택할수가 있다. 여기서는 공교롭게도 eigenvalue가 1보다 큰것을 선택할때와 일치하게 되었다. 


Rotated Component Matrix

일명 loading plot을 그리는데 이용된다. loading vector라고 흔히들 말한다.

Component 1 또는 principal component 1 (PC1)은 원래 변수 Price in thousands와 Horsepower와 연관된 가상의 변수라고 볼수 있다. PC2는 Wheelbase와 Length와 연관된 변수라고 볼수 있으며 PC3는 Vehicle type이라고 봐도 무방하다.



위 3개의 벡터를 가지고 PC1, PC2, PC3를 각각 X, Y, Z 축으로 잡고 3차원 그리프를 그리면 loading plot이 된다.


3차원이 어렵다면 아래와 같이 그려도 된다. 

그리는 방법은 loading vector를 엑셀에 복사한 후에 SPSS에서 scatter matrix로 그리면 된다.



Scatterplot Matrix of Component Scores

일명 score plot이라고 하는 것이다. 

지금까지 알려준데로 SPSS를 실행하였다면 Data view에 새로운 변수 3개가 더 생성되었을 것인데 이것이 component score 값들이다. 즉 3개의 principal component를 축으로 잡아 모든 데이터를 이 축에  projection했을때 값이다. 이것들을 scatter plot으로 그리면 score plot이 된다.

그래프 그리는 방법은 앞에서 많이 설명하였으므로 생략하고 결과만 보여준다. 지금까지는 simple scatter를 이용하였지만 여기서는 scatter plot matrix를 이용하면 된다. 


PC1에서 약간 skewed된 것처럼 보이는데 log transform을 이용하면 된다

PC3에서 두개의 데이터로 나뉘었는데 이는 승용차와 트럭에 대한 양상이 다르기때문에 나타난 것이다.

이럴때에는 승용차와 트럭 2가지 데이터로 나뉘어 모델링하면 더 좋은 결과를 가질수 있다.






Comments