Skip to content

Latest commit

 

History

History
392 lines (327 loc) · 11.4 KB

220506.md

File metadata and controls

392 lines (327 loc) · 11.4 KB

자료의 특성에 따른 분류

분류

  • 범주형 자료 (categorical data)
  • 연속형 자료 (numerical data)

범주형 자료

  • 질적 자료라고도 부름
  • 성별 같이 범주 또는 그룹으로 구분할 수 있는 값으로 구성된 자료
  • 기본적으로 숫자로 표현할 수 없음
  • 대소 비교, 산술 연산 적용되지 않음

연속형 자료

  • 양적 자료라고도 부름
  • 몸무게, 키와 같은 크기가 있는 숫자들로 구성된 자료
  • 대소 비교, 산술 연산 가능

변수의 개수에 따른 분류

분류

  • 단일변수 자료
  • 다중변수 자료

변수

  • 연구, 조사, 관찰하고 싶은 대상의 특성
  • 키, 몸무게, 혈액형 같은 것이 예시

단일변수 자료

  • 하나의 변수로만 구성된 자료
  • 일변량 자료라고도 부름
  • 벡터에 저장

다중변수 자료

  • 두 개 이상의 변수를 구성된 자료
  • 다변량 자료라고도 부름
  • 두 개의 변수로 구성된 자료는 이변량 자료라고 함
  • 매트릭스 또는 데이터 프레임에 저장

단일변수 범주형 자료의 탐색

범주형 자료에서 할 수 있는 기본적인 작업

  • 관측값들의 졸유별로 개수를 세는 것

탐색

  • 도수분포표의 작성
  • 막대그래프의 작성
  • 원그래프의 작성

도수분포표의 작성

  • '선호 계절'이라는 단일 특성에 대해 자료를 수집하여 단일변수 자료
  • SPRING, SUMMER, FALL, WINTER는 크기를 측정할 수 없기 때문에 범주형 자료
favorite <- c('WINTER','SUMMER','SPRING','SUMMER','SUMMER',
              'FALL','FALL','SUMMER','SPRING','SPRING')
favorite
table(favorite)                  # 도수분포표 계산
table(favorite)/length(favorite) # 비율 출력
> favorite <- c('WINTER','SUMMER','SPRING','SUMMER','SUMMER',
+               'FALL','FALL','SUMMER','SPRING','SPRING')

> favorite
 [1] "WINTER" "SUMMER" "SPRING" "SUMMER" "SUMMER" "FALL"  
 [7] "FALL"   "SUMMER" "SPRING" "SPRING"

> table(favorite)                  # 도수분포표 계산
favorite
  FALL SPRING SUMMER WINTER 
     2      3      4      1 

> table(favorite)/length(favorite) # 비율 출력
favorite
  FALL SPRING SUMMER WINTER 
   0.2    0.3    0.4    0.1 
  • SUMMER를 선호하는 사람이 4명으로 가장 많고, WINTER가 1명으로 가장 적음
  • SUMMER를 선호하는 사람은 40%, WINTER는 10%임을 알 수 있음

막대 그래프의 작성

  • barplot의 main은 상단의 타이틀을 지정
ds <- table(favorite)
ds
barplot(ds, main='favorite season')
> ds <- table(favorite)

> ds
favorite
  FALL SPRING SUMMER WINTER 
     2      3      4      1 

> barplot(ds, main='favorite season')

Rplot

순서 변경

ds.new <- ds[c(2,3,1,4)]
ds.new
> ds.new <- ds[c(2,3,1,4)]

> ds.new
favorite
SPRING SUMMER   FALL WINTER 
     3      4      2      1 

원그래프의 작성

ds <- table(favorite)
ds
pie(ds, main='favorite season')

Rplot01

숫자로 표현된 범주형 자료

  • 남성을 1, 여성을 2로 표현해도 연산과 대소 비교가 의미가 없음
  • 마찬가지로 도수분포를 계산하고 막대그래프와 원그래프로 확인하면 됨
  • 아래 예시에서 1은 초록, 2는 빨강, 3은 파랑
