반응형

[SPSS] 윌콕슨 부호 순위 검정 (비모수 짝지어진 표본 중앙값 검정: Wilcoxon signed rank test)

 

 

 짝지어진 두 분포의 평균이 다른지 확인하는 방법을 이전에는 대응 표본 T검정 (Paireed Sample T test)로 시행했었다. (2022.11.30 - [반복 측정 자료 분석/SPSS] - [SPSS] 대응 표본 T검정 (Paired samples T-test)) 하지만 여기에는 중요한 가정이 필요한데, 두 변수의 차이가 정규분포를 이룬다는 것이다. 하지만 차이의 분포가 정규성을 따르지 않는다면 어떻게 해야 할까? 그럴 때 사용하는 것이 Wilcoxon signed rank test (윌콕슨 부호 순위 검정)이다.  

 

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

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

 

분석용 데이터 (update 22.12.01)

2022년 12월 01일 버전입니다. 변수는 계속하여 추가될 예정입니다. 다음 카테고리에 있는 글에서 이용된 데이터입니다. - 기술 통계 - 범주형 자료 분석 - 모평균 검정 - 반복 측정 자료 분석 - 통계

medistat.tistory.com

 

 

데이터를 불러오도록 한다. 불러오는 방법은 다음 링크를 확인하도록 한다.

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

 

목표: 모집단에서 GGT와 간기능 개선제 복용 후 GGT 중앙값에 차이가 있다고 할 수 있는가?

 

이번 포스팅의 목적은 1000명의 데이터를 가지고, 이 1000명이 기원한 모집단에서 GGT와 간 기능 개선제 복용 후 GGT의 중앙값에 차이가 있다고 할 수 있는지 판단하는 것이다.

 

전제: 정규성 검정 (차이)

 검정하고자 하는 두 변수의 차이가 정규성을 띤다면 paired t-test를 하면 되므로 정규성 여부를 파악하도록 한다. 따라서 GGT와 간 기능 개선제 복용 후 GGT(GGT_POSTMED)의 차이를 구하고 정규성 검정을 시행한다.

차이를 구하는 방법:

2022.11.30 - [통계 프로그램 사용 방법/SPSS] - [SPSS] 변수 계산 (산술 연산)

정규성 검정을 하는 방법:

2022.08.11 - [기술 통계/SPSS] - [SPSS] 정규성 검정

2022.08.18 - [기술 통계/SPSS] - [SPSS] 고급 Q-Q Plot - Van der Waerden, Rankit, Tukey, Blom

 

차이 구하기

1) 변환(T) > 변수 계산(C)

 

2) GGT에서 GGT_POSTMED를 빼고 그것을 GGT_DIF에 저장한다.

 

정규성

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

 

2) 분석하고자 하는 변수인 GGT_DIF을 "종속변수"에 넣고, "도표(T)..."를 선택한다.

 

3) "히스토그램(H)", "검정과 함께 정규성 도표(O)" 체크박스를 클릭하고 "계속(C)"를 누르고, 돌아가 "확인"을 누른다.

 

결과

 

 N수가 2,000개 미만이므로 Shapiro-Wilk 통계량의 p-value를 보면 0.05 이하이며, Q-Q Plot은 대부분의 데이터가 선상에 있지 않다. 히스토그램에서는 정규성을 따르는 것처럼 보이지만 이는 개인의 느낌이므로 정확한 것은 아니다. 따라서 대응 표본 T검정 (Paired sample T-test)를 시행할 수 없고, 윌콕슨 부호 순위 검정 (Wilcoxon Signed Rank Test)을 시행해야 한다.

 

윌콕슨 부호 순위 검정 (Wilcoxon Signed Rank Test)

1) 분석(A) > 비모수검정(N) > 대응표본(R)

 

2) 이때 나오는 창의 첫 페이지인 "목적"은 건들지 않는다.

3) "필드"를 누르고 분석하고자 하는 GGT와 GGT_POSTMED를 오른쪽으로 넘긴다.

4) "사용자 정의에 의한 검정(C)"를 누르고 "Wilcoxon 대응표본 부호순위(2 표본)(W)"을 체크하고 "실행"을 누른다. 

 

결과

중요한 건 p-value다. 유의확률인 p-value가 0.000(<0.001)로 0.05보다 작으므로 GGT와 GGT_POSTMED는 차이가 있다고 할 수 있다. 지난번 일표본 윌콕슨 부호 순위 검정에서도 밝혔듯이 윌콕슨 부호 순위 검정은 가정이 필요 없는 검정이 아니다. 대칭이라는 가정이 필요하다.(2022.12.02 - [모평균 검정/SPSS] - [SPSS] 일표본 윌콕슨 부호 순위 검정 (비모수 일표본 중앙값 검정: One-Sample Wilcoxon Signed Rank Test)) 따라서 대칭 여부를 확인해야 하는데, 위 GGT_DIF의 히스토그램을 보면 좌우대칭임을 확인할 수 있다. 따라서 원 결론 그대로 차이가 난다고 결론을 내리면 된다.

 

 그런데, 눈치를 챈 독자도 있겠지만, 비모수 일표본 검정도, 대응 표본 검정도 모두 윌콕슨 부호 순위 검정을 실시한다. 이는 모수적인 방법에서 대응 표본 T 검정 (paired T test)가 사실 일표본 T 검정 (One sample T test)와 같다는 것과 일맥상통하는 이야기다. 이 말을 비틀어 생각하면, 일표본 윌콕슨 부호 순위 검정으로 대응표본 윌콕슨 부호 순위 검정을 시행할 수 있다는 말이다. 즉 위에서 만들 DDT_DIF변수로 0에 대해 일표본 윌콕슨 부호 순위 검정을 시행하면 같은 결과를 내는 것을 확인할 수 있다.

 

