히스토그램(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 각 구간에 얼마만큼의 데이터가 속해 있는지를 확률로 나타낸 값이다.

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