59doit

[ R ] 다차원척도법 본문

통계기반 데이터분석

[ R ] 다차원척도법

yul_S2 2022. 12. 2. 17:19
반응형

다차원척도법 

여러 대상의 특징 사이 관계에 대한 수치적 자료를 이용하여 유사성에 대한 측정치를 상대적 거리로 구조화하는 방법

2차원 또는 3차원에서의 특정 위치에 관측치를 배치해서 보기 쉽게 척도화 즉, 항목 사이 거리를 기준으로 하는 자료를 이용하여 항목들의 상대적인 위치를 찾고 거리가 가까운 개체들끼리 Group 화 하여 분류할 수 있다.

 

  • 다차원 척도법 적용 절차

1) 자료 수집: 특성을 측정

2) 유사성, 비유사성 측정: 개체 사이의 거리 측정

3) 공간에서 개체 사이 거리 표현

4) 개체의 상호 위치에 따른 관계가 개체들 사이 비유사성에 적합여부 결정

 

 

  • 다차원 척도법의 종류

(1) 계량적(전통적) 다차원 척도법(Classical MDS)

  • 숫자 데이터로만 구성.
  • stats패키지의 cmdscale()함수

ex) eurodist 데이터를 이용하여 유럽 주요 도시 사이의 거리 대상으로 다차원 척도법을 적용하여 그래프로 표현

#1 패키지 설치 및 데이터 불러오기 

install.packages("MASS")
library(MASS)

data("eurodist")
eurodist

 

 

#2 다차원 척도법 적용

MDseurodist <- cmdscale(eurodist)
MDseurodist
# [,1]        [,2]
# Athens           2290.274680  1798.80293
# Barcelona        -825.382790   546.81148
# Brussels           59.183341  -367.08135
# Calais            -82.845973  -429.91466
# Cherbourg        -352.499435  -290.90843
# Cologne           293.689633  -405.31194
# Copenhagen        681.931545 -1108.64478
# Geneva             -9.423364   240.40600
# Gibraltar       -2048.449113   642.45854
# Hamburg           561.108970  -773.36929
# Hook of Holland   164.921799  -549.36704
# Lisbon          -1935.040811    49.12514
# Lyons            -226.423236   187.08779
# Madrid          -1423.353697   305.87513
# Marseilles       -299.498710   388.80726
# Milan             260.878046   416.67381
# Munich            587.675679    81.18224
# Paris            -156.836257  -211.13911
# Rome              709.413282  1109.36665
# Stockholm         839.445911 -1836.79055
# Vienna            911.230500   205.93020

 

#3 시각화

plot(MDseurodist)




text(MDseurodist,rownames(MDseurodist),cex=0.8,col="violet")



abline(v=0, h=0, lty=1, lwd=0.5)

그래프를 통해 Paris, Munich 등이 중심에 있고 Lisbon, Stockholm, Athem 등은 중심에서 거리가 좀 있음을 알 수 있다. 이 그래프를 통해서 거리가 가까운 도시끼리 Group화가 가능하다.

 

  • 점이나 문자의 굵기 cex = "0.8"
  • 색깔 col = "red"

 

 

(2) 비계량적 다차원 척도법 (nonmetric MDS):

  • 숫자가 아닌 데이터 포함.
  • MASS패키지의 isoMDS()함수 이용

ex) HSAUR 패키지 내 voting 데이터를 이용 15명의 의뭔이 19개의 법안에 투표한 결과 데이터

#1 패키치 설치 및 voting 데이터 불러오기

install.packages("HSAUR")
library(HSAUR)
library(MASS)
data("voting", package="HSAUR")
voting

 

#2 다차원 척도법 적용

MDS2voting <- isoMDS(voting) 
# initial  value 15.268246 
# iter   5 value 10.264075
# final  value 9.879047 
# converged

MDS2voting 
# $points
# [,1]       [,2]
# Hunt(R)           -8.4354008  0.9063380
# Sandman(R)        -7.4050250  7.8770232
# Howard(D)          6.0930164 -1.4971986
# Thompson(D)        3.5187022  5.2486888
# Freylinghuysen(R) -7.2457425 -4.1821704
# Forsythe(R)       -3.2787096 -2.5689673
# Widnall(R)        -9.7110008 -1.1187710
# Roe(D)             6.3429759  1.0388694
# Heltoski(D)        6.2983842  0.2706499
# Rodino(D)          4.2829160 -0.9151604
# Minish(D)          4.2642545 -0.3919690
# Rinaldo(R)         5.0285425  0.2665701
# Maraziti(R)       -4.4577693 -6.2177727
# Daniels(D)         0.8129854 -0.9417672
# Patten(D)          3.8918709  2.2256372

# $stress
# [1] 9.879047

 

 

#3 시각화

x <- MDS2voting$point[,1]
y <- MDS2voting$point[,2]

plot(x,y) 



text(x, y, labels= colnames(voting))



 

 

 


type = "p" 점(디폴트)
# 1 선, b 점과선, c b에서 점생략
# o 점과선 중첩, h점에서 x축까지 수직

 

라인타입
# lty = 0, lty = "blank" 투명선
# lty = 1, lty = "solid" 실선
# lty = 3, lty = "dotted" 점선

 

색깔
# 색깔 col = "red"
# 배경색 bg = "yellow"
# 선의 굵기 lwd = "2"
# 점이나 문자의 굵기 cex = "3"

 


 

 

 

반응형

'통계기반 데이터분석' 카테고리의 다른 글

[ R ] 오분류표  (1) 2022.12.03
[ R ] 변수제거  (1) 2022.12.03
[ R ] 베이지안  (1) 2022.12.02
[ R ] install.packages 오류  (0) 2022.12.02
[ R ] 서포트벡터머신 (SVM)  (0) 2022.12.01
Comments