1) 분석(A) > 비모수검정(N) > 일표본(O)

 

2) 이때 나오는 창의 첫 페이지인 "목적"은 건들지 않는다.

 

3) "필드"를 누르고 분석하고자 하는 GGT_DIF를 오른쪽으로 넘긴다.

 

4) "사용자 정의에 의한 검정(T)"를 누르고 "평균과 가설값 비교(Wilcoxon 부호 순위 검정)"을 체크하고, 가설 중위수에는 검정하고자 하는 값인 0을 적는다. 그리고 "실행"을 누른다. 

 

결과

위와 같은 결론을 내리고 있다.

 

 

[SPSS] 윌콕슨 부호 순위 검정 (비모수 짝지어진 표본 중앙값 검정: Wilcoxon signed rank test) 정복 완료!

작성일: 2022.12.06.

최종 수정일: 2022.12.06.

이용 프로그램: IBM SPSS v26

운영체제: Windows 10

반응형
반응형

[R] 윌콕슨 부호 순위 검정 (비모수 짝지어진 표본 중앙값 검정: Wilcoxon signed rank test) - wilcox.test()

 

 짝지어진 두 분포의 평균이 다른지 확인하는 방법을 이전에는 대응 표본 T검정 (Paireed Sample T test)로 시행했었다. (2022.11.25 - [반복 측정 자료 분석/R] - [R] 대응 표본 T검정 (Paired samples T-test) - t.test()) 하지만 여기에는 중요한 가정이 필요한데, 두 변수의 차이가 정규분포를 이룬다는 것이다. 하지만 차이의 분포가 정규성을 따르지 않는다면 어떻게 해야 할까? 그럴 때 사용하는 것이 Wilcoxon signed rank test (윌콕슨 부호 순위 검정)이다.  

 

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

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

 

분석용 데이터 (update 22.12.01)

2022년 12월 01일 버전입니다. 변수는 계속하여 추가될 예정입니다. 다음 카테고리에 있는 글에서 이용된 데이터입니다. - 기술 통계 - 범주형 자료 분석 - 모평균 검정 - 반복 측정 자료 분석 - 통계

medistat.tistory.com

 

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

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

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

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

 

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

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

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

2022.08.10 - [통계 프로그램 사용 방법/R] - [R] 데이터 저장하기 : CSV 파일 - write.csv(), write_csv()

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

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

 

목표: 모집단에서 GGT와 간기능 개선제 복용 후 GGT 중앙값에 차이가 있다고 할 수 있는가?

 

이번 포스팅의 목적은 1000명의 데이터를 가지고, 이 1000명이 기원한 모집단에서 GGT와 간 기능 개선제 복용 후 GGT의 중앙값에 차이가 있다고 할 수 있는지 판단하는 것이다.

 

전제: 정규성 검정 (차이)

 검정하고자 하는 두 변수의 차이가 정규성을 띤다면 paired t-test를 하면 되므로 정규성 여부를 파악하도록 한다. 따라서 GGT와 간 기능 개선제 복용 후 GGT(GGT_POSTMED)의 차이를 구하고 정규성 검정을 시행한다.

차이를 구하는 방법:

2022.11.25 - [통계 프로그램 사용 방법/R] - [R] 변수 계산 (산술 연산)

정규성 검정을 하는 방법:

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

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

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

2022.08.12 - [기술 통계/R] - [R] 정규성 검정 (4) : 정량적 검정 (Lilliefors test) - lillie.test()

2022.08.16 - [기술 통계/R] - [R] 고급 Q-Q Plot - Van der Waerden, Rankit, Tukey, Blom

 

코드

##GGT 차이 변수 만들기
df$GGT_DIF<-df$GGT-df$GGT_POSTMED

##GGT_DIF의 정규성 검정
# 1) Q-Q plot 그리기
qqnorm(df$GGT_DIF)
qqline(df$GGT_DIF)
# 2) 히스토그램 그리기
hist(df$GGT_DIF, prob=TRUE, breaks=20)
GGT_DIFrange<-seq(min(df$GGT_DIF),max(df$GGT_DIF),length=max(max(df$GGT_DIF)-min(df$GGT_DIF),100))
ND<-dnorm(GGT_DIFrange,mean=mean(df$GGT_DIF),sd=sd(df$GGT_DIF))
lines(GGT_DIFrange, ND, lwd=2)
# 3) Shapiro-Wilk test 시행하기
shapiro.test(df$GGT_DIF)

 

결과

	Shapiro-Wilk normality test

