Acdong
Learn by doing
Acdong
전체 방문자
오늘
어제
  • 분류 전체보기
    • Economy
      • Saving Money
    • Self-improvement
    • Thoughts
    • Machine learning
      • Deep Learning
      • Chatbot
      • NLP
    • MLops
      • AWS
      • Container
      • Serving
    • Computer Vision
    • Data Science
      • ADsP
      • R
    • Project
    • Python
      • Data Structure & Algorithm
    • C,C++
    • API
      • ElasticSearch
    • Error Note
    • Network
    • RDBMS
      • SQL

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • [GitHub]

인기 글

태그

  • R시각화
  • SentenceTransformer
  • 존댓말 반말 분류
  • R
  • c포인터
  • Numpy
  • plot()
  • 회귀계수
  • nlp
  • 다중공선성
  • pandas
  • sbert
  • 데이터 전처리
  • Python
  • R그래프
  • 기계학습
  • 머신러닝
  • 포인터
  • 이미지 전처리
  • 어텐션

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Acdong

Learn by doing

[R] 그래프 시각화 총정리 ( EDA 탐색적 분석 )
Data Science/R

[R] 그래프 시각화 총정리 ( EDA 탐색적 분석 )

2020. 6. 16. 18:23
728x90

탐색적 데이터 분석 과정

실습 데이터 셋 변수 설명

변수 설명
crim 지역의 1인당 범죄율
rm 주택 1가구당 방의 개수
dis 보스턴의 5개 직업 센터까지의 거리
tax 재산세율
medv 주택 가격

1단계 : 분석 대상 데이터셋 준비

R-Code

install.packages("mlbench")

library(mlbench)
data("BostonHousing")
myds<-BostonHousing[,c("crim","rm","dis","tax","medv")]

 


2단계 : grp 변수 추가

myds가 앞으로 우리가 탐색할 데이터셋인데 여기에 grp라는 범주형 변수를 하나 더 추가하려고 한다.

grp는 주택 가격을 상(H) , 중(M) , 하(L)로 분류한 것으로 25.0 이상이면 상(H), 17.0 이하면 하(L)

나머지를 중(M)으로 분류한다.

grp <-c()
for(i in 1:nrow(myds)){                                    #myds$medv 값에 따라 그룹 분류
      if (myds$medv[i] >= 25.0){                        
          grp[i] <-"H"
      } else if (myds$medv[i] <= 17.0){
          grp[i] <-"L"
      } else {
          grp[i] <-"M"
      }
}

grp <- factor(grp)                                          # 문자 벡터를 팩터 타입으로 변경
grp <- factor(grp, levels=c("H","M","L"))              # 레벨의 순서를 H,L,M -> H,M,L

myds <- data.frame(myds, grp)                         #myds에 grp 열 추가

grp <- factor(grp) 명령문으로 문자열 벡터 grp를 팩터로 변환하면 레벨이 알파벳 순서에 의해

H,L,M으로 지정이 되는데, 그래프를 그리면 결과가 이 순서대로 나이기 때문에 보기가 불편하다.

따라서 우리가 원하는 순서인 H,M,L로 변경해야 한다. 


3단계 : 데이터셋의 형태와 기본적인 내용 파악

데이터셋이 준비되었으니 데이터셋의 형태와 기본적인 내용을 파악해보자.

 

str(myds)

head(myds)

table(myds$grp)

 

먼저 str() 함수의 결과를 보면 myds 데이터셋은 데이터프레임이고, 506개의 주택에 대한 정보를 담고 있으며 6개의 변수로 구성되어 있음을 알 수 있다. 6개의 변수 중 grp는 팩터 타입이고 나머지는 숫자 타입의 변수이다.

 

head() 함수를 통해서 데이터가 어떤 형태로 저장되어 있는지 확인한다.

grp는 그룹 정보를 담고 있기 때문에 각 그룹별 관측값들의 개수를 알아보는 것이 필요하다.

table() 함수를 통해 도수분포표를 작성하면 가격이 상위인 주택이 132채, 중간이 247채, 하위가 127채임을 알 수 있다.


4단계 : 히스토그램에 의한 관측값의 분포 확인

그룹 정보(grp)를 제외한 나머지 5개 변수에 대해 관측값들의 분포를 확인해보자.

par(mfrow=c(2,3))                       #2x3 가상화면 분할
for(i in 1:5) {
      hist(myds[,i],main=colnames(myds)[i],col="yellow")
}

par(mfrow=c(1,1))                       #가상화면 분할해제

결과를 보면 rm,mdev 변수만 종 모양의 정규분포에 가깝고,

crim, dis 는 관측값들이 한쪽으로 쏠려서 분포함을 알 수 있다.

tax는 중간에 관측값이 없는 빈 구간이 존재하는 특징을 보인다.


