밀도 그림(density)
데이터의 분포를 살펴보는 그래프로는 히스토그램이 가장 잘 알려져 있지만, 히스토그램은 막대를 그리는 구간bin의 너비를 어떻게 잡는지에 따라 전혀 다른 모양이 될 수 있다는 단점이 있다. density( )로 그리는 밀도 그림은 막대의 너비를 가정하지 않고 모든 점에서 데이터의 밀도를 추정하는 커널 밀도 추정kernel density estimation[3] 방식을 사용하여 이러한 문제를 피한다.
density : 커널 밀도 추정 |
density(
x # 커널 밀도를 추정할 데이터
)
반환 값은 밀도에 대한 데이터다. 이 값을 plot( )에 주면 밀도 그림을 그릴 수 있다. |
rug : 그래프의 X 축에 데이터를 1차원으로 표시한다. |
rug(
x # 숫자 벡터
)
|
다음은 iris$Sepal.Width 데이터에 대한 커널 밀도 추정 그림을 그린 예다.
> plot(density(iris$Sepal.Width))
![그림 6-34 iris$Sepal.Width의 커널 밀도 추정 그림](https://thebook.io/img/006723/292_1.jpg)
밀도 그림은 히스토그램과 같이 그릴 수 있다. plot( ) 대신 lines( )를 사용해 히스토그램 위에 선으로 밀도 그림을 그리면 된다.
> hist(iris$Sepal.Width, freq=FALSE) > lines(density(iris$Sepal.Width))
![그림 6-35 iris$Sepal.Width에 대한 히스토그램과 밀도 그림](https://thebook.io/img/006723/292_2.jpg)
밀도 그림에 rug( ) 함수를 사용하면 실제 데이터의 위치를 X 축 위에 표시할 수 있다. 이때, 데이터가 중첩되는 경우가 많다면 jitter( )를 같이 사용해 값이 구분되도록 한다.
> plot(density(iris$Sepal.Width)) > rug(jitter(iris$Sepal.Width))
![그림 6-36 iris$Sepal.Width의 밀도 그림과 rug( )를 사용한 데이터 표시](https://thebook.io/img/006723/293.jpg)