favorite.color <- c(2,3,2,1,1,2,2,1,3,2,1,3,2,1,2)
ds <- table(favorite.color)
ds
barplot(ds, main='favorite color')
colors <- c('green','red','blue')
names(ds) <- colors                            # 자료값 1,2,3을 green, red, blue로 변경
ds
barplot(ds, main='favorite color', col=colors) # 색 지정 막대그래프
pie(ds, main='favorite color', col=colors)     # 색 지정 원그래프
> favorite.color <- c(2,3,2,1,1,2,2,1,3,2,1,3,2,1,2)

> ds <- table(favorite.color)

> ds
favorite.color
1 2 3 
5 7 3 

> barplot(ds, main='favorite color')

> colors <- c('green','red','blue')

> names(ds) <- colors                            # 자료값 1,2,3을 green, red, blue로 변경

> ds
green   red  blue 
    5     7     3 

Rplot02 Rplot03

단일변수 연속형 자료의 탐색

탐색

  • 평균과 중앙값
  • 사분위수
  • 산포
  • 히스토그램
  • 상자그림
  • 그룹이 있는 자료의 상자 그림

평균과 중앙값

평균

  • 전체를 대표할 수 있는 값
  • 자료의 값들을 모두 합산한 후 값들의 개수로 나눔
  • 중앙값과는 다름
  • 일부 큰 값이나 작은 값들에 영향을 많이 받음

중앙값

  • 특이한 값에 크게 영향을 받지 않음

절사평균

  • 평균이 특이한 값의 영향을 받는 것을 완화시키기 위해 제안됨
  • 하위 n%, 상위 n%의 값을 제외하고 중간에 있는 나머지 값들로만 평균을 계산
weight <- c(60,62,64,65,68,69)
weight.heavy <- c(weight,120)
weight
weight.heavy

mean(weight)                 # 평균
mean(weight.heavy)           # 평균

median(weight)               # 중앙값
median(weight.heavy)         # 중앙값

mean(weight, trim=0.2)       # 절사평균 (상하위 20% 제외)
mean(weight.heavy, trim=0.2) # 절사평균
> weight <- c(60,62,64,65,68,69)

> weight.heavy <- c(weight,120)

> weight
[1] 60 62 64 65 68 69

> weight.heavy
[1]  60  62  64  65  68  69 120

> mean(weight)                 # 평균
[1] 64.66667

> mean(weight.heavy)           # 평균
[1] 72.57143

> median(weight)               # 중앙값
[1] 64.5

> median(weight.heavy)         # 중앙값
[1] 65

> mean(weight, trim=0.2)       # 절사평균 (상하위 20% 제외)
[1] 64.75

> mean(weight.heavy, trim=0.2) # 절사평균
[1] 65.6
  • 120이라는 특이한 값 때문에 평균이 큰 차이가 나는 것을 확인할 수 있음
  • 중앙값, 절사평균은 큰 차이가 없음

사분위수

  • 자료에 있는 값들을 크기순으로 나열했을 때 이것을 4등분하는 지점에 있는 값들
  • 4등분하면 등분점이 3개 생김
  • 앞에서부터 1사분위수(Q1), 2사분위수(Q2), 3사분위수(Q3)라고 함
  • Q2는 중앙값과 동일
  • 4개 구간에는 각각 25%의 자료가 존재

예시

  • 100명의 학생을 대상으로 시험을 본 결과 Q1=60, Q2=80, Q3=90임
  • 25명의 학생은 성적이 60점 미만
  • 25명의 학생은 성적이 60~80점 사이
  • 25명의 학생은 성적이 80~90점 사이
  • 25명의 학생은 성적이 90점 이상
  • 90점 이상인 학생이 25명이나 되기 때문에 영어 시험 난이도가 낮았다.
  • 전체 50%의 학생이 80점 이상의 성적을 받았음
mydata <- c(60,62,64,65,68,69,120)
quantile(mydata)
quantile(mydata, (0:10)/10)
summary(mydata)
> mydata <- c(60,62,64,65,68,69,120)

> quantile(mydata)
   0%   25%   50%   75%  100% 
 60.0  63.0  65.0  68.5 120.0 

> quantile(mydata, (0:10)/10)
   0%   10%   20%   30%   40%   50%   60%   70%   80%   90% 
 60.0  61.2  62.4  63.6  64.4  65.0  66.8  68.2  68.8  89.4 
 100% 
120.0 

