Loading [MathJax]/jax/output/CommonHTML/jax.js
반응형

[R] 고급 Q-Q Plot - Van der Waerden, Rankit, Tukey, Blom

다음 글을 읽고 와야 이해하기 편하므로 먼저 읽고 올 것을 권한다.

2022.08.12 - [통계 이론] - [이론] Q-Q Plot (Quantile-Quantile Plot)

 

[이론] Q-Q Plot (Quantile-Quantile Plot)

[이론] Q-Q Plot (Quantile-Quantile Plot) 정규성을 검정할 때 Q-Q Plot을 쓰곤 한다. 그런데 이런 궁금증이 들 수 있다. 왜 Q-Q Plot이 직선에 가까운 것이 정규성을 따른다는 뜻인가? 이에 대해 조목조목..

medistat.tistory.com

 

Q-Q Plot의 이론에서 상대적 위치를 대칭적으로 정하는 방법이 여럿 있다고 언급했다. 본 글에서는 R에서 권하는 방법이 아니라, 특정 방법을 지정하여 Q-Q Plot을 그리는 법에 대해 소개하겠다.

 

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

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

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.11)

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

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) Van der Waerden 방법

Van der Waerden방법은 kn+1이라는 수식을 사용한다.

 

코드

ALT_Data<-sort(a$ALT)
QQ_Van<-(c(1:length(ALT_Data)))/(length(ALT_Data)+1)
Z_Van<-qnorm(QQ_Van,0,1)
plot(Z_Van,ALT_Data)

ALT_Data<-sort(a$ALT) : a라는 데이터셋의 ALT 변수를 가져와 오름차순으로 정렬하여 ALT_Data에 저장한다.
QQ_Van<-(c(1:length(ALT_Data)))/(length(ALT_Data)+1) : Van der Waerden 수식의 n에 해당하는 데이터셋의 수를 의미한다. 우리 데이터에는 1,000명의 정보가 있으므로, 이는 1,000와 같다.

QQ_Van<-(c(1:length(ALT_Data)))/(length(ALT_Data)+1) : 1부터 1,000까지 1,001로 나누어 이를 QQ1에 저장한다.

Z_Van<-qnorm(QQ_Van,0,1) : 정규분포 상 부터 적분했을 때 QQ1의 각 값과 같아지는 Z값들을 구해 Z1에 저장한다.
plot(Z_Van,ALT_Data) : Z1과 ALT_Data로 plot을 그린다.

 

결과

2) Rankit 방법

Rankit 방법은 k12n이라는 수식을 사용한다.

 

코드

ALT_Data<-sort(a$ALT)
QQ_Rankit<-(c(1:length(ALT_Data))-1/2)/length(ALT_Data)
Z_Rankit<-qnorm(QQ_Rankit,0,1)
plot(Z_Rankit,ALT_Data)

결과

3) Tukey 방법

Tukey 방법은 k13n+13이라는 수식을 사용한다.

 

코드

ALT_Data<-sort(a$ALT)
QQ_Tukey<-(c(1:length(ALT_Data))-1/3)/(length(ALT_Data)+1/3)
Z_Tukey<-qnorm(QQ_Tukey,0,1)
plot(Z_Tukey,ALT_Data)

결과

4) Blom 방법

Blom 방법은 k38n+14이라는 수식을 사용한다.

 

코드

ALT_Data<-sort(a$ALT)
QQ_Blom<-(c(1:length(ALT_Data))-3/8)/(length(ALT_Data)+1/4)
Z_Blom<-qnorm(QQ_Blom,0,1)
plot(Z_Blom,ALT_Data)

결과

 지금까지의 결과를 보면 알겠지만, 그림의 차이를 찾아볼 수 없을 정도로 거의 동일하다. 이렇게 n수가 충분하면 어떤 방법을 고르든 거의 똑같은 결과를 내주므로 적용할 방법에 대해 크게 연연할 필요가 없다.

 

[R] 고급 Q-Q Plot 정복 완료!

 

작성일: 2022.08.16.

최종 수정일: 2022.08.16.

이용 프로그램: R 4.1.3

RStudio v1.4.1717

RStudio 2021.09.1+372 "Ghost Orchid" Release 

