더북(TheBook)

히스토그램(hist)

데이터의 분포를 알아보는 데 유용한 또 다른 그래프는 히스토그램이다. 히스토그램은 값의 범위마다 빈도를 표시한 그래프다.

표 6-24 히스토그램

hist : 히스토그램을 그린다.

hist(
  x,  # 히스토그램을 그릴 값의 벡터
  # breaks는 히스토그램을 그리기 위해 데이터를 어떻게 나눌지를 지정하는 데 사용한다.
  # 기본값은 Sturge, n일 때 막대의 너비를 ⌈log2(n)+1⌉로 정한다.
  # breaks에 데이터를 나눌 구분 값들을 저장한 벡터,
  # 데이터를 나눌 구분 값들을 계산하는 함수 등을 대신 지정할 수 있다.
  breaks="Struge",
  # freq가 지정되지 않거나 이 값이 TRUE면 데이터 빈도수에 히스토그램이 그려진다.
  # FALSE면 데이터의 확률 밀도를 그린다.
  freq=NULL,
  ...
)

반환 값은 “histogram” 객체로, 히스토그램의 다양한 통계 정보가 저장되어 있다.

다음은 iris$Sepal.Width에 대한 히스토그램을 그리는 예다.

> hist(iris$Sepal.Width)
그림 6-32 iris$Sepal.Width의 히스토그램
그림 6-32 iris$Sepal.Width의 히스토그램

hist( )의 주요 파라미터 중 하나는 freq다. freq의 기본값은 NULL이며, 값을 지정하지 않으면 히스토그램 막대가 각 구간별 데이터의 개수(즉, 빈도)로 그려진다. 만약 이 값이 FALSE면 다음 코드에서 보다시피 각 구간의 확률 밀도11 가 그려진다. 확률 밀도므로 막대 너비의 합이 1이 된다.

> hist(iris$Sepal.Width, freq=FALSE)
그림 6-33 iris$Sepal.Width의 히스토그램
그림 6-33 iris$Sepal.Width의 히스토그램

히스토그램을 그리면서 계산된 다양한 통계 값은 hist( )의 반환 값에 리스트로 저장되어 있다. 예를 들어, 다음 코드처럼 hist( )의 반환 값을 사용해 density 값의 합이 1임을 확인해볼 수 있다.

> (x <- hist(iris$Sepal.Width, freq=FALSE))
$breaks
[1] 2.0 2.2 2.4 2.6 2.8 3.0 3.2 3.4 3.6 3.8 4.0 4.2 4.4

$counts
[1] 4 7 13 23 36 24 18 10 9 3 2 1

$density
[1] 0.13333333 0.23333333 0.43333333 0.76666667 1.20000000 0.80000000 0.60000000 0.33333333 0.30000000
[10] 0.10000000 0.06666667 0.03333333

$mids
[1] 2.1 2.3 2.5 2.7 2.9 3.1 3.3 3.5 3.7 3.9 4.1 4.3

$xname
[1] "iris$Sepal.Width"

$equidist
[1] TRUE

attr(,"class")
[1] "histogram"

> sum(x$density) * 0.2  # x$breaks를 보면 막대의 너비가 0.2임을 알 수 있다.
[1] 1

11 각 구간에 얼마만큼의 데이터가 속해 있는지를 확률로 나타낸 값이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.