728x90
반응형

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

  • mlbench 패키지 설치
더보기
install.packages("mlbench") # mlbench패키지 설치
library(mlbench) # mlench 로드
data("BostonHousing") # bostonhousing 로드
str(BostonHousing) # BostonHousing의 데이터 구조, 변수 개수, 변수 명, 관찰치 개수, 관찰치 미리보기 
head(BostonHousing) # 상위 6개 관측치 미리보기
myds <- BostonHousing[,c("crim","rm","dis","tax","medv")]
myds

[그림1] 패키지 install 
[그림2] 라이브러리, str, head 예제 출력
[그림3] 예제 출력
[그림4] 예제 출력

2단계 : grp 변수 추가

  • grp는 주택 가격을 상(H), 중(M), 하(L)로 분류한 것으로 25.0 이상이면 상(H), 17.0 이하이면 하(L), 나머지를 중(M)으로 분류
더보기
# 2단계 : grp 변수 추가
grp <- c() # 빈 벡터를 만듬
for(i in 1: nrow(myds)){ # myds$medv값에 따라서 그룹을 분류한다. 
  if(myds$medv[i]>= 25.0){
    grp[i] <- "H" # 25.0 이상이면 상(H)
  } 
  else if(myds$medv[i] <=17.0){
    grp[i] <- "L" # 17.0 이하라면 하(L)
  }
  else{
    grp[i] <- "M" # 나머지는 중(M)
  }
}
grp <- factor(grp) # 문자 벡터를 팩터 타입으로 변경
grp <- factor(grp, levels=c("H","M","L")) # 레벨의 순서를 H,L,M <- H,M,L

myds <- data.frame(myds,grp) # 데이터 프레임으로 변경

[그림5] 2단계 예제 출력

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

  • table()함수를 통해 도수분포표를 작성한다.

 

더보기
# 3단계 : 데이터셋의 형태와 기본적인 내용 파악
str(myds) # 데이터 구조 파악
head(myds) # 상위 6개 출력
table(myds$grp) # table myds$grp 출력

[그림6] 3단계 예제 출력

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

  • mfrow(행수, 열수)함수 : 화면을 분할
  • rm(주택 1가구당 방의 개수), medv(주택 가격) 변수만 종 모양의 정규분포에 가깝고, crim(지역의 1인당 범죄율), dis(직업 센터까지 거리)는 관측값들이 한쪽으로 쏠림
  • tax(재산세율)는 중간에 관측값이 없는 빈 구간이 존재하는 특징
더보기
# 4단계 : 히스토그램에 의한 관측값의 분포 확인
par(mfrow=c(2,3)) # 2*3 가상화면 분할
for(i in 1:5){
  hist(myds[,i],main=colnames(myds)[i],col="Red 4")
}
par(mfrow=c(1,1)) # 가상화면 분할 해제

[그림7] 히스토그램에 의한 관측값의 분포 확인 예제 출력

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

  • 그룹 정보(grp)를 제외한 5개 변수에 대해 상자 그림 작성
  • crim은 관측값들이 좁게 밀집(관측값들의 편차가 매우 작다)
  • tax(재산세율)은 넓게 펴져있다. (관측값들의 편차가 비교적 크다)
더보기
# 5단계 : 상자그림에 의한 관측값의 분포 확인
par(mfrow=c(2,3)) # 2*3 가상화면 분할
for(i in 1:5){ # 5개
  boxplot(myds[,i],main = colnames(myds)[i], col = "Gold")
}
par(mfrow=c(1,1)) # 가상화면 분할 해제

[그림8] 예제 출력 
[그림9] 상자그림에 의한 관측값의 분포 확인 예제 출력

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

  • 그룹 정보를 이용하여 각 변수별로 그룹별 분포를 확인
  • 주택 가격이 높은 지역이나 중간 지역은 범죄율은 낮고, 주택 가격이 낮은 지역의 범죄율이 높게 나타남
더보기
# 6단계 : 그룹별 관측값 분포의 확인
par(mfrow=c(1,2)) # 1*2 가상화면 분할
boxplot(myds$crim~myds$grp, main = "1인당 범죄율")
boxplot(myds$rm~myds$grp, main="방의 개수")
par(mfrow=c(1,1)) # 가상화면 분할 해제 

[그림10] 그룹별 관측값 분포의 확인 코드 출력
[그림11] 그룹별 관측값 분포의 확인 예제 출력

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

  • medv(주택 가격)과 양의 상관성이 있는 변수는 rm(가구당 방의 개수)
  • crim(1인당 범죄율)은 주택 가격과 음의 상관성이 있는 것으로 보인다.
더보기
pairs(myds[,-6])

[그림12] 다중 산점도를 통한 변수 간 상관 관계의 확인 예제 출력

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

  • (crim - medv), (rm - medv), (dis - medv), (tax - medv) 산점도에서 그룹별로 분포 위치가 뚜렷하게 구분
  • 주택 가격 중간 그룹(파란색)은 상위 그룹(빨간색), 하위 그룹(검정)에 비해 주택 가격의 변동폭이 좁다.
더보기
# 8단계 : 그룹 정보를 포함한 변수 간 상관 관계의 확인
point <- as.integer(myds$grp) # 점의 모양 지정 point.
color <- c("Red 4","blue","black")
pairs(myds[,-6],pch=point, col=color[point]) 

[그림13] 그룹 정보를 포함한 변수 간 상관 관계의 확인 코드 
[그림14] 그룹 정보를 포함한 변수 간 상관 관계의 확인 예제 출력

 

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

  • medv(주택가격)을 기준으로 보았을 때 상관계수가 가장 높은 것은 rm(가구당 방의 개수)로 0.6953599
  • 산점도상에서 음의 상관성이 높은 것으로 보였던 crim(1인당 범죄율)은 상관계수가 -0.3883046으로, 실제로는 상관도가 높지 않다.
더보기
# 9단계 : 변수 간 상관계수의 확인
cor(myds[,-6])

[그림15] 9단계 : 변수 간 상관계수의 확인 예제 출력

 

출처 : 모두를 위한 R 데이터 분석 입문 한빛아카데미

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기