> summary(mydata)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  60.00   63.00   65.00   72.57   68.50  120.00 
  • 0%와 100%는 각각 최솟값, 최댓값임
  • (0:10)/10은 0~10의 정수를 10으로 나누라는 것, 구간을 몇개로 나눌지 결정하는 부분임
  • 이 결과는 0.1~1.0까지의 값이 되고 이를 백분율로 환산하면 10%~100%가 됨
  • 그래서 10%단위로 구간을 나누어 결과값이 출력됨
  • summary()는 사분위수, 최댓값, 최솟값, 평균을 함께 출력함

산포

  • 자료에 있는 값들이 퍼져 있는 정도를 말함
  • 분산과 표준편차를 가지고 파악 가능
  • 분산과 표준편차가 작으면 관측값들이 평균값 부근에 모여 있다는 것
  • 반대로 크면 평균값으로부터 멀리 흩어져서 분포한다는 것
mydata <- c(60,62,64,65,68,69,120)
var(mydata)         # 분산
sd(mydata)          # 표준편차
range(mydata)       # 값의 범위
diff(range(mydata)) # 최댓값, 최솟값의 차이
> mydata <- c(60,62,64,65,68,69,120)

> var(mydata)         # 분산
[1] 447.2857

> sd(mydata)          # 표준편차
[1] 21.14913

> range(mydata)       # 값의 범위
[1]  60 120

> diff(range(mydata)) # 최댓값, 최솟값의 차이
[1] 60
  • 최댓값과 최솟값의 차이가 크다는 것은 관측값들이 넓게 퍼져있다는 것이 되고, 반대는 좁게 모여 있다는 뜻이 됨

히스토그램

  • 막대그래프와 비슷한 그래프
  • 막대들이 붙어있으면 히스토그램, 떨어져있으면 막대그래프
  • 연속형 자료의 분포를 시각화할 때 사용
  • 막대의 면적도 의미가 있음
dist <- cars[,2]
hist(dist,                          # 자료
     main='Histogram for 제동거리', # 제목
     xlab='제동거리',               # x축 레이블
     ylab='빈도수',                 # y축 레이블
     border='blue',                 # 막대 테두리색
     col='green',                   # 막대 색
     las=2,                         # x축 글씨 방향(0~3)
     breaks=5)                      # 막대 개수 조절
  • breaks는 구간을 몇개로 나눌지 조절하는 역할
  • 20~40 사이의 값이 빈도수가 가장 높음

Rplot04

상자그림

  • 사분위수를 시각화
dist <- cars[,2]
boxplot(dist,main='자동차 제동거리')
  • y축 눈금이 20 단위
  • 제동거리 값이 0~120 범위에 있음
  • 정상범위의 제동거리는 1~95 사이
  • 정상범위 내에서는 상자가 아래쪽으로 치우쳐 있음
  • 이는 전체의 50%에 해당하는 값들이 아래쪽에 분포됨을 의미
  • 특이값 하나 관측됨

Rplot05

stats

  • 결과는 list 형태
  • $stats에는 정상범위 자료의 4분위수에 해당하는 값들이 표시
  • $n은 관측값들의 개수
  • $conf는 중앙값에 관련된 신뢰 구간
  • $out은 특이값의 목록
boxplot.stats(dist)
$stats
[1]  2 26 36 56 93

$n
[1] 50

$conf
[1] 29.29663 42.70337

$out
[1] 120

그룹이 있는 자료의 상자그림

boxplot(Petal.Length~Species, data=iris, main="품종별 꽃잎의 길이")
  • Petal.Length~Species는 Peteal.Length를 Species별로 나누어 boxplot을 그린다는 의미
  • 다음과 같이 사용할 수도 있음
boxplot(iris$Petal.Length~iris$Species, main="품종별 꽃잎의 길이")

Rplot06

한 화면에 그래프 여러 개 출력

par(mfrow=c(1,3)) # 1x3 가상화면 분할
barplot(table(mtcars$carb),
        main="Barplot of Carburetors",
        xlab="#of carburetors",
        ylab="frequency",
        col="blue")
barplot(table(mtcars$cyl),
        main="Barplot of Cylender",
        xlab="#of cylender",
        ylab="frequency",
        col="red")
barplot(table(mtcars$gear),
        main="Barplot of Gear",
        xlab="#of gears",
        ylab="frequency",
        col="green")
par(mfrow=c(1,1)) # 가상화면 분할 해제

Rplot07