Sign In

[R] 탐색적 데이터 분석: 단일변수 데이터 분석

Y
Yerim
  1. R

단일변수 범주형 자료

관측값들의 종류별로 개수를 세는 것
도수분포표
table(벡터)             # 도수분포표
table(벡터)/length(벡터) # 비율
막대그래프
단일변수 범주형 자료가 포함하는 있는 정보 파악
barplot(dataset, main = '제목')
원그래프
각 자료값이 차지하는 비율
pie(dataset, main='제목')
숫자로 표현된 범주형 자료
범주형 자료를 문자/문자여링 아닌 숫자로 표현하는 경우도 있다.
예시
타이타닉호의 승객들이 어떤 선실에 묵었는지 알아보기
carData 패키지의 TitanicSurvival 데이터셋 사용
탑승객의 성별, 연령대, 탑승 선실, 생존 여부 등을 담은 다중변수 데이터
install.packages('carData')
library(carData)

# (1) 데이터 준비
room.class <- TitanicSurvival$passengerClass # 선실 정보
room.class

# (2) 도수 분포 계산
tbl <- table(room.class)
tbl
sum(tbl) # 전체 탑승객수

# (3) 막대그래프 작성
barplot(tbl, main = '선실별 탑승객', 
        xlab = '선실 등급',
        ylab = '탑승객수',
        col = c('blue', 'green', 'yellow'))

# (4) 원그래프 작성
tbl/sum(tbl)
par(mar=c(1, 1, 4, 1))
pie(tbl, main='선실별 탑승객',
    col = c('blue', 'green', 'yellow'))
par(mar=c(5.1, 4.1, 4.1, 2.1))

단일변수 연속형 자료

평균, 중앙값
평균 mean: 자료의 값들을 모두 합산한 후 값들을 개수로 나눈 값
$\overline x = \frac{1}{n} \sum^n_{i=1}x_i$
하나의 값으로 전체 데이터의 값들을 대표할 수 있기 때문에 중요하다.
중앙값 median: 자료의 값들을 크기 순으로 일렬로 세웠을 때 가장 중앙에 위치하는 값
이상치의 영향을 받지 않는다.
절사평균 trimmed mean: 자료의 관측 값들 중에서 작은 값들의 하위 n%와 큰 값들의 상위 n%를 제외하고 중간에 있는 나머지 값들만 평균을 계산하는 방식
mean(data)             # 평균값
median(data)           # 중앙값
mean(data, trim=0.n)   # 절사평균
사분위수 quantile
주어진 자료에 있는 값들을 크기 순으로 나열했을 때 이것을 4등분하는 지점에 있는 값들
1사분위수(Q1), 2사분위수(Q2), 3사분위수(Q3), 4사분위수(Q4)
quantile(data)
quantile(data, (0;10)/10) # 10% 구간으로 나누어 계산
산포 distribution
주어진 자료에 있는 값들이 퍼져있는 정도
분산 variance, 표준편차 standard deviation로 파악 가능
분산: $s^2 = \frac{1}{n-1} \sum^n_{i=1}(x_i - \overline X^2)$
표준편차: $s = \sqrt {s^2}$
var(data)          # 분산
sd(data)           # 표준편차
range(data)        # 값의 범위
diff(range(data))  # 최댓값, 최솟값 차이
히스토그램 histogram
막대그래프와 비슷한 그래프로 연속형 자료의 분포를 시각화할 때 사용
hist(dataset, main = '제목')
상자그림 boxplot
상자 수염 그림 box and whisker plot
사분위수를 시각화하여 그래프 형태로 나타낸 것
boxplot(dataset, main = '제목')
boxplot(y~x, data=dataset, main='제목') # 그룹이 있는 자료의 상자그림
boxplot.stats(dataset)                  # 상자그림의 정확한 값들
예시
# (1) 데이터 준비
grad <- state.x77[, 'HS Grad']
grad

# (2) 사분위수
summary(grad)
var(grad) # 분산
sd(grad)  # 표준편차

# (3) 히스토그램
hist(grad, main = '주별 졸업률',
     xlab='졸업률', 
     ylab = '주의 개수',
     col = 'orange')

# (4) 상자그림
boxplot(grad, main='주별 졸업률', 
        col = 'orange')

# (5) 졸업률이 가장 낮은 주
idx <- which(grad==max(grad))
grad[idx]

# (6) 졸업률이 가장 높은 주
idx <- which(grad == max(grad))
grad[idx]

# (7) 졸업률이 평균 이하인 주
idx <- which(grad<mean(grad))
grad[idx]
Yerim-DevNote
Subscribe to 'Yerim-DevNote'
Subscribe to my site to be the first to receive notifications and emails about the latest updates, including new posts.
Join Slashpage and subscribe to 'Yerim-DevNote'!
Subscribe
👍