5단계 : 상자그림에 의한 관측값의 분포 확인

이번에는 그룹 정보(grp)를 제외한 나머지 5개 변수에 대하 boxplot()함수를 작성하여 분포를 확인해보자.

par(mfrow=c(2,3))
for(i in 1:5){
     boxplot(myds[,i],main=colnames(myds)[i])
}

par(mfrow=c(1,1))

 

결과를 보면 1인당 범죄율(crim)은 관측값들이 좁은 지역에 밀집되어 있다.(관측값들의 편차가 매우 작음)

재산세율(tax)은 넓게 퍼져 있는 것(관측값들의 편차가 비교적 크다)을 확인 할 수 있다.


6단계 : 그룹별 관측값 분포 확인

이제 그룹 정보를 이용하여 각 변수별로 그룹별 분포를 확인해보자.

boxplot(myds$crim~myds$grp, main="1인당 범죄율")

범죄율(crim)을 주택 가격별 그룹으로 살펴보면 , 주택 가격이 높은 지역이나 중간 지역의 범죄율은 낮고,

주택 가격이 낮은 지역의 범죄율이 높게 나타난다.

boxplot(myds$rm~myds$grp, main="방의 개수")

 

그룹별로 주택의 방의 개수를 살펴포면 주택 가격이 높으면 방의 개수도 많다는 것을 알 수 있다.

주택 가격이 중간인 지역과 하위인 지역이 있어서 방의 개수의 평균은 큰 차이가 나지 않지만,

중간 그룹의 방의 개수가 5.2~6.8 사이로 비교적 균일한 반면

하위 그룹의 방의 개수는 4.5~7.2사이로 넓게 퍼져있는 것을 알 수 있다.


7단계 : 다중 산점도를 통한 변수 간 상관 관계 확인

pairs(myds[,-6])

medv(주택가격)과 rm(가구당 방의 개수)는 양의상관관계가 있어보이고.

crim(1인당 범죄율)은 medv(주택가격)과 음의 상관관계가 있어보인다.

 

가구당 방의 개수가 많으면 집이 크다는 의미이니 주택 가격이 높아질 것이고,

범죄율이 높은 지역은 주택 가격이 떨어진다는 의미로 해석할 수 있다.


8단계 : 그룹 정보를 포함한 변수 간 상관 관계 확인

그룹 정보를 포함하여 다중 산점도를 작성하고 시사점이 있는지 확인해본다.

point <- as.integer(myds$grp)                #점의 모양 지정
color <-c("red","green","blue")                #점의 색 지정
pairs(myds[,-6] , pch=point, col=color[point])

결과를 관찰해 보면(crim-medv), (rm-medv), (dis-medv) , (tax-medv) 산점도에서

그룹별로 분포 위치가 뚜렷하게 구분되는 것을 알 수 있다. 또한 주택 가격 중간 그룹(녹색점)은 

상위 그룹(빨간색), 하위 그룹(파란색)에 비해 주택 가격의 변동폭이 좁다는 사실도 관찰할 수 있다.


9단계 : 변수 간 상관계수의 확인

cor(myds[,-6])

medv(주택 가격)를 기준으로 보았을 때 상관계수가 가장 높은 것은 rm(가구당 방의 개수)으로 0.6953599이다.

음의 상관성이 높은것으로 보였단 crim(1인당 범죄율)은

상관계수가 -0.3883046으로, 실제로는 상관도가 높지 않다는 것을 알 수 있다.

반응형
저작자표시 비영리 (새창열림)

'Data Science > R' 카테고리의 다른 글

[R] 그래프 시각화 ( 선그래프 , graph , line graph )  (0) 2020.06.16
[R] 그래프 시각화 ( 상관분석 , Correlation analysis , 상관계수 r)  (0) 2020.06.15
[R] 그래프 시각화 ( 산점도 scatter plot, scatter graph)  (0) 2020.06.15
[R]. 그래프 시각화 ( 사분위수 , 히스토그램 , 상자그림 )  (0) 2020.06.11
[R]. 그래프 시각화 ( 도수분표표 , 막대그래프 , 원그래프 )  (0) 2020.06.11
    'Data Science/R' 카테고리의 다른 글
    • [R] 그래프 시각화 ( 선그래프 , graph , line graph )
    • [R] 그래프 시각화 ( 상관분석 , Correlation analysis , 상관계수 r)
    • [R] 그래프 시각화 ( 산점도 scatter plot, scatter graph)
    • [R]. 그래프 시각화 ( 사분위수 , 히스토그램 , 상자그림 )
    Acdong
    Acdong
    E-mail : alswhddh@naver.com / 자연어처리와 MLops 를 연구하고 있는 스타트업 개발자입니다.

    티스토리툴바