data:  df$GGT_DIF
W = 0.94868, p-value < 2.2e-16

 N수가 2,000개 미만이므로 Shapiro-Wilk 통계량의 p-value를 보면 0.05 이하이며, Q-Q Plot은 대부분의 데이터가 선상에 있지 않다. 히스토그램에서는 정규성을 따르는 것처럼 보이지만 이는 개인의 느낌이므로 정확한 것은 아니다. 따라서 대응 표본 T검정 (Paired sample T-test)를 시행할 수 없고, 윌콕슨 부호 순위 검정 (Wilcoxon Signed Rank Test)을 시행해야 한다.

 

윌콕슨 부호 순위 검정 (Wilcoxon Signed Rank Test) 코드

wilcox.test(df$GGT, df$GGT_POSTMED, correct=FALSE, paired=TRUE)

wilcox.test(df$GGT, df$GGT_POSTMED, correct=FALSE, paired=TRUE) : df데이터의 GGT변수와 df데이터의 GGT_POSTMED로 검정을 하는데, 연속성 수정은 하지 말고 (correct=FALSE), 대응표본이니까 (paired=TRUE) 윌콕슨 부호 순위 검정을 시행하라. (연속성 수정은 다음 글을 참고하길 바란다.2022.08.30 - [통계 이론] - [이론] 연속성을 수정한 카이 제곱 검정 (Chi-squared test with Yates's correction for continuity))

 

결과

	Wilcoxon signed rank test

data:  df$GGT and df$GGT_POSTMED
V = 22907, p-value < 2.2e-16
alternative hypothesis: true location shift is not equal to 0

Wilcoxon signed rank test

data:  df$GGT and df$GGT_POSTMED

V = 22907, p-value < 2.2e-16

alternative hypothesis: true location shift is not equal to 0

 

중요한 건 p-value다. p-value가 0.05보다 작으므로 df의 GGT와 GGT_POSTMED는 차이가 있다고 할 수 있다. 지난번 일표본 윌콕슨 부호 순위 검정에서도 밝혔듯이 윌콕슨 부호 순위 검정은 가정이 필요 없는 검정이 아니다. 대칭이라는 가정이 필요하다.(2022.11.29 - [모평균 검정/R] - [R] 일표본 윌콕슨 부호 순위 검정 (비모수 일표본 중앙값 검정: One-Sample Wilcoxon Signed Rank Test) - wilcox.test()) 따라서 대칭여부를 확인해야 하는데, 위 GGT_DIF의 히스토그램을 보면 좌우대칭임을 확인할 수 있다. 따라서 원 결론 그대로 차이가 난다고 결론을 내리면 된다.

 

 그런데, 눈치를 챈 독자도 있겠지만, 비모수 일표본 검정도, 대응 표본 검정도 모두 윌콕슨 부호 순위 검정을 실시한다. 이는 모수적인 방법에서 대응 표본 T 검정 (paired T test)가 사실 일표본 T 검정 (One sample T test)와 같다는 것과 일맥상통하는 이야기다. 이 말을 비틀어 생각하면, 일표본 윌콕슨 부호 순위 검정으로 대응표본 윌콕슨 부호 순위 검정을 시행할 수 있다는 말이다. 즉 위에서 만들 DDT_DIF변수로 0에 대해 일표본 윌콕슨 부호 순위 검정을 시행하면 같은 결과를 내는 것을 확인할 수 있다.

 

 

코드

wilcox.test(df$GGT_DIF, mu=0, correct=FALSE)

 

결과

	Wilcoxon signed rank test

data:  df$GGT_DIF
V = 22907, p-value < 2.2e-16
alternative hypothesis: true location is not equal to 0

 

코드 정리

##워킹 디렉토리 지정
setwd("C:/Users/user/Documents/Tistory_blog")

##데이터 불러오기
install.packages("readr")
library("readr")
df<-read_csv("Data.csv")


##GGT 차이 변수 만들기
df$GGT_DIF<-df$GGT-df$GGT_POSTMED


##GGT_DIF의 정규성 검정
# 1) Q-Q plot 그리기
qqnorm(df$GGT_DIF)
qqline(df$GGT_DIF)
# 2) 히스토그램 그리기
hist(df$GGT_DIF, prob=TRUE, breaks=20)
GGT_DIFrange<-seq(min(df$GGT_DIF),max(df$GGT_DIF),length=max(max(df$GGT_DIF)-min(df$GGT_DIF),100))
ND<-dnorm(GGT_DIFrange,mean=mean(df$GGT_DIF),sd=sd(df$GGT_DIF))
lines(GGT_DIFrange, ND, lwd=2)
# 3) Shapiro-Wilk test 시행하기
shapiro.test(df$GGT_DIF)


##윌콕슨 부호 순위 검정 시행하기
wilcox.test(df$GGT, df$GGT_POSTMED, correct=FALSE, paired=TRUE)


##일표본 윌콕슨 부호 순위 검정 시행하기
wilcox.test(df$GGT_DIF, mu=0, correct=FALSE)

 

[R] 윌콕슨 부호 순위 검정 (비모수 짝지어진 표본 중앙값 검정: Wilcoxon signed rank test) 정복 완료!

 

작성일: 2022.12.01.

최종 수정일: 2022.12.06.

이용 프로그램: R 4.2.2

RStudio v2022.07.2

RStudio 2022.07.2+576 "Spotted Wakerobin" Release

운영체제: Windows 10, Mac OS 12.6.1

반응형
반응형

[SPSS] 대응 표본 T검정 (Paired samples T-test)

 

 세상에 존재하는 모든 사람을 대상으로 연구를 하면 참 좋겠지만, 시간적인 이유로, 그리고 경제적인 이유로 일부를 뽑아서 연구를 진행할 수밖에 없다. 모든 사람을 모집단이라고 하고, 뽑힌 일부를 표본이라고 한다. 우리는 표본으로 시행한 연구로 모집단에 대한 결론을 도출해내고자 할 것이다. 

 1000명에게 피검사를 시행하였고, 간 기능 검사의 일환으로 ALT 수치를 모았다. 그리고, 간 기능 개선제를 복용시킨 뒤 ALT 검사를 다시 시행하였다. 이 데이터를 기반으로 1000명이 기원한 모집단 인구에서 간 기능 개선제 복용은 ALT 수치를 개선시키는지 여부를 확인하는 것이 T-test이다. T-test는 크게 세 가지로 나눌 수 있다.

 

 1) 일표본 T검정 (One sample T-test) : 2022.11.29 - [모평균 검정/SPSS] - [SPSS] 일표본 T검정 (One-sample T-test)

 : 모집단의 평균이 특정 값이라고 할 수 있는가?

 예) 모집단의 ALT 평균이 50이라고 할 수 있는가?

 

 

 2) 독립 표본 T검정 (Independent samples T-test, Two samples T-test) : 2022.11.30 - [모평균 검정/SPSS] - [SPSS] 독립 표본 T검정 (Independent samples T-test)

 : 두 모집단의 평균이 다르다고 할 수 있는가?

 예) 고혈압 환자와 일반인의 수축기 혈압 평균이 서로 다르다고 할 수 있는가?

 

 3) 대응 표본 T검정 (Paired samples T-test) 

 : 모집단의 짝지어진 변수들의 평균이 다르다고 할 수 있는가?