운영체제: Windows 10, Mac OS 10.15.7

반응형
반응형

[SAS] 정규성 검정 - PROC UNIVARIATE

 

 

 많은 통계 분석에서 전제조건으로 데이터의 정규성(normality)을 요구하곤 한다. SAS로 정규성 검정을 하는 방법을 살펴보고자 한다.

 

라이브러리를 지정하고 데이터를 불러온다

라이브러리 지정 방법 :2022.08.05 - [통계 프로그램 사용 방법/SAS] - [SAS] 라이브러리 만들기 - LIBNAME

데이터 불러오는 방법: 2022.08.05 - [통계 프로그램 사용 방법/SAS] - [SAS] 데이터 불러오기 및 저장하기 - PROC IMPORT, PROC EXPORT

 

*라이브러리 지정하기;
LIBNAME hong "C:/Users/User/Documents/Tistory_blog";

*데이터 불러오기;
PROC IMPORT
DATAFILE="C:\Users\user\Documents\Tistory_blog\Data.xlsx"
DBMS=EXCEL
OUT=hong.df
REPLACE;
RUN;

 

코드

데이터 중 ALT라는 변수로 정규성을 검정하고자 할 때 코드는 다음과 같다.

PROC UNIVARIATE DATA=hong.df NORMAL PLOT;
VAR ALT;
HISTOGRAM ALT/ NORMAL (MU=EST SIGMA=EST);
RUN;

PROC UNIVARIATE : 변수에 대해 알아보는 코드를 작성하겠다.

DATA=hong.df : 데이터는 hong이라는 라이브러리 내에 있는 df를 사용하겠다.

NORMAL : 정규성 검정을 시행해라.

PLOT : 히스토그램과 QQ plot을 그려라
VAR ALT : 분석할 변수는 ALT다
HISTOGRAM ALT : ALT의 히스토그램도 그려라

/ NORMAL (MU=EST SIGMA=EST) : 히스토그램에 정규분포 곡선도 그리는데, 정규분포 곡선의 평균은 ALT 데이터로부터 계산한 평균이고, 표준편차도 ALT 데이터의 표준편차다.

 

1) Q-Q plot

결과

해석방법

데이터가 직선상에 있음: 정규성 따름

데이터가 직선에서 벗어나 있음: 정규성 따르지 않음

 

따라서, "대부분의 데이터들이 일직선 상에 있으므로 정규성을 따른다고 할 수 있다."

 

Q-Q plot 이론은 다음 링크에서 확인할 수 있다.

2022.08.12 - [통계 이론] - [이론] Q-Q Plot (Quantile-Quantile Plot)

 

[이론] Q-Q Plot (Quantile-Quantile Plot)

[이론] Q-Q Plot (Quantile-Quantile Plot) 정규성을 검정할 때 Q-Q Plot을 쓰곤 한다. 그런데 이런 궁금증이 들 수 있다. 왜 Q-Q Plot이 직선에 가까운 것이 정규성을 따른다는 뜻인가? 이에 대해 조목조목..

medistat.tistory.com

2) 히스토그램

결과

해석 방법

히스토그램 막대가 정규분포 곡선 상에 있음: 정규성 따름

히스토그램 막대가 정규분포 곡선에서 벗어남: 정규성 따르지 않음

 

따라서, "대부분의 히스토그램 막대가 정규분포 곡선 상에 있으므로 정규성을 따른다고 할 수 있다."

 

3) 통계적 검정

결과

해석 방법

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

 

중급자:

 

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

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

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

 

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

제 1종 오류

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

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

 

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

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

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

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

 

고급자:

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

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

 

 

 

SAS 정규성 검정 정복 완료!

 

작성일: 2022.08.12.

최종 수정일: 2022.08.13.

이용 프로그램: SAS v9.4

운영체제: Windows 10

반응형
반응형

[R] 정규성 검정 (4) : 정량적 검정 (Lilliefors test) - lillie.test()

정규성 검정을 하는 방법은 지금까지 다룬 세 가지가 많이 쓰인다.

 

정규성 검정 방법

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

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

