HOWTO · R

R에서 데이터의 정규성 테스트

이 문서에서는 R에서 그룹화되지 않은 일변량 데이터의 정규성을 평가하는 세 가지 기술을 보여줍니다. 시각적으로 히스토그램 또는 Q-Q 플롯을 사용하여 정규성을 평가할 수 있습니다. 정량적 측정을 위해 널리 사용되는 Shapiro-Wilk 테스트를 사용할 수 있습니다.

이 페이지의 내용

많은 통계 테스트 또는 기술은 우리가 가지고 있는 샘플이 정규 분포와 관련이 있다고 가정합니다. 일부 테스트 또는 절차에서는 샘플이 정규 분포된 모집단에서 추출되었다고 가정할 수 있습니다.

다른 사람들은 데이터의 무작위 오류(잔차)가 정규 분포에서 나온 것이라고 가정할 수 있습니다. 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-statisticp-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 도표

비정규 샘플의 ‘Q-Q’ 플롯. 플롯은 곡선입니다. 샘플이 정상이 아니었습니다.

비정규 샘플의 Q-Q 플롯

결론

실제로 위의 세 가지 접근 방식은 모두 상호 보완적입니다. Shapiro-Wilk 테스트는 표본 크기가 매우 클 때 매우 낮은 p-값을 제공할 수 있습니다.

시각적 기술은 올바른 결론을 내리는 데 도움이 됩니다.