예) 간 기능 개선제 복용 전 ALT 평균은 간기는 개선제 복용 후 ALT 평균과 다르다고 할 수 있는가?

 

이번 포스팅에서는 대응 표본 T검정 (Paired samples T-test)에 대해 알아볼 것이다.

 

 

왜 대응 표본 T 검정이 필요할까?

 독립 표본 T 검정을 공부한 사람이라면 대응 표본 T 검정의 필요성에 대해 의구심을 가질 수 있다. 간 기능 개선제 복용 전 ALT와 간 기능 개선제 복용 후 ALT에 대해 독립 표본 T 검정을 돌리면 될 것이라고 생각할 수 있기 때문이다. 하지만 결론적으로 그렇게 하면 안 된다. 예를 들어 다음 사례를 봐보자.

환자 번호 시험 공부 전 시험 점수 시험 공부 후 시험 점수
1번 0.1 0.2
2번 0.2 0.3
...
999번 99.9 100.0
1000번 100.0 100.0

1000명이 시험을 보았고, 원래 100점을 받았던 1000번을 제외한 모든 사람이 시험공부로 0.1점이 올랐다. 1000명 중 999명의 점수가 올랐으므로 공부는 시험 점수를 올리는데 유의미한 영향력을 미칠 수 있다고 결론이 나야 합당할 것이다. 하지만 공부 전 후 시험 점수의 평균은 둘 다 50점에 가깝고 큰 변화는 없는 것처럼 보인다. 따라서 독립 표본 T 검정으로 내린 결론은 잘못된 것이다. 즉, 대응되는 (paired) 경우 그 값 자체보다는 둘 사이의 차이에 집중해야 한다.

 

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

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

 

분석용 데이터 (update 22.11.28)

2022년 11월 28일 버전입니다. 변수는 계속하여 추가될 예정입니다. 다음 카테고리에 있는 글에서 이용된 데이터입니다. - 기술 통계 - 범주형 자료 분석 - 모평균 검정 - 반복 측정 자료 분석 - 통계

medistat.tistory.com

 

데이터를 불러오도록 한다. 불러오는 방법은 다음 링크를 확인하도록 한다.

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

 

전제: 정규성 검정 (차이)

 대응 표본 T 검정 (Paired samples T test)의 전제 조건은 검정하고자 하는 두 변수의 차이가 정규분포를 따른다는 것이다. 따라서 ALT와 간 기능 개선제 복용 후 ALT(ALT_POSTMED)의 차이를 구하고 정규성 검정을 시행한다. 

차이를 구하는 방법: 2022.11.30 - [통계 프로그램 사용 방법/SPSS] - [SPSS] 변수 계산 (산술 연산)

정규성 검정을 하는 방법: 2022.08.11 - [기술 통계/SPSS] - [SPSS] 정규성 검정

2022.08.18 - [기술 통계/SPSS] - [SPSS] 고급 Q-Q Plot - Van der Waerden, Rankit, Tukey, Blom

 

차이 구하기

1) 변환(T) > 변수 계산(C)

2)ALT와 ALT_POSTMED의 차이를 ALT_DIF로 지정하기. 그리고 "확인"을 누른다

 

정규성 검정하기

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

 

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

 

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

 

결과