3) 통계적 검정: 2022.08.11 - [기술 통계/R] - [R] 정규성 검정 (3) : 정량적 검정 (Shapiro-Wilk, Kolmogorov-Smirnov) - shapiro.test(), ks.test()

 

세 번째 방법인 통계적 검정에서 Kolmogorov-Smirnov test는 그대로 사용하지 않고 p-value만 교정한 Lilliefors test를 더 많이 사용한다. SPSS에서도 Lilliefors 교정된 Kolmogorov-Smirnov test 결과를 보여주는 것을 다음 링크에서 확인할 수 있다. 2022.08.11 - [기술 통계/SPSS] - [SPSS] 정규성 검정

 

그래서 이번에는 R에서 Lilliefors 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.11)

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

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")

 

Lilliefors test를 위해서는 "nortest" 패키지의 "lillie.test()"함수를 사용한다. 따라서 설치한 뒤 데이터의 변수 ALT로 lilliefors test를 시행하는 코드는 다음과 같다.

 

코드

install.packages("nortest")
library("nortest")
lillie.test(a$ALT)

 

결과

	Lilliefors (Kolmogorov-Smirnov) normality test

data:  a$ALT
D = 0.015397, p-value = 0.8184

Kolmogorov-Smirnov test결과와 D statistics 값은 0.015397로 같은데, p-value만 다르다는 것을 알 수 있다. (Kolmogorov-Smirnov test결과는 다음 링크에서 확인할 수 있다.2022.08.11 - [기술 통계/R] - [R] 정규성 검정 (3) : 정량적 검정 (Shapiro-Wilk, Kolmogorov-Smirnov) - shapiro.test(), ks.test())

 

 

해석방법

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

 

중급자:

 

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

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

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

 

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

제 1종 오류

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

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

 

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

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

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

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

 

고급자:

-본 데이터의 n 수는 1,000명으로 2,000명 미만이므로 Shapiro-Wilk test의 결과를 인용해야 한다. 따라서 본 결과는 신뢰하지 않는다.

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

 

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

 

작성일: 2022.08.12.

최종 수정일: 2022.08.12.

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

운영체제: Windows 10

반응형
반응형

[SPSS] 정규성 검정

 

많은 통계 분석에서 전제조건으로 데이터의 정규성(normality)을 요구하곤 한다. SPSS로 정규성 검정을 하는 방법을 살펴보고자 한다.

 

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

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

 

분석용 데이터 (update 22.08.29)

2022년 08월 29일 버전입니다. 변수는 계속하여 추가될 예정입니다. 다음 카테고리에 있는 글에서 이용된 데이터입니다. - 기술 통계 - 통계 프로그램 사용 방법 1) 엑셀 파일 2) CSV 파일 3) 코드북

medistat.tistory.com

 

먼저 데이터를 불러온다

(데이터 불러오는 방법은 다음 링크 참고:

2022.08.04 - [통계 프로그램 사용 방법/SPSS] - [SPSS] 데이터 불러오기 및 저장하기)

 

정규성 검정 방법

1) 분석 (A)>기술통계량 (E) > 데이터 탐색 (E)

 

2) 분석하고자 하는 변수를 "종속변수(D)" 쪽으로 이동

 

3) 도표(T)를 누르고, "히스토그램(H)", "검정과 함께 정규성도표(O)" 체크박스를 클릭. 다 되었으면 "계속(C)" 클릭

 

4) "확인" 을 눌러 결과 확인

 

1) Q-Q plot

R에서 그린 그림과 비교해보면 약간 다른데, x축과 y축이 바뀌어 있기 때문이다.

R로 그린 Q-Q plot은 다음 링크에서 확인할 수 있다: 2022.08.11 - [기술 통계/R] - [R] 정규성 검정 (1) : QQplot - qqnorm(), qqline() 

 

해석방법

데이터가 직선상에 있음: 정규성 따름

데이터가 직선에서 벗어나 있음: 정규성 따르지 않음

 

따라서, "대부분의 데이터들이 일직선 상에 있으므로 정규성을 따른다고 할 수 있다."

 

Q-Q plot 이론은 다음 링크에서 확인할 수 있다.

2022.08.12 - [통계 이론] - [이론] Q-Q Plot (Quantile-Quantile Plot)

 

