R에서 데이터의 정규성 테스트
많은 통계 테스트 또는 기술은 우리가 가지고 있는 샘플이 정규 분포와 관련이 있다고 가정합니다. 일부 테스트 또는 절차에서는 샘플이 정규 분포된 모집단에서 추출되었다고 가정할 수 있습니다.
다른 사람들은 데이터의 무작위 오류(잔차)가 정규 분포에서 나온 것이라고 가정할 수 있습니다. R은 데이터(원본 또는 잔차)가 정규 분포를 따르는지 여부를 테스트하는 여러 가지 방법을 제공합니다.
이 기사에서는 그룹화되지 않은 일변량 데이터의 정규성을 테스트하는 세 가지 간단하고 널리 사용되는 기술을 살펴봅니다.
예제 코드:
# First, we will create the data for our demonstrations.
# Large normal population.
set.seed(951)
p = rnorm(100000,100,5)
# Plot the population.
hist(p, breaks=100)
# Take a sample from the normal population.
set.seed(753)
s1 = sample(p, size=125, replace=FALSE)
# Create a non-normal sample.
# A vector (population).
v = c(31:81)
# Non-normal sample.
set.seed(159)
s2 = sample(v, 2000, replace=TRUE)
주어진 기술의 적용 가능성
다음 기술은 우리가 사용할 수 있는 데이터를 위한 것입니다. 데이터가 허용 가능한 정상인지 여부를 알려줍니다.
따라서 사용 가능한 데이터를 결론짓는 데에만 사용됩니다.
특히 데이터(표본)를 취한 모집단에 대해 결론을 내릴 수 없습니다. 이러한 결론은 샘플을 얻기 위해 사용된 샘플링 기술과 관련된 통계 이론에 따라 달라집니다.
데이터 플로팅
출발점으로 적합한 질적 접근 방식부터 시작할 것입니다. 간단한 히스토그램은 데이터가 정규 곡선과 같은 종 모양인지 여부를 보여줍니다.
예제 코드:
# Plot the sample from the normal population.
hist(s1, breaks=25)
# Plot the non-normal sample.
hist(s2, breaks=25)
정규 모집단에서 추출한 표본의 그림입니다.
비정규 샘플의 도표.
우리는 정규 모집단의 표본이 대략적인 종 모양을 가지고 있음을 발견했습니다. 비정규 샘플은 사각형과 유사합니다.
R에서 Shapiro-Wilk 정규성 테스트 사용
데이터 정규성에 대한 Shapiro-Wilk 테스트는 널리 사용되는 통계 테스트입니다.
shapiro.test()
함수는 3개에서 5000개 요소의 데이터 벡터를 사용합니다. 보다 정확하게는 누락되지 않은 요소 수에 대한 벡터의 범위입니다.
테스트는 데이터가 정상이라고 가정합니다. 그것이 귀무가설입니다.
W-statistic
및 p-value
를 반환합니다. 1에 가까운 W-statistic
은 분포가 거의 정상임을 의미합니다.
그러나 이 해석은 반환된 p-값
과 결합되어야 합니다.
0.05보다 큰 p-값
은 샘플이 정규 분포를 따른다는 결론을 뒷받침합니다.
예제 코드:
# Run the Shapiro-Wilk test on the samples.
# Sample from normal population.
shapiro.test(s1)
# Non-normal sample.
shapiro.test(s2)
출력:
> # Sample from normal population.
> shapiro.test(s1)
Shapiro-Wilk normality test
data: s1
W = 0.99353, p-value = 0.8383
> # Non-normal sample.
> shapiro.test(s2)
Shapiro-Wilk normality test
data: s2
W = 0.95117, p-value < 2.2e-16
우리는 정규 모집단의 샘플이 높은 W-statistic
과 높은 p-value
를 가지고 있음을 발견했습니다. 표본은 정규 분포를 거의 따릅니다.
그러나 예상한 대로 비정규 표본의 p-값
은 매우 낮습니다. 표본이 정규 분포를 따르지 않음을 확인합니다.
R의 Quantile-Quantile 플롯
Quantile-Quantile Plot(Q-Q
플롯이라고도 함)은 정규성을 테스트하는 또 다른 정성적 기법입니다.
이 테스트에서 샘플 데이터의 분위수는 표준 정규 분포의 해당 분위수에 대해 표시됩니다. 분위수 사이에 충분한 선형 상관관계가 있는 경우 두 분포가 비슷합니다. 샘플 데이터는 정규 분포를 따릅니다.
그래프로 볼 때 플롯 결과가 거의 직선이면 표본이 거의 정상이라는 결론을 뒷받침합니다.
qqnorm()
함수는 R에서 Q-Q
플롯을 생성합니다.
예제 코드:
# Plot the Q-Q plots for both the samples.
# Q-Q plot of sample from the normal population.
qqnorm(s1)
# Q-Q plot for the non-normal sample.
qqnorm(s2)
정규 모집단의 표본에 대한 ‘Q-Q’ 플롯. 그래프는 거의 직선에 가깝습니다.
비정규 샘플의 ‘Q-Q’ 플롯. 플롯은 곡선입니다. 샘플이 정상이 아니었습니다.
결론
실제로 위의 세 가지 접근 방식은 모두 상호 보완적입니다. Shapiro-Wilk 테스트는 표본 크기가 매우 클 때 매우 낮은 p-값
을 제공할 수 있습니다.
시각적 기술은 올바른 결론을 내리는 데 도움이 됩니다.