N 수는 1000으로 2000 미만이므로 Shapiro-Wilk 통계량을 봐야하고 이 검정의 p-value는 0.05 이상이다. Q-Q plot상에서 대부분의 데이터가 직선상에 있으며, 히스토그램 또한 정규분포를 따르는 것처럼 보이므로 두 변수의 차는 정규분포를 따른다고 할 수 있다. 따라서 대응 표본 T 검정 (Paired samples T test)를 시행할 수 있다.

 

대응 표본 T 검정 방법

1) 분석(A) > 평균 비교 (M) > 대응표본 T 검정 (P)

 

2)분석하고자 하는 두 개의 변수  ALT와 ALT_POSTMED를 각각 "대응 변수(V)"쪽으로 아래 그림과 같이 옮긴다. 그 후 확인을 누른다.

 

결과

1) 기술통계

ALT와 ALT_POSTMED에 대한 기술통계가 나온다. 쓱 보고 넘긴다.

 

2) 대응 표본 T 검정 결과

결과를 하나씩 뜯어보자

ALT는 ALT_POSTMED보다 2.8326만큼 더 크고, 그 차이에 대한 p-value는 <0.001로 매우 유의하다. 따라서 귀무가설을 기각할 수 있다. 본 검정의 귀무가설은 다음과 같다.

 귀무가설: $H0=$간 기능

이를 기각하므로 동일하지 않다고 할 수 있고, 간 기능 개선제 복용 후 ALT가 2.8363만큼 낮아져 간 기능에 호전이 있다고 평가할 수 있다.  

 

$$ALT=ALT_{POSTMED}$$

$$\therefore ALT_{DIF}=ALT−ALT_{POSTMED}=0$$

 

즉, 대응 표본 T 검정을 시행하는 것은 ALT_DIF변수의 평균이 0과 같은지 검정하는 일표본 T검정 (One sample T test)와 같은 것이다. 일표본 T 검정은 다음 링크에서 확인할 수 있다. 2022.11.29 - [모평균 검정/SPSS] - [SPSS] 일표본 T검정 (One-sample T-test)

 

일표본 T 검정으로 대응 표본 T 검정 시행하기

 

1) 분석(A) > 평균 비교 (M) > 일표본 T 검정 (S)

 

2) 분석하고자 하는 변수 ALT를 "검정 변수(T)"쪽으로 옮기고, 아래 "검정값(V)"에 0을 적는다. 그리고 "확인"을 누른다.

 

결과

위와 같은 결과를 내는 것을 알 수 있다.

 

 

[SPSS] 대응 표본 T검정 (Paired samples T-test) 정복 완료!

작성일: 2022.11.30.

최종 수정일: 2022.11.30.

이용 프로그램: IBM SPSS v26

운영체제: Windows 10

반응형
반응형

[R] 대응 표본 T검정 (Paired samples T-test) - t.test()

 

  세상에 존재하는 모든 사람을 대상으로 연구를 하면 참 좋겠지만, 시간적인 이유로, 그리고 경제적인 이유로 일부를 뽑아서 연구를 진행할 수밖에 없다. 모든 사람을 모집단이라고 하고, 뽑힌 일부를 표본이라고 한다. 우리는 표본으로 시행한 연구로 모집단에 대한 결론을 도출해내고자 할 것이다. 

 1000명에게 피검사를 시행하였고, 간 기능 검사의 일환으로 ALT 수치를 모았다. 그리고, 간 기능 개선제를 복용시킨 뒤 ALT 검사를 다시 시행하였다. 이 데이터를 기반으로 1000명이 기원한 모집단 인구에서 간 기능 개선제 복용은 ALT 수치를 개선시키는지 여부를 확인하는 것이 T-test이다. T-test는 크게 세 가지로 나눌 수 있다.

 

 1) 일표본 T검정 (One sample T-test) : 2022.11.03 - [모평균 검정/R] - [R] 일표본 T검정 (One-sample T-test) - t.test()

 : 모집단의 평균이 특정 값이라고 할 수 있는가?

 예) 모집단의 ALT 평균이 50이라고 할 수 있는가?

 

 

 2) 독립 표본 T검정 (Independent samples T-test, Two samples T-test) : 2022.11.12 - [모평균 검정/R] - [R] 독립 표본 T검정 (Independent samples T-test) - t.test(), var.test(), levene.test()

 : 두 모집단의 평균이 다르다고 할 수 있는가?

 예) 고혈압 환자와 일반인의 수축기 혈압 평균이 서로 다르다고 할 수 있는가?

 

 3) 대응 표본 T검정 (Paired samples T-test) 

 : 모집단의 짝지어진 변수들의 평균이 다르다고 할 수 있는가?

예) 간 기능 개선제 복용 전 ALT 평균은 간기는 개선제 복용 후 ALT 평균과 다르다고 할 수 있는가?

 

이번 포스팅에서는 대응 표본 T검정 (Paired samples T-test)에 대해 알아볼 것이다.

 

 

왜 대응 표본 T 검정이 필요할까?

 독립 표본 T 검정을 공부한 사람이라면 대응 표본 T 검정의 필요성에 대해 의구심을 가질 수 있다. 간 기능 개선제 복용 전 ALT와 간 기능 개선제 복용 후 ALT에 대해 독립 표본 T 검정을 돌리면 될 것이라고 생각할 수 있기 때문이다. 하지만 결론적으로 그렇게 하면 안 된다. 예를 들어 다음 사례를 봐보자.

