ggplot2를 활용한 Q-Q plot 그리는 법

Giyu·2021년 12월 3일

Data Visualization with R

목록 보기
8/10
post-thumbnail

이번 시간에는 정규성 가정을 확인할 때 자주 쓰이는 그래프인 Q-Q plot을 그리는 방법에 대해서 소개하려고 합니다.


연속형 변수 1개에 대한 Q-Q plot을 그리기 위해서는 ggplot() 함수의 aes() 함수 안의 sample 인자(x 인자가 아닙니다!)에 원하는 연속형 변수명을 기입하고, geom_qq() 함수와 geom_qq_line() 함수를 더해주면 됩니다.

한 번 iris 데이터의 Sepal.Length라는 연속형 변수에 대한 Q-Q plot을 그려보도록 하겠습니다.

iris %>% ggplot(aes(sample = Sepal.Length))+ geom_qq() + geom_qq_line()

Sepal.Length에 대한 Q-Q plot이 정상적으로 잘 그려진 것을 보실 수 있습니다.


하지만 t-test나 one-way anova와 같은 통계 분석을 수행하기 전에는 먼저 정규성 가정을 만족하는 지 확인하기 위해 각 그룹 별로 정규성 검정을 하게 되는데, 이 경우에는 두 집단 혹은 여러 집단 별 연속형 종속변수에 대한 Q-Q plot을 그려야 합니다.

이러한 경우에는 앞서 소개하였던 코드에서 aes() 함수 안의 color 인자에 원하는 범주형 변수를 기입하면 됩니다.

한 번 Species(범주형 변수 - 3개의 level)에 따른 Sepal.Length에 대한 그룹 별 Q-Q plot을 그려보도록 하겠습니다.

iris %>% ggplot(aes(sample = Sepal.Length, color = Species)) + geom_qq() + geom_qq_line()

보시는 바와 같이 3개의 그룹 별 Sepal.Length에 대한 Q-Q plot이 잘 그려졌습니다.

다만 모든 Q-Q plot이 하나의 그림 안에 속해 있기 때문에, 만약 그룹의 수가 상당히 많을 경우에는 그래프가 복잡해질 가능성이 있습니다.

따라서 지금까지의 코드에 facet_grid(범주형 변수 ~. or . ~ 범주형 변수)를 추가해주면 각 그룹 별로 따로 분리해서 Q-Q plot을 그리게 됩니다.

iris %>% ggplot(aes(sample=Sepal.Length, color = Species)) + geom_qq() + geom_qq_line() + facet_grid(.~Species)

iris %>% ggplot(aes(sample=Sepal.Length, color = Species)) + geom_qq() + geom_qq_line() + facet_grid(Species ~.)

facet_grid() 함수를 사용해 그룹 별 Q-Q plot이 따로 그려진 것을 확인할 수 있으며, 각각의 그래프를 파악하기가 더 용이해졌습니다.


이상으로 ggplot2를 활용해 Q-Q plot을 그리는 방법에 대해서 알아보았습니다.

감사합니다.

profile
Data Analysis Log

0개의 댓글