반응형

[R] 정규성 검정 (3) : 정량적 검정 (Shapiro-Wilk, Kolmogorov-Smirnov) - shapiro.test(), ks.test()

 

 많은 통계 분석에서 전제조건으로 데이터의 정규성(normality)을 요구하곤 한다. 검정하는 여러 방법이 다음과 같이 존재하지만, 그중 어떤 하나만으로도 결론 내릴 수는 없다.

 

정규성 검정 방법

1) QQ plot : 2022.08.11 - [기술 통계/R] - [R] 정규성 검정 (1) : QQplot - qqnorm()

2) 히스토그램: 2022.08.11 - [기술 통계/R] - [R] 정규성 검정 (2) : 히스토그램 - hist(), dnorm()

3) 통계적 검정

 

본 글에서는 정량적 검정(Shapiro-Wilk, Kolmogorov-Smirnov test)으로 검정하는 방법에 대해 확인해볼 것이다.

 

코드를 보여드리기에 앞서 워킹 디렉토리부터 지정하겠다.

워킹 디렉토리에 관한 설명은 다음 링크된 포스트에서 볼 수 있다.

2022.08.05 - [통계 프로그램 사용 방법/R] - [R] 작업 디렉토리 (Working Directory) 지정 - getwd(), setwd()

setwd("C:/Users/user/Documents/Tistory_blog")

 

*실습용 데이터는 아래 링크를 클릭하면 다운로드할 수 있습니다.

2022.08.04 - [공지사항 및 소개] - 분석용 데이터 (update 22.08.10)

 

분석용 데이터 (update 22.08.10)

2022년 08월 10일 버전입니다. 변수는 계속하여 추가될 예정입니다. 다음 카테고리에 있는 글에서 이용된 데이터입니다. - 기술 통계 - 통계 프로그램 사용 방법

medistat.tistory.com

 

데이터를 불러와 a에 객체로 저장하겠다.

데이터 불러오는 방법은 다음 링크에서 볼 수 있다.

2022.08.05 - [통계 프로그램 사용 방법/R] - [R] 데이터 불러오기 : EXCEL - read_excel(), read.xlsx()

2022.08.08 - [통계 프로그램 사용 방법/R] - [R] 데이터 불러오기 : CSV - read_csv(), read.csv(), fread()

2022.08.10 - [통계 프로그램 사용 방법/R] - [R] 데이터 불러오기 : SAS file (.sas7bdat) - read.sas7bdat(), read_sas()

 

install.packages("readr")
library("readr")
a<-read_csv("Data.csv")

 

1) Shapiro-Wilk test

a라는 객체에 있는 데이터 중 "ALT"로 Shapiro-Wilk test를 시행할 것이다. 코드는 다음과 같다.

#R 설치 시 기본으로 설치되는 패키지를 사용하므로 별도 설치가 필요 없다.

shapiro.test(a$ALT)

 

결과

	Shapiro-Wilk normality test

data:  a$ALT
W = 0.9982, p-value = 0.3749

 

2) Kolmogorov-Smirnov test

a라는 객체에 있는 데이터 중 "ALT"로 Kolmogorov-Smirnov test를 시행할 것이다. 코드는 다음과 같다.

#R 설치 시 기본으로 설치되는 패키지를 사용하므로 별도 설치가 필요 없다.

ks.test(a$ALT, "pnorm", mean=mean(a$ALT), sd=sd(a$ALT))

결과

	One-sample Kolmogorov-Smirnov test

data:  a$ALT
D = 0.015397, p-value = 0.9717
alternative hypothesis: two-sided

 

해석방법

초급자: p-value>0.05이므로 정규성을 따른다.

 

중급자:

 

귀무 가설과 대립 가설은 다음과 같다.

-귀무 가설: ALT는 정규성을 따른다.

-대립 가설: ALT는 정규성을 따르지 않는다.

 

이때 제 1종 오류는 다음과 같다.

제 1종 오류

=귀무 가설이 참인데도 기각하고 대립 가설을 택함

=ALT는 정규성을 따르는데도 따르지 않는다고 결론 내림

 

p-value는 제 1종 오류를 범할 확률을 의미하므로 다음과 같이 결론내릴 수 있다.

결론: 정규성을 따르는 것이 진실인데, 따르지 않는다고 결론내렸을 확률이 0.05보다 크다.

=정규성을 따르는 것이 진실인데, 따르지 않는다고 결론내린 것은 잘못일 수 있다.

=정규성을 따르지 않는다고는 할 수 없다.

 

고급자:

-(비록 본 데이터는 n수가 충분하지만) n수가 굉장히 적다면 정규성 검정을 잘 통과하므로 결과를 맹신해서는 안 된다.

-본 데이터의 n수는 1,000명으로 2,000명 미만이므로 Shapiro-Wilk test의 결과를 인용한다. (SAS 기준, 2,000명까지는 Shapiro-Wilk test을 계산해주고, Kolmogorov-Smirnov test는 2,000명 이상이 필요하다.)

-또한, QQplot과 히스토그램의 결과도 고려하여 정규성 여부를 판단해야 한다.



정규성 검정은 p-value가 0.05보다 크기를 바라게 되는 몇 안 되는 통계 검정 중 하나다.

많이 쓰이는 통계 분석 중 이런 검정은 세 가지가 있다

1) 정규성 검정 (Normality test): Shapiro-Wilk test, Kolmogorov-Smirnov test

2) Ordinal logistic regression의 proportional odds assumption 검정인 Score test

3) Cox regression의 proportional hazard assumption 검정인 Schoenfeld residual test

 

p-value가 0.05보다 클 때, 이 분석들의 결론은 "정규성을 위반한다고 볼 수는 없었다.", "비례 오즈(위험) 가정을 위반한다고 볼 수는 없었다." 라고 표현하게 된다.

 

R 정규성 검정 (정량적 검정) 정복 완료!

 

작성일: 2022.08.11.

최종 수정일: 2022.08.11.

이용 프로그램: R 4.1.3, RStudio v1.4.1717

운영체제: Windows 10

 

반응형

+ Recent posts