환자 번호 시험 공부 전 시험 점수 시험 공부 후 시험 점수
1번 0.1 0.2
2번 0.2 0.3
... $x$ $x+0.1$
999번 99.9 100.0
1000번 100.0 100.0

1000명이 시험을 보았고, 원래 100점을 받았던 1000번을 제외한 모든 사람이 시험공부로 0.1점이 올랐다. 1000명 중 999명의 점수가 올랐으므로 공부는 시험 점수를 올리는데 유의미한 영향력을 미칠 수 있다고 결론이 나야 합당할 것이다. 하지만 공부 전 후 시험 점수의 평균은 둘 다 50점에 가깝고 큰 변화는 없는 것처럼 보인다. 따라서 독립 표본 T 검정으로 내린 결론은 잘못된 것이다. 즉, 대응되는 (paired) 경우 그 값 자체보다는 둘 사이의 차이에 집중해야 한다.

 

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

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

 

분석용 데이터 (update 22.11.21)

2022년 11월 21일 버전입니다. 변수는 계속하여 추가될 예정입니다. 다음 카테고리에 있는 글에서 이용된 데이터입니다. - 기술 통계 - 범주형 자료 분석 - 모평균 검정 - 반복 측정 자료 분석 - 통계

medistat.tistory.com

 

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

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

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

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

 

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

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

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

2022.08.10 - [통계 프로그램 사용 방법/R] - [R] 데이터 저장하기 : CSV 파일 - write.csv(), write_csv()

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

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

 

전제: 정규성 검정 (차이)

 대응 표본 T 검정 (Paired samples T test)의 전제 조건은 검정하고자 하는 두 변수의 차이가 정규분포를 따른다는 것이다. 따라서 ALT와 간 기능 개선제 복용 후 ALT(ALT_POSTMED)의 차이를 구하고 정규성 검정을 시행한다. 

차이를 구하는 방법: 

2022.11.25 - [통계 프로그램 사용 방법/R] - [R] 변수 계산 (산술 연산)

정규성 검정을 하는 방법: 

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

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

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

2022.08.12 - [기술 통계/R] - [R] 정규성 검정 (4) : 정량적 검정 (Lilliefors test) - lillie.test()

2022.08.16 - [기술 통계/R] - [R] 고급 Q-Q Plot - Van der Waerden, Rankit, Tukey, Blom

 

코드

##ALT 차이 변수를 만들기
df$ALT_DIF<-df$ALT-df$ALT_POSTMED

##ALT 차이 변수의 정규성 검정
# 1) Q-Q plot 그리기
qqnorm(df$ALT_DIF)
qqline(df$ALT_DIF)

# 2) 히스토그램 그리기
hist(df$ALT_DIF, prob=TRUE)
ALT_DIFrange<-seq(min(df$ALT_DIF),max(df$ALT_DIF),length=max(max(df$ALT_DIF)-min(df$ALT_DIF),100))
ND<-dnorm(ALT_DIFrange,mean=mean(df$ALT_DIF),sd=sd(df$ALT_DIF))
lines(ALT_DIFrange, ND, lwd=2)

# 3) Shapiro-Wilk test 시행하기
shapiro.test(df$ALT_DIF)

 

결과

	Shapiro-Wilk normality test

data:  df$ALT_DIF
W = 0.99895, p-value = 0.8481

 

N 수는 1000으로 2000 미만이므로 Shapiro-Wilk 통계량을 봐야하고 이 검정의 p-value는 0.05 이상이다. Q-Q plot상에서 대부분의 데이터가 직선상에 있으며, 히스토그램 또한 정규분포를 따르는 것처럼 보이므로 두 변수의 차는 정규분포를 따른다고 할 수 있다. 따라서 대응 표본 T 검정 (Paired samples T test)를 시행할 수 있다.

 

대응 표본  T 검정 코드

t.test(df$ALT, df$ALT_POSTMED, paired=TRUE)

t.test(df$ALT, df$ALT_POSTMED, paired=TRUE) : df 데이터의 ALT와 df데이터의 ALT_POSTMED 변수간의 paired t-test를 시행하라.

 

결과

	Paired t-test

data:  df$ALT and df$ALT_POSTMED
t = 14.333, df = 999, p-value < 2.2e-16
alternative hypothesis: true mean difference is not equal to 0
95 percent confidence interval:
 2.447950 3.224593
sample estimates:
mean difference 
       2.836272

Paired t-test data:  df$ALT and df$ALT_POSTMED

t = 14.333, df = 999, p-value < 2.2e-16

alternative hypothesis: true mean difference is not equal to 0

95 percent confidence interval:  2.447950 3.224593

sample estimates: mean difference         2.836272 

 

ALT의 평균이 ALT_POSTMED의 평균에 비해 2.836272만큼 더 크다. 그리고 그 차이의 p-value는 <2.2e-16로 유의미하다. 따라서 귀무가설을 기각할 수 있다. 본 검정의 귀무가설은 다음과 같다.

 귀무가설:  $H_0$=간 기능

이를 기각하므로 동일하지 않다고 할 수 있고, 간 기능 개선제 복용 후 ALT가 2.8363만큼 낮아져 간 기능에 호전이 있다고 평가할 수 있다.  

 

$$ALT = ALT\_POSTMED$$

