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

Jesse John 2023년6월21일
  1. 주어진 기술의 적용 가능성
  2. 데이터 플로팅
  3. R에서 Shapiro-Wilk 정규성 테스트 사용
  4. R의 Quantile-Quantile 플롯
  5. 결론
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-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-값을 제공할 수 있습니다.

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

작가: Jesse John
Jesse John avatar Jesse John avatar

Jesse is passionate about data analysis and visualization. He uses the R statistical programming language for all aspects of his work.

관련 문장 - R Test