안녕하세요! 데이터 분석을 하다 보면 “내 데이터가 정규분포를 따르는 걸까?” 하는 궁금증, 한 번쯤은 가져보셨을 거예요. 특히 통계 검정을 할 때 정규성 가정이 중요한 경우가 많아서 꼭 확인해야 할 부분이기도 하고요. 그래서 오늘은 R을 이용해서 데이터의 정규성을 검정하는 방법을 같이 알아보려고 해요!
샤피로-윌크 검정(Shapiro-Wilk test)과 QQ 그림을 통해 정규성을 어떻게 판단하는지, 그리고 실제 데이터에 적용하면 어떤 결과가 나오는지 살펴볼 거예요. R에서 `shapiro.test()` 함수와 `qqnorm()` 함수를 사용하는 방법을 자세히 알려드릴 테니, 함께 차근차근 따라 해 보면 정규성 검정, 쉽게 마스터할 수 있을 거예요!
샤피로-윌크 검정 이해하기
데이터 분석의 세계에 뛰어들면, 마치 미지의 숲을 탐험하는 기분이 들곤 하죠? 특히 통계 검정은 그 숲 속에서 길을 잃기 쉬운 함정 같기도 하고요. 하지만 걱정 마세요! 오늘 우리가 함께 살펴볼 샤피로-윌크 검정은 데이터의 정규성을 확인하는 강력한 나침반과 같답니다.^^ 이 검정을 제대로 이해하면 데이터 분석의 숲에서 더욱 확신 있는 발걸음을 내딛을 수 있을 거예요!
샤피로-윌크 검정이란?
샤피로-윌크 검정은 표본 데이터가 정규 분포를 따르는지 확인하기 위해 사용하는 통계적 방법이에요. 데이터가 정규 분포를 따른다는 가정은 t-검정, ANOVA, 회귀 분석 등 많은 통계적 분석 기법의 기본 전제 조건이기 때문에, 분석 전에 샤피로-윌크 검정을 통해 정규성을 확인하는 것은 정말 중요해요. 마치 집을 짓기 전에 땅을 다지는 것처럼 말이죠!
샤피로-윌크 검정의 작동 원리
그럼 샤피로-윌크 검정은 어떻게 작동하는 걸까요? 궁금하시죠?! 이 검정은 표본 데이터를 정렬한 후, 특정한 상수(W 계수)를 이용하여 검정 통계량(W)을 계산해요. 이 W 계수는 정규 분포의 이론적인 분위수와 표본 데이터의 순서 통계량 사이의 관계를 반영한 값이랍니다. 좀 어렵게 들릴 수 있지만, 핵심은 데이터가 정규 분포와 얼마나 유사한지를 수치화한 값이라는 거예요!
W 값과 p-value
W 값은 0과 1 사이의 값을 가지는데, 1에 가까울수록 데이터가 정규 분포를 따를 가능성이 높다는 것을 의미해요. 반대로 0에 가까워지면 정규 분포를 따르지 않을 가능성이 높아지죠. 예를 들어 W 값이 0.95라면 데이터가 정규 분포와 매우 유사하다는 것을 시사하고, 0.70이라면 정규 분포에서 꽤 벗어난 형태일 가능성이 크다는 것을 의미한답니다.
하지만 W 값만으로 판단을 내리는 것은 금물! p-value도 함께 확인해야 해요. p-value는 귀무가설(데이터가 정규 분포를 따른다)이 참일 때, 관측된 W 값보다 더 극단적인 값이 나타날 확률을 의미해요. 일반적으로 유의수준(α)을 0.05로 설정하고, p-value가 0.05보다 작으면 귀무가설을 기각하고 데이터가 정규 분포를 따르지 않는다고 판단하죠. 반대로 p-value가 0.05보다 크거나 같으면 귀무가설을 기각하지 못하고 데이터가 정규 분포를 따른다고 판단해요.
샤피로-윌크 검정 활용의 예
예를 들어, 샤피로-윌크 검정 결과 W=0.92, p-value=0.10이 나왔다고 가정해 볼게요. W 값이 1에 가까워서 정규 분포와 유사해 보이지만, p-value가 0.05보다 크기 때문에 데이터가 정규 분포를 따른다고 판단할 수 있어요. 반대로 W=0.85, p-value=0.01이라면, W 값은 1에서 좀 떨어져 있고 p-value는 0.05보다 작으므로 데이터가 정규 분포를 따르지 않는다고 판단하게 되는 거죠. 이해가 되시나요~?
표본 크기와 샤피로-윌크 검정
샤피로-윌크 검정은 표본 크기가 작을 때(대략 3~50개) 특히 유용해요. 표본 크기가 클수록 검정력이 높아져서 아주 작은 차이에도 정규성을 기각하는 경우가 발생할 수 있기 때문이에요. 표본 크기가 50개 이상인 경우에는 다른 정규성 검정 방법(예: Kolmogorov-Smirnov 검정, Anderson-Darling 검정)을 고려하는 것이 좋을 수도 있어요.
샤피로-윌크 검정의 한계
하지만 샤피로-윌크 검정에도 한계는 존재해요. 동일한 값이 여러 개 존재하는 경우 검정의 정확도가 떨어질 수 있고, 표본 데이터의 특성에 따라 결과가 민감하게 반응할 수도 있답니다. 따라서 샤피로-윌크 검정 결과만으로 정규성 여부를 단정 짓기보다는 QQ plot과 같은 시각적 검토를 병행하는 것이 좋다는 점, 꼭 기억해 두세요! 다음에는 QQ plot에 대해 자세히 알아보도록 할게요! 기대해 주세요!
QQ 그림으로 정규성 시각화
샤피로-윌크 검정처럼 숫자로 정규성을 판단하는 것도 좋지만, 눈으로 직접 확인하는 것만큼 확실한 건 없겠죠? 바로 이럴 때 QQ 그림(Quantile-Quantile Plot)이 엄청 유용해요! QQ 그림은 데이터의 분포가 정규분포를 따르는지 시각적으로 확인할 수 있게 도와주는 아주 강력한 도구랍니다.
쉽게 말해서, QQ 그림은 우리 데이터의 분위수들을 정규분포의 분위수들과 비교해서 그려요. 만약 데이터가 정규분포를 따른다면, 이 점들은 대각선 위에 옹기종기 모여있을 거예요. 마치 일렬로 줄 서 있는 병정들처럼요! 하지만 데이터가 정규분포를 따르지 않는다면, 이 점들은 대각선에서 벗어나 삐뚤빼뚤하게 흩어져 있을 거예요.
QQ 그림 해석하기
자, 그럼 QQ 그림을 어떻게 해석하는지 좀 더 자세히 알아볼까요?
- 대각선: 이 선은 기준선이에요. 데이터가 완벽하게 정규분포를 따른다면 모든 점들이 이 선 위에 딱! 붙어있어야 해요.
- 점들의 분포: 점들이 대각선을 따라 직선 형태로 분포되어 있다면, 데이터가 정규분포를 따른다고 볼 수 있어요.
- 점들의 이탈: 만약 점들이 대각선에서 심하게 벗어나 있다면, 데이터가 정규분포에서 벗어난다는 것을 의미해요. 특히 양 끝단에서 점들이 휘어져 있다면 데이터의 꼬리 부분이 정규분포와 다르다는 것을 보여주는 거죠! 예를 들어, 왼쪽 아래 부분의 점들이 아래로 휘어져 있다면, 데이터의 왼쪽 꼬리가 정규분포보다 두껍다는 것을 의미하고, 반대로 오른쪽 위 부분의 점들이 위로 휘어져 있다면, 데이터의 오른쪽 꼬리가 정규분포보다 두껍다는 것을 의미해요.
R로 QQ 그림 그리기
R에서는 qqnorm()
함수를 사용해서 QQ 그림을 간단하게 그릴 수 있어요. qqline()
함수를 사용하면 기준선까지 추가할 수 있으니 정말 편리하죠?! 예를 들어, 100개의 랜덤 데이터를 생성해서 QQ 그림을 그려볼게요.
# 평균이 0이고 표준편차가 1인 정규분포를 따르는 100개의 랜덤 데이터 생성
data <- rnorm(100)
# QQ 그림 그리기
qqnorm(data)
# 기준선 추가
qqline(data)
이 코드를 실행하면, 100개의 랜덤 데이터에 대한 QQ 그림이 나타날 거예요. 대부분의 점들이 기준선 근처에 모여 있다면 데이터가 정규분포를 따른다고 해석할 수 있어요. 물론 약간의 랜덤적인 변동 때문에 완벽하게 직선 위에 있지는 않을 수도 있지만요!
균등분포 데이터의 QQ 그림
하지만 만약 데이터가 균등분포를 따른다면 어떨까요? runif()
함수를 이용해서 균등분포를 따르는 데이터를 생성하고 QQ 그림을 그려보면, 점들이 대각선에서 벗어나 S자 모양처럼 휘어지는 것을 볼 수 있을 거예요! 이처럼 QQ 그림을 통해 데이터의 분포 형태를 시각적으로 파악할 수 있다는 것이 정말 큰 장점이죠!
# 0과 1 사이의 균등분포를 따르는 100개의 랜덤 데이터 생성
data_unif <- runif(100)
# QQ 그림 그리기
qqnorm(data_unif)
# 기준선 추가
qqline(data_unif)
이렇게 QQ 그림은 데이터의 정규성을 시각적으로 판단하는 데 매우 유용한 도구예요. 샤피로-윌크 검정과 함께 사용하면 데이터의 정규성을 더욱 꼼꼼하게 검토할 수 있답니다. 실제 데이터 분석에서는 QQ 그림을 통해 데이터의 분포 형태를 먼저 파악하고, 샤피로-윌크 검정으로 통계적인 유의성을 확인하는 것이 일반적이에요. 두 가지 방법을 함께 사용하면 데이터의 정규성에 대해 더욱 확신을 가질 수 있겠죠?! 다음에는 실제 데이터를 가지고 QQ 그림과 샤피로-윌크 검정을 어떻게 적용하는지 살펴볼 거예요. 기대해주세요!
실제 데이터 적용 예시
자, 이제 샤피로-윌크 검정과 QQ 그림을 배웠으니! 실제 데이터에 적용해볼까요? ^^ R에 기본적으로 내장된 mtcars
데이터셋을 사용해서 연비(mpg
) 변수의 정규성을 한번 검토해 보겠습니다! 두근두근~?
# mtcars 데이터셋 불러오기
data(mtcars)
# mpg 변수 추출
mpg <- mtcars$mpg
# mpg 변수의 히스토그램 그리기
hist(mpg, main="연비(mpg) 분포", xlab="연비(mpg)", ylab="빈도", col="lightblue")
히스토그램을 그려보면 대략적인 분포를 볼 수 있죠. 🧐 음… 뭔가 살짝 왼쪽으로 치우친 것 같기도 하고… 아닌 것 같기도 하고… 애매하네요?! 이럴 때 바로 샤피로-윌크 검정을 사용하면 됩니다!
# 샤피로-윌크 검정 수행
shapiro.test(mpg)
# Shapiro-Wilk normality test
# data: mpg
# W = 0.94756, p-value = 0.1229
p-value가 0.1229로 나왔네요! 일반적으로 유의수준 0.05를 기준으로 판단하니까, p-value가 0.05보다 크죠? 그럼 정규분포를 따른다고 볼 수 있겠네요! 하지만! 샤피로-윌크 검정만으로는 뭔가 부족한 느낌적인 느낌…?! 그래서 QQ 그림도 같이 그려보는 겁니다!
# QQ 그림 그리기
qqnorm(mpg, main = "QQ plot of mpg")
qqline(mpg)
QQ 그림을 보면… 데이터 포인트들이 대각선을 따라 분포하고 있죠? 완벽하게 직선은 아니지만, 크게 벗어나는 점도 없어 보이네요. 샤피로-윌크 검정 결과와 함께 생각해 보면, mpg 변수는 정규분포를 따른다고 가정해도 괜찮을 것 같습니다! 😄
mtcars 데이터셋의 wt 변수 분석
자, 이번에는 mtcars
데이터셋의 wt
변수(중량)를 살펴볼까요? 같은 방식으로 히스토그램, 샤피로-윌크 검정, QQ 그림을 그려보겠습니다.
# wt 변수 추출
wt <- mtcars$wt
# wt 변수의 히스토그램 그리기
hist(wt, main="중량(wt) 분포", xlab="중량(wt)", ylab="빈도", col="lightgreen")
# 샤피로-윌크 검정 수행
shapiro.test(wt)
# Shapiro-Wilk normality test
# data: wt
# W = 0.94385, p-value = 0.09267
# QQ 그림 그리기
qqnorm(wt, main = "QQ plot of wt")
qqline(wt)
wt
변수의 p-value는 0.09267로, mpg
변수보다 살짝 작지만 여전히 0.05보다 크네요. QQ 그림에서도 데이터 포인트들이 대각선을 크게 벗어나지 않고 분포하고 있습니다. mpg
변수처럼 완벽한 정규분포는 아니지만, 정규분포에 가깝다고 볼 수 있겠죠?
데이터 개수가 많을 경우
하지만 만약 데이터의 개수가 매우 많다면? (예를 들어, 10,000개 이상?!) 샤피로-윌크 검정의 p-value는 아주 작은 차이에도 민감하게 반응해서 정규분포를 따르지 않는다고 판단할 수도 있어요. 😩 이럴 때는 QQ 그림을 보고 판단하는 것이 더 중요해집니다! QQ 그림에서 데이터 포인트들이 대각선을 따라 잘 분포하고 있다면, 정규분포 가정을 만족한다고 볼 수 있습니다.
극단적인 값(outlier)이 있는 경우
또 다른 예시로, 극단적인 값(outlier)이 있는 경우를 생각해 볼까요? 극단적인 값은 QQ 그림에서 대각선에서 크게 벗어난 점으로 나타납니다. 이런 경우 극단적인 값이 정규성 검정 결과에 영향을 미칠 수 있으므로, 극단적인 값이 왜 발생했는지, 그리고 어떻게 처리해야 할지 고민해봐야 합니다. 🤔 데이터 전처리 과정에서 극단적인 값을 제거하거나 변환하는 방법도 고려해 볼 수 있겠죠!
이렇게 다양한 데이터를 직접 분석해 보면서 샤피로-윌크 검정과 QQ 그림을 어떻게 해석해야 하는지 감을 잡는 것이 중요합니다! 데이터 분석은 마치 탐정처럼 단서를 찾아가는 과정과 같아요. 🕵️♀️ 여러 가지 도구를 사용해서 데이터의 비밀을 파헤쳐 보세요! 😉 그리고 항상 데이터의 특징과 분석 목적을 고려해서 정규성 검정 결과를 해석해야 한다는 것을 잊지 마세요! 👍
정규성 검정 결과 해석 및 후속 조치
자, 이제 드디어! 샤피로-윌크 검정과 QQ 그림을 통해 얻은 결과를 어떻게 해석해야 하는지, 그리고 그 결과에 따라 어떤 조치를 취해야 하는지 알아볼 시간이에요!
샤피로-윌크 검정 결과 해석
먼저 샤피로-윌크 검정 결과부터 살펴보도록 할게요. 이 검정은 p-value라는 값을 제공하는데, 이 p-value가 0.05보다 작으면 어떻게 될까요? 네, 맞아요! “데이터가 정규분포를 따르지 않는다”라는 귀무가설을 기각하게 됩니다. 다시 말해, 우리 데이터는 정규분포를 따르지 않는다는 강력한 증거가 있다는 뜻이죠! 반대로, p-value가 0.05보다 크다면? “데이터가 정규분포를 따르지 않는다”라는 귀무가설을 기각할 수 없게 돼요. 즉, 데이터가 정규분포를 따른다고 볼 수 있다는 거죠. 하지만! 주의해야 할 점이 있어요. p-value가 크다고 해서 데이터가 무조건 정규분포를 따른다고 단정 지을 수는 없답니다. 단지 정규분포를 따르지 않는다는 충분한 증거가 없을 뿐이에요. 이 부분 꼭 기억해 두세요~!
QQ 그림 결과 해석
QQ 그림은 어떨까요? QQ 그림에서 점들이 직선에 가깝게 분포되어 있다면? 데이터가 정규분포를 따른다고 해석할 수 있어요. 하지만 점들이 직선에서 크게 벗어나 휘어지거나 꼬리가 길게 늘어진 모양이라면? 데이터가 정규분포에서 벗어난다는 것을 의미한답니다. 특히 꼬리 부분이 두껍거나 얇은 경우, 데이터의 첨도(kurtosis)가 정규분포와 다르다는 것을 암시하죠. 첨도는 분포의 뾰족한 정도를 나타내는 척도인데, 정규분포의 첨도는 3입니다. 첨도가 3보다 크면 leptokurtic(뾰족한 분포), 3보다 작으면 platykurtic(납작한 분포)라고 해요. 이런 용어들도 알아두면 데이터 분석에 도움이 될 거예요!
검정 결과에 따른 후속 조치
그렇다면 검정 결과를 바탕으로 어떤 후속 조치를 취해야 할까요? 만약 데이터가 정규분포를 따른다면? t-검정, ANOVA 등 정규성을 가정하는 통계적 분석 방법을 사용할 수 있어요. 하지만 데이터가 정규분포를 따르지 않는다면? 몇 가지 선택지가 있어요. 첫째, 데이터 변환을 시도해 볼 수 있어요. 로그 변환, 제곱근 변환 등을 통해 데이터를 정규분포에 가깝게 만들어 보는 거죠. 둘째, 비모수적 검정 방법을 사용할 수 있어요. 비모수적 검정은 데이터의 분포에 대한 가정이 덜 엄격해서 정규분포를 따르지 않는 데이터에도 적용할 수 있답니다. Mann-Whitney U 검정, Kruskal-Wallis 검정 등이 대표적인 비모수적 검정 방법이에요. 셋째, 정규성 가정을 완화한 강건한(robust) 통계 기법을 사용하는 방법도 있어요. trimmed mean, winsorized mean 등이 이에 해당하죠.
후속 조치 선택의 중요성
데이터의 특성과 분석 목적에 따라 적절한 후속 조치를 선택하는 것이 중요해요. 예를 들어, 데이터의 왜도(skewness)가 심한 경우 로그 변환을 시도해 볼 수 있고, 표본 크기가 작은 경우에는 비모수적 검정을 고려해 볼 수 있죠. 표본 크기가 충분히 크다면 (일반적으로 30 이상) 중심극한정리에 따라 정규성 가정이 완화될 수 있으니, 이 점도 염두에 두면 좋을 것 같아요!
실제 데이터 예시
자, 이제 실제 데이터를 가지고 예시를 들어볼게요. 100명의 학생들의 키 데이터를 수집했다고 가정해 봅시다. 샤피로-윌크 검정 결과 p-value가 0.07로 나왔고, QQ 그림에서도 점들이 직선에 가깝게 분포되어 있다면? 이 경우 데이터가 정규분포를 따른다고 볼 수 있겠죠? 그렇다면 학생들의 키 평균을 비교하는 t-검정을 수행할 수 있을 거예요. 반대로, p-value가 0.01로 나왔고, QQ 그림에서 점들이 직선에서 크게 벗어나 있다면? 데이터가 정규분포를 따르지 않는다는 것을 의미하겠죠? 이 경우 로그 변환을 시도해 보거나, Mann-Whitney U 검정과 같은 비모수적 검정 방법을 사용할 수 있을 거예요.
데이터 분석 팁
좀 더 팁을 드리자면, 데이터의 정규성은 분석의 목적에 따라 다르게 해석될 수 있다는 점을 기억해주세요. 예를 들어, 선형 회귀 분석에서는 잔차(residuals)의 정규성이 중요하고, t-검정에서는 각 그룹의 데이터가 정규분포를 따르는 것이 중요해요. 또한, 데이터의 정규성을 검정하는 방법은 샤피로-윌크 검정과 QQ 그림 외에도 Kolmogorov-Smirnov 검정, Anderson-Darling 검정 등 다양한 방법들이 존재한답니다. 각 검정 방법의 특징과 장단점을 이해하고 상황에 맞는 검정 방법을 선택하는 것이 중요해요.
R에서 데이터 분석하는 거, 처음엔 막막하게 느껴질 수 있죠? 하지만 오늘 우리 함께 샤피로-윌크 검정이랑 QQ 그림으로 정규성 검정하는 법을 살펴봤어요. 어때요, 이제 조금 자신감이 생겼나요? 실제 데이터로 연습해보니까 더 이해가 쏙쏙 되지 않았어요? 정규성 검정 결과를 어떻게 해석하고, 그 다음엔 어떤 분석을 해야 하는지도 알아봤으니 이제 여러분의 데이터 분석 실력이 한 단계 업그레이드됐을 거예요! 앞으로 데이터 분석하면서 궁금한 점이 생기면 언제든 다시 찾아와 주세요. 함께 차근차근 알아가면 어렵지 않아요! 다음에 또 만나요!
답글 남기기