$$ \therefore ALT\_DIF=ALT-ALT\_POSTMED=0$$

 

즉, 대응 표본 T 검정을 시행하는 것은 ALT_DIF변수의 평균이 0과 같은지 검정하는 일표본 T검정 (One sample T test)와 같은 것이다. 일표본 T 검정은 다음 링크에서 확인할 수 있다. 2022.11.03 - [모평균 검정/R] - [R] 일표본 T검정 (One-sample T-test) - t.test()

 

일표본 T 검정으로 대응 표본 T 검정 시행하기 - 코드

t.test(df$ALT_DIF, mu=0)

 

결과

	One Sample t-test

data:  df$ALT_DIF
t = 14.333, df = 999, p-value < 2.2e-16
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
 2.447950 3.224593
sample estimates:
mean of x 
 2.836272

위와 같은 결과를 내는 것을 알 수 있다.

 

코드 정리

##워킹 디렉토리 지정
setwd("C:/Users/user/Documents/Tistory_blog")

##데이터 불러오기
install.packages("readr")
library("readr")
df<-read_csv("Data.csv")

##ALT 차이 변수 생성
df$ALT_DIF<-df$ALT-df$ALT_POSTMED

##ALT 차이 변수의 정규성 검정
# 1) Q-Q plot 그리기
qqnorm(df$ALT_DIF)
qqline(df$ALT_DIF)

# 2) 히스토그램 그리기
hist(df$ALT_DIF, prob=TRUE)
ALT_DIFrange<-seq(min(df$ALT_DIF),max(df$ALT_DIF),length=max(max(df$ALT_DIF)-min(df$ALT_DIF),100))
ND<-dnorm(ALT_DIFrange,mean=mean(df$ALT_DIF),sd=sd(df$ALT_DIF))
lines(ALT_DIFrange, ND, lwd=2)

# 3) Shapiro-Wilk test 시행하기
shapiro.test(df$ALT_DIF)

##Paired t-test
t.test( df$ALT_POSTMED, df$ALT,paired=TRUE)

##One sample t-test
t.test(df$ALT_DIF, mu=0)

 

[R] 대응 표본 T검정 (Paired samples T-test) 정복 완료!

 

작성일: 2022.11.25.

최종 수정일: 2022.11.29.

이용 프로그램: R 4.2.2

RStudio v2022.07.2

RStudio 2022.07.2+576 "Spotted Wakerobin" Release

운영체제: Windows 10, Mac OS 12.6.1

반응형
반응형

 

[SAS] 대응 표본 T검정 (Paired samples T-test) - PROC TTEST

 

  세상에 존재하는 모든 사람을 대상으로 연구를 하면 참 좋겠지만, 시간적인 이유로, 그리고 경제적인 이유로 일부를 뽑아서 연구를 진행할 수밖에 없다. 모든 사람을 모집단이라고 하고, 뽑힌 일부를 표본이라고 한다. 우리는 표본으로 시행한 연구로 모집단에 대한 결론을 도출해내고자 할 것이다. 

 1000명에게 피검사를 시행하였고, 간 기능 검사의 일환으로 ALT 수치를 모았다. 그리고, 간 기능 개선제를 복용시킨 뒤 ALT 검사를 다시 시행하였다. 이 데이터를 기반으로 1000명이 기원한 모집단 인구에서 간 기능 개선제 복용은 ALT 수치를 개선시키는지 여부를 확인하는 것이 T-test이다. T-test는 크게 세 가지로 나눌 수 있다.

 

 1) 일표본 T검정 (One sample T-test) : 2022.09.30 - [모평균 검정/SAS] - [SAS] 일표본 T검정 (One-sample T-test) - PROC TTEST

 : 모집단의 평균이 특정 값이라고 할 수 있는가?

 예) 모집단의 ALT 평균이 50이라고 할 수 있는가?

 

 

 2) 독립 표본 T검정 (Independent samples T-test, Two samples T-test) : 2022.10.04 - [모평균 검정/SAS] - [SAS] 독립 표본 T검정 (Independent samples T-test) - PROC TTEST

 : 두 모집단의 평균이 다르다고 할 수 있는가?

 예) 고혈압 환자와 일반인의 수축기 혈압 평균이 서로 다르다고 할 수 있는가?

 

 3) 대응 표본 T검정 (Paired samples T-test) 

 : 모집단의 짝지어진 변수들의 평균이 다르다고 할 수 있는가?

예) 간 기능 개선제 복용 전 ALT 평균은 간기는 개선제 복용 후 ALT 평균과 다르다고 할 수 있는가?

 

이번 포스팅에서는 대응 표본 T검정 (Paired samples T-test)에 대해 알아볼 것이다.

 

 

왜 대응 표본 T 검정이 필요할까?

 독립 표본 T 검정을 공부한 사람이라면 대응 표본 T 검정의 필요성에 대해 의구심을 가질 수 있다. 간 기능 개선제 복용 전 ALT와 간 기능 개선제 복용 후 ALT에 대해 독립 표본 T 검정을 돌리면 될 것이라고 생각할 수 있기 때문이다. 하지만 결론적으로 그렇게 하면 안 된다. 예를 들어 다음 사례를 봐보자.