[이론] Q-Q Plot (Quantile-Quantile Plot)

[이론] Q-Q Plot (Quantile-Quantile Plot) 정규성을 검정할 때 Q-Q Plot을 쓰곤 한다. 그런데 이런 궁금증이 들 수 있다. 왜 Q-Q Plot이 직선에 가까운 것이 정규성을 따른다는 뜻인가? 이에 대해 조목조목..

medistat.tistory.com

2) 정량적 검정 (Shapiro-Wilk, Kolmogorov-Smirnov test) 

해석방법

초급자: 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과 히스토그램의 결과도 고려하여 정규성 여부를 판단해야 한다.

 

R에서 시행한 Kolmogorov-Smirnov test 결과와 약간 다르다. R의 Kolmogorov-Smirnov test결과는 다음 링크에서 확인할 수 있다.2022.08.11 - [기술 통계/R] - [R] 정규성 검정 (3) : 정량적 검정 (Shapiro-Wilk, Kolmogorov-Smirnov) - shapiro.test(), ks.test()

 

다르게 나타나는 이유는 두 가지가 있다.

1) SPSS 결과의 p-value "0.200*" 이란 ">0.2"를 의미한다. 즉 적어도 0.2보다는 크다는 뜻을 의미하며, R에서의 결과인 "0.9717"과는 그렇게 배치되는 이야기가 아니다. 

2) SPSS는 Lilliefors가 수정한 방식의 유의확률을 계산해준다. 초창기에 만든 Kolmogorov-Smirnov test는 모종의 문제가 있어 Lilliefors가 p-value를 수정하게 되었다. SPSS는 이를 제시해주고 있다. R에서 Lilliefors가 수정한 Kolmogorov-Smirnov test를 하는 방법은 다음 링크에서 확인할 수 있다.

 

3) 히스토그램

히스토그램은 이렇게 그려주는데 정규분포 곡선이 그려져있지 않다. 이를 위해서는 다음의 단계를 거쳐 새로 그려야 한다.

 

1) 그래프(G)>레거시 대화 상자 (L)> 히스토그램 (I)

 

2) 분석하고자 하는 변수를 "변수(V):"쪽으로 옮기고, "정규곡선 표시(D)" 체크박스에 체크를 한다. 그리고 "확인"을 누른다.

결과

해석방법

히스토그램 막대가 정규분포 곡선 상에 있음: 정규성 따름

히스토그램 막대가 정규분포 곡선 에서 벗어남: 정규성 따르지 않음

 

따라서, "대부분의 히스토그램 막대가 정규분포 곡선 상에 있으므로 정규성을 따른다고 할 수 있다."

 

SPSS 정규성 검정 정복 완료!

 

작성일: 2022.08.11.

최종 수정일: 2022.11.29.

이용 프로그램: IBM SPSS v26

운영체제: Windows 10

반응형
반응형

[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

 

반응형
반응형

[R] 정규성 검정 (2) : 히스토그램 - hist(), dnorm()

 

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

 

정규성 검정 방법

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

2) 히스토그램

3) 정량적 검정: 2022.08.11 - [기술 통계/R] - [R] 정규성 검정 (3) : 정량적 검정 (Shapiro-Wilk, Kolmogorov-Smirnov) - shapiro.test(), ks.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")

a라는 객체에 있는 데이터 중 "ALT"의 히스토그램을 그려볼 것이다. 코드는 다음과 같다.

#R 설치 시에 자동으로 설치되는 패키지에 있는 함수들이므로 별도의 패키지를 설치할 필요가 없다.

hist(a$ALT, prob=TRUE)
ALTrange<-seq(min(a$ALT),max(a$ALT),length=max(max(a$ALT)-min(a$ALT),100))
ND<-dnorm(ALTrange,mean=mean(a$ALT),sd=sd(a$ALT))
lines(ALTrange, ND, lwd=2)

코드 설명

이해하지 않아도 된다.

모르겠으면, 그저 "a$ALT"을 원하는 변수명으로 바꾸어 코드를 실행하면 된다.

 

(1)hist(a$ALT, prob=TRUE): "a"라는 객체의 "ALT열"에 있는 데이터로 히스토그램을 그리시오.

