59doit
[ R ] 다차원척도법 본문
다차원척도법
여러 대상의 특징 사이 관계에 대한 수치적 자료를 이용하여 유사성에 대한 측정치를 상대적 거리로 구조화하는 방법
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 |