환자 번호 시험 공부 전 시험 점수 시험 공부 후 시험 점수
1번 0.1 0.2
2번 0.2 0.3
... $x$ $x+0.1$
999번 99.9 100.0
1000번 100.0 100.0

1000명이 시험을 보았고, 원래 100점을 받았던 1000번을 제외한 모든 사람이 시험공부로 0.1점이 올랐다. 1000명 중 999명의 점수가 올랐으므로 공부는 시험 점수를 올리는데 유의미한 영향력을 미칠 수 있다고 결론이 나야 합당할 것이다. 하지만 공부 전 후 시험 점수의 평균은 둘 다 50점에 가깝고 큰 변화는 없는 것처럼 보인다. 따라서 독립 표본 T 검정으로 내린 결론은 잘못된 것이다. 즉, 대응되는 (paired) 경우 그 값 자체보다는 둘 사이의 차이에 집중해야 한다.

 

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

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

 

분석용 데이터 (update 22.10.06)

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

medistat.tistory.com

 

시작하기 위해 라이브러리를 만들고, 파일을 불러온다.

라이브러리 만드는 방법: 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;

 

전제: 정규성 검정 (차이)

 대응 표본 T 검정 (Paired samples T test)의 전제 조건은 검정하고자 하는 두 변수의 차이가 정규분포를 따른다는 것이다. 따라서 ALT와 간 기능 개선제 복용 후 ALT(ALT_POSTMED)의 차이를 구하고 정규성 검정을 시행한다. 

차이를 구하는 방법: 2022.10.06 - [통계 프로그램 사용 방법/SAS] - [SAS] 변수 계산 (산술 연산) - DATA, SET

정규성 검정을 하는 방법: 2022.08.12 - [기술 통계/SAS] - [SAS] 정규성 검정 - PROC UNIVARIATE

 

DATA hong.df;
SET hong.df;
*차이를 나타내는 변수는 ALT_DIF;
ALT_DIF=ALT-ALT_POSTMED;
RUN;

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

 

결과

N 수는 1000으로 2000 미만이므로 Shapiro-Wilk 통계량의 p-value는 0.05 이상이다. Q-Q plot상에서 대부분의 데이터가 직선상에 있으며, 히스토그램 또한 정규분포를 따르는 것처럼 보이므로 두 변수의 차는 정규분포를 따른다고 할 수 있다. 따라서 대응 표본 T 검정 (Paired samples T test)를 시행할 수 있다.

 

대응 표본  T 검정 코드

PROC TTEST DATA=hong.df;
PAIRED ALT*ALT_POSTMED;
RUN;

 

PROC TTEST DATA=hong.df; : T-test를 시행할 것이고, 데이터는 hong 라이브러리의 df 데이터를 이용하라.
PAIRED ALT*ALT_POSTMED; : 대응 표본 T 검정(PAIRED)을 시행할 것이고, 각각의 변수는 ALT와 ALT_POSTMED이다.

 

결과

ALT의 평균이 ALT_POSTMED의 평균에 비해 2.8363만큼 더 크다. 그리고 그 차이의 p-value는 <0.0001로 유의미하다. 따라서 귀무가설을 기각할 수 있다. 본 검정의 귀무가설은 다음과 같다.

 귀무가설:  $H_0$=간 기능

이를 기각하므로 동일하지 않다고 할 수 있고, 간 기능 개선제 복용 후 ALT가 2.8363만큼 낮아져 간 기능에 호전이 있다고 평가할 수 있다.  

 

$$ALT = ALT\_POSTMED$$

$$ \therefore ALT\_DIF=ALT-ALT\_POSTMED=0$$

 

즉, 대응 표본 T 검정을 시행하는 것은 ALT_DIF변수의 평균이 0과 같은지 검정하는 일표본 T검정 (One sample T test)와 같은 것이다. 일표본 T 검정은 다음 링크에서 확인할 수 있다. 2022.09.30 - [모평균 검정/SAS] - [SAS] 일표본 T검정 (One-sample T-test) - PROC TTEST

 

일표본 T 검정으로 대응 표본 T 검정 시행하기 - 코드

PROC TTEST DATA=hong.df H0=0;
VAR ALT_DIF;
RUN;

 

결과

위와 같은 결과를 내는 것을 알 수 있다.

 

코드 정리

*라이브러리 지정하기;
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;

*차이를 나타내는 변수 만들기;
DATA hong.df;
SET hong.df;
*차이를 나타내는 변수는 ALT_DIF;
ALT_DIF=ALT-ALT_POSTMED;
RUN;

*정규성 검정 시행하기;
PROC UNIVARIATE DATA=hong.df NORMAL PLOT;
VAR ALT_DIF;
HISTOGRAM ALT_DIF/ NORMAL (MU=EST SIGMA=EST);
RUN;

*대응 표본 T 검정 시행하기 (1);
PROC TTEST DATA=hong.df;
PAIRED ALT*ALT_POSTMED;
RUN;

*대응 표본 T 검정 시행하기 (2);
PROC TTEST DATA=hong.df H0=0;
VAR ALT_DIF;
RUN;

 

SAS 대응 표본 T검정 (Paired samples T-test) 정복 완료!

작성일: 2022.10.07.

최종 수정일: 2022.10.07.

이용 프로그램: SAS v9.4

운영체제: Windows 10

 

반응형

+ Recent posts