(2)ALTrange<-seq(min(a$;ALT),max(a$ALT),length=max(max(a$ALT)-min(a$ALT),100)): ALT의 최댓값에서 최솟값을 뺀 값

(3)ALTrange<-seq(min(a$ALT),max(a$ALT),length=max(max(a$ALT)-min(a$ALT),100)): "ALT의 최댓값에서 최솟값을 뺀 값"과 100중 큰 것

(4)ALTrange<-seq(min(a$ALT),max(a$ALT),length=max(max(a$ALT)-min(a$ALT),100)): 등차수열을 만들 건데, 가장 작은 값은 ALT의 최솟값과 같고, 가장 큰 값은 ALT의 최댓값과 같다. 수열에 있는 숫자의 개수(length)는  (3)에서 구한 값

(5)ALTrange<-seq(min(a$ALT),max(a$ALT),length=max(max(a$ALT)-min(a$ALT),100))(4)에서 구한 수열을 ALTrange에 저장한다.

(6)ND<-dnorm(ALTrange,mean=mean(a$ALT),sd=sd(a$ALT)): 평균은 ALT의 평균, 표준편차는 ALT의 표준편차인 정규분포의 확률밀도함수값을 ALTrange 수열 내 각 항에 대해 구한다.
(7)lines(ALTrange, ND, lwd=2): x축에는 ALTrange, y축에는 ND를 넣고 선으로 잇되 선의 굵기는 2로 한다.


 

결과

 

해석방법

히스토그램 막대가 정규분포 곡선 상에 있음: 정규성 따름

히스토그램 막대가 정규분포 곡선 에서 벗어남: 정규성 따르지 않음

 

따라서, "대부분의 히스토그램 막대가 정규분포 곡선 상에 있으므로 정규성을 따른다고 할 수 있다."

 

 

 

R 정규성 검정 (히스토그램) 정복 완료!

 

작성일: 2022.08.11.

최종 수정일: 2022.08.31.

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

운영체제: Windows 10

 

반응형
반응형

[R] 정규성 검정 (1) : Q-Q plot - qqnorm(), qqline()

 

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

 

정규성 검정 방법

1) Q-Q plot

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

3) 정량적 검정: 2022.08.11 - [기술 통계/R] - [R] 정규성 검정 (3) : 정량적 검정 (Shapiro-Wilk, Kolmogorov-Smirnov) - shapiro.test(), ks.test()

 

본 글에서는 Q-Q plot으로 검정하는 방법에 대해 확인해볼 것이다.

 

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

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

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")

a라는 객체에 있는 데이터 중 "ALT"의 Q-Q plot을 그려볼 것이다. 코드는 다음과 같다.

 

# install.packages("stats") 
	#stats 패키지는 R 설치 시 함께 딸려오므로 설치 필요 없음
# library("stats)

qqnorm(a$ALT)
qqline(a$ALT)

qqnorm(a$ALT): "a"라는 객체의 "ALT열"에 있는 데이터로 Q-Q plot을 그리시오.
qqline(a$ALT): 추세선을 그리시오.

 

결과

해석방법

데이터가 직선상에 있음: 정규성 따름

데이터가 직선에서 벗어나 있음: 정규성 따르지 않음

 

따라서, "대부분의 데이터들이 일직선 상에 있으므로 정규성을 따른다고 할 수 있다."

 

 

 

Q-Q plot 이론은 다음 링크에서 확인할 수 있다.

2022.08.12 - [통계 이론] - [이론] Q-Q Plot (Quantile-Quantile Plot)

 

[이론] Q-Q Plot (Quantile-Quantile Plot)

[이론] Q-Q Plot (Quantile-Quantile Plot) 정규성을 검정할 때 Q-Q Plot을 쓰곤 한다. 그런데 이런 궁금증이 들 수 있다. 왜 Q-Q Plot이 직선에 가까운 것이 정규성을 따른다는 뜻인가? 이에 대해 조목조목..

medistat.tistory.com

 

 

R 정규성 검정 (Q-Q plot) 정복 완료!

 

작성일: 2022.08.11.

최종 수정일: 2022.08.31.

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

운영체제: Windows 10

 

반응형

+ Recent posts