[ R ] 집단간 차이분석 - 두 집단 검정 #2
두 집단 검정
독립된 두 집단 간의 비율 차이 검정과 평균 차이 검정
비율차이 검정: 기술통계량으로 빈도수에 대한 비율에 의미
평균 차이 검정: 표본평균에 의미
(1) 두 집단 비율 검정
두 집단의 비율이 같은지 또는 다른지를 검정
prop.test()함수 이용 비율차이 검정
단일표본 이항분포 비율 검정: binom.test() 함수 이용
독립 표본 이항분포 비율 검정: prop.test() 함수 이용
ex)-------------------------------------------------------------------------------------------------------------------------------------------------------
귀무가설: 두가지 교육 방법에 따라 교육생의 만족율에 차이가 없다.
연구가설: 두가지 교육 방법에 따라 교육생의 만족율에 차이가 있다.
연구환경: IT교육센터에서 PT를 이용하는 프레젠테이션 교육 방법과 실시간 코딩 교육 방법을 적용하여 교육을 시행하였다. 두 가지 교육 방법 중 더 효과적인 교육 방법을 조사하기 위해서 교육생 300명을 대상으로 설문 조사를 시행하였다.
------------------------------------------------------------------------------------------------------------------------------------------------------------
1. 집단별 subset작성과 교차분석
교육방법에 따라서 두 집단으로 subset 구성, 전처리 과정을 통해 데이터 정제
ex) 두 집단의 subset 작성과 교차분석 수행
#1 파일 가져오기
data <- read.csv("C:/two_sample.csv", header = TRUE) head(data) # no gender method survey score # 1 1 1 1 1 5.1 # 2 2 1 1 0 5.2 # 3 3 1 1 1 4.7 # 4 4 2 1 0 4.8 # 5 5 1 1 1 5.0 # 6 6 1 1 1 5.4 |
#2 두 집단의 subset 작성 및 데이터 전처리
x <- data$method y <- data$survey x # [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 # [30] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 # [59] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 # [88] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 # [117] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 # [146] 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 # [175] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 # [204] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 # [233] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 # [262] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 # [291] 2 2 2 2 2 2 2 2 2 2 y # [1] 1 0 1 0 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 # [30] 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1 1 1 0 1 1 # [59] 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 0 1 1 1 1 0 1 1 0 1 0 1 1 # [88] 1 0 1 1 1 0 1 1 0 1 1 0 1 0 1 0 1 1 1 1 0 1 1 0 1 0 1 1 1 # [117] 1 0 1 1 1 1 0 1 1 0 1 1 1 0 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 # [146] 1 1 1 1 0 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 0 1 1 # [175] 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 # [204] 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 # [233] 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 # [262] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 # [291] 1 1 1 1 1 1 1 1 1 1 |
#3 집단별 빈도분석
table(x) # x # 1 2 # 150 150 table(y) # y # 0 1 # 55 245 |
#4 두 변수에 대한 교차분석
table(x,y,useNA = "ifany") # y # x 0 1 # 1 40 110 # 2 15 135 |
useNA =”ifany” : 결측치까지 출력
2. 두 집단 비율 차이 검정
명목척도의 비율을 바탕으로 prop.test()함수를 이용하여 두 집단 간 이항분포의 양측 검정을 통해서 검정 통계량을 구한 후 이를 이용하여 가설 검정
prop.test(x, n, p=NULL, alternative=c(“two.sided”, “less”, “greater”), conf.level=0.95, correct =TRUE)
ex)---------------------------------------------------------------------------------------------------------------------------------------------------------
첫번째 벡터는 PT교육과 코딩 교육 방법에 대한 만족 수(성공 횟수)이고, 두 번째 벡터는 두 교육 방법에 대한 변량의 길이(시행횟수)이다.
prop.test(c(110, 135), c(150, 150))
---------------------------------------------------------------------------------------------------------------------------------------------------------
ex) 두 집단 비율 차이 검정
PT교육 방법과 코딩 교육 방법에 따른 만족도에 차이가 있는지 검정
#1 양측검정
prop.test(c(110, 135), c(150, 150), alternative = "two.sided", conf.level = 0.95) # 2-sample test for equality of proportions with # continuity correction # # data: c(110, 135) out of c(150, 150) # X-squared = 12.824, df = 1, p-value = 0.0003422 # alternative hypothesis: two.sided # 95 percent confidence interval: # -0.25884941 -0.07448392 # sample estimates: # prop 1 prop 2 # 0.7333333 0.9000000 |
#2 방향성을 갖는 단측 가설 검정
prop.test(c(110, 135), c(150, 150), alter = "greater", conf.level = 0.95) # 2-sample test for equality of proportions with # continuity correction # # data: c(110, 135) out of c(150, 150) # X-squared = 12.824, df = 1, p-value = 0.9998 # alternative hypothesis: greater # 95 percent confidence interval: # -0.2451007 1.0000000 # sample estimates: # prop 1 prop 2 # 0.7333333 0.9000000 prop.test(c(110, 135), c(150, 150), alter = "less", conf.level = 0.95) # 2-sample test for equality of proportions with # continuity correction # # data: c(110, 135) out of c(150, 150) # X-squared = 12.824, df = 1, p-value = 0.0001711 # alternative hypothesis: less # 95 percent confidence interval: # -1.00000000 -0.08823265 # sample estimates: # prop 1 prop 2 # 0.7333333 0.9000000 |
#결과
Less인 경우 p-value < α 이므로 두 번째 교육 방법인 코딩 교육 방법이 PT 교육 방법보다 만족도가 더 크다고 볼 수 있다. 즉 코딩 교육 방법이 PT 교육 방법보다 교육생들에게 만족도가 더 높은 것으로 분석된다.
(2) 두 집단 평균 검정 (독립 표본 T-검정)
두 집단을 대상으로 평균 차이 검정을 통해서 두 집단의 평균이 같은지 또는 다른지를 검정
독립 표본평균 검정은 두 집단간 분산의 동질성 검증(정규성 검정)여부를 판정한 후 정규분포이면 T-검정, 정규분포가 아니면 윌콕스(Wilcox)검정을 수행
두 검정 방법의 선택은 단일 표본평균 검정과 동일
ex)---------------------------------------------------------------------------------------------------------------------------------------------------------
연구가설
H0: 교육 방법에 따른 두 집단 간 실기시험의 평균에 차이가 없다.
H1: 교육 방법에 따른 두 집단 간 실기시험의 평균에 차이가 있다.
연구환경: IT 교육센터에서 PT를 이용한 프레젠테이션 교육 방법과 실시간 코딩 교육 방법을 적용하여 1개월 동안 교육받은 교육생 각 150명을 대상으로 실기시험을 시행하였다. 두 집단 간 실기시험의 평균에 차이가 있는지 검정한다.
------------------------------------------------------------------------------------------------------------------------------------------------------------
1. 독립 표본평균 계산
Outlier 제거 후 독립 표본평균 계산
ex) 독립 표본평균 계산
#1 파일 가져오기
data <- read.csv("C:/two_sample.csv", header = TRUE) head(data) # no gender method survey score # 1 1 1 1 1 5.1 # 2 2 1 1 0 5.2 # 3 3 1 1 1 4.7 # 4 4 2 1 0 4.8 # 5 5 1 1 1 5.0 # 6 6 1 1 1 5.4 summary(data) # no gender method # Min. : 1.00 Min. :1.00 Min. :1.0 # 1st Qu.: 75.75 1st Qu.:1.00 1st Qu.:1.0 # Median :150.50 Median :1.00 Median :1.5 # Mean :150.50 Mean :1.42 Mean :1.5 # 3rd Qu.:225.25 3rd Qu.:2.00 3rd Qu.:2.0 # Max. :300.00 Max. :2.00 Max. :2.0 # # survey score # Min. :0.0000 Min. :3.000 # 1st Qu.:1.0000 1st Qu.:5.100 # Median :1.0000 Median :5.600 # Mean :0.8167 Mean :5.685 # 3rd Qu.:1.0000 3rd Qu.:6.300 # Max. :1.0000 Max. :8.000 # NA's :73 |
#2 두 집단의 subset작성 및 데이터 전처리
result <- subset(data,!is.na(score),c(method,score)) head(result) # method score # 1 1 5.1 # 2 1 5.2 # 3 1 4.7 # 4 1 4.8 # 5 1 5.0 # 6 1 5.4 |
!is.na() 속성: NA가 아닌 것만 추출
#3 데이터 분리
a <- subset(result,method==1) b <- subset(result,method==2) a1 <- a$score b1 <- b$score a1 # [1] 5.1 5.2 4.7 4.8 5.0 5.4 5.0 4.4 4.9 5.2 4.3 5.8 5.7 5.1 # [15] 5.3 5.4 5.1 4.8 4.1 4.8 5.0 5.2 4.7 4.4 5.2 5.3 4.0 6.1 # [29] 6.3 4.1 5.0 5.3 4.0 5.1 3.8 5.6 5.3 7.0 6.4 5.5 4.7 3.9 # [43] 4.1 5.0 6.0 3.3 5.6 5.6 6.2 5.9 3.4 6.3 6.4 3.0 6.8 5.2 # [57] 5.5 5.8 5.4 6.0 6.7 5.2 5.6 5.5 6.1 5.0 5.7 5.7 5.1 5.7 # [71] 6.3 7.1 6.5 4.9 6.2 7.2 6.5 6.4 6.8 5.8 6.7 7.7 6.9 7.7 # [85] 6.7 6.2 6.1 6.4 5.8 5.2 7.9 6.4 6.3 6.1 5.3 6.3 4.8 6.0 # [99] 6.9 6.1 4.3 4.9 5.5 6.7 5.4 5.3 6.5 6.2 5.9 b1 # [1] 4.9 5.2 5.3 4.8 5.0 5.4 5.0 5.4 4.9 6.3 5.2 5.9 5.8 5.7 # [15] 5.1 5.3 5.4 5.1 4.8 4.7 4.8 5.0 5.2 4.7 4.8 4.4 5.2 5.3 # [29] 7.0 4.0 6.1 6.3 4.1 7.0 5.3 4.0 8.0 4.8 5.6 5.0 6.0 6.4 # [43] 5.5 4.7 4.8 5.1 8.0 6.0 5.3 5.6 5.6 6.2 5.9 5.4 6.3 6.4 # [57] 5.0 6.8 5.4 5.2 5.5 5.8 5.8 5.4 6.0 6.7 5.2 5.6 5.5 6.1 # [71] 5.0 5.7 5.7 7.3 5.1 5.7 6.3 7.1 6.5 5.9 6.2 7.2 6.5 6.4 # [85] 6.8 5.8 5.3 6.7 7.7 6.9 5.0 7.7 6.7 7.0 6.2 6.1 6.4 5.8 # [99] 8.0 7.9 6.4 6.3 6.1 5.3 6.3 5.8 6.0 6.9 6.1 5.6 4.9 5.5 # [113] 6.7 5.4 5.3 6.5 6.2 5.9 |
#4 기술통계량
length(a1) # 109 length(b1) # 118 mean(a1) # 5.556881 mean(b1) # 5.80339 |
2. 동질성 검정
모집단에서 추출된 표본을 대상으로 분산의 동질성 검정
var.test() 함수: F검정 이용
분산의 동질성 검정: 분산의 동질성 검정은 등분산 가정과 등분산 가정되지 않음(이분산)에 따라서 결과가 상이
등분산: 모집단에서 추출된 표본이 균등하게 추출된 경우
이분산: 추출된 표본이 특정 계층으로 편중되어 추출되는 경우
동질성 검정의 귀무가설: 두 집단 간 분포의 모양이 동질적이다.
ex) 두 집단 간의 동질성 검정
var.test(a1,b1) # F test to compare two variances # # data: a1 and b1 # F = 1.2158, num df = 108, denom df = 117, p-value = 0.3002 # alternative hypothesis: true ratio of variances is not equal to 1 # 95 percent confidence interval: # 0.8394729 1.7656728 # sample estimates: # ratio of variances # 1.215768 |
3. 두 집단 평균 차이 검정
두 집단 간의 동질성 검정에서 분포의 형태가 동질하다고 분석
t.test()함수 이용 두 집단 간 평균 차이 검정
ex) 두 집단 평균 차이 검정
#1 양측검정
t.test(a1, b1, altr = "two.sided", conf.int = TRUE, conf.level = 0.95) # 0.0411 # Welch Two Sample t-test # # data: a1 and b1 # t = -2.0547, df = 218.19, p-value = 0.0411 # alternative hypothesis: true difference in means is not equal to 0 # 95 percent confidence interval: # -0.48296687 -0.01005133 # sample estimates: # mean of x mean of y # 5.556881 5.803390 |
#2 방향성을 갖는 단측 가설 검정
t.test(a1,b1, alter="greater", conf.int=TRUE, conf.lever=0.95) #p-value = 0.9794 # Welch Two Sample t-test # # data: a1 and b1 # t = -2.0547, df = 218.19, p-value = 0.9794 # alternative hypothesis: true difference in means is greater than 0 # 95 percent confidence interval: # -0.4446915 Inf # sample estimates: # mean of x mean of y # 5.556881 5.803390 t.test(a1,b1, alter="less", conf.int=TRUE, conf.lever=0.95) #p-value = 0.02055 # Welch Two Sample t-test # # data: a1 and b1 # t = -2.0547, df = 218.19, p-value = 0.02055 # alternative hypothesis: true difference in means is less than 0 # 95 percent confidence interval: # -Inf -0.04832672 # sample estimates: # mean of x mean of y # 5.556881 5.803390 |
alter = “greater” case
alter = “less” case
#3 결과: a1집단의 평균이 b1집단의 평균보다 더 작은 것으로 나타났다. 따라서 “교육 방법에 따른 두 집단 간 실기시험의 평균에 차이가 있다’는 연구가설이 채택된다
(3) 대응 두 집단 평균 검정 (대응 표본 T-검정
대응 표본평균 검정(Paired samples t-test): 동일한 표본을 대상으로 측정된 두 변수의 평균 차이를 검정
사전검사와 사후검사의 평균 차이를 검증할 때 많이 사용
ex)---------------------------------------------------------------------------------------------------------------------------------------------------------
대응 표본평균 검정은 독립 표본평균 검정 방법과 동일
연구가설
H0: 교수법 프로그램을 적용하기 전 학생들의 학습력과 교수법 프로그램을 적용한 후 학생들의 학습력에 차이가 없다.
H1: 교수법 프로그램을 적용하기 전 학생들의 학습력과 교수법 프로그램을 적용한 후 학생들의 학습력에 차이가 있다.
연구환경: A 교육센터에서 교육생 100명을 대상으로 교수법 프로그램 적용 전에 실기시험을 시행한 후 1개월 동안 동일한 교육생에게 교수법 프로그램을 제공한 후 실기시험을 시행한 점수와 평균에 차이가 있는지 검정한다
-------------------------------------------------------------------------------------------------------------------------------------------------------------
1. 대응 표본평균 계산
대응하는 두 집단의 subset을 생성한 후 두 집단 간의 평균 차이 검정을 위해서 집단 간 평균 계산
ex) 대응 표본평균 계산
#1 파일 가져오기
data <- read.csv("C:/paired_sample.csv", header = TRUE) head(data) # no before after # 1 1 5.1 6.3 # 2 2 5.2 6.3 # 3 3 4.7 6.5 # 4 4 4.8 5.9 # 5 5 5.0 6.5 # 6 6 5.4 7.3 |
#2 대응 두집단 subset 생성
result <- subset(data,!is.na(after),c(before,after)) x <- result$before y <- result$after x;y # [1] 5.1 5.2 4.7 4.8 5.0 5.4 5.0 5.0 4.4 4.9 6.0 5.2 6.0 4.3 5.8 5.7 5.0 5.1 # [19] 5.3 6.0 5.4 5.1 4.8 4.1 4.8 5.0 5.0 5.2 4.7 6.0 4.4 5.2 5.3 5.5 4.0 6.1 # [37] 5.0 6.3 4.1 5.0 5.0 5.3 4.0 5.1 3.8 4.9 5.6 5.3 6.0 7.0 6.4 5.0 5.5 4.2 # [55] 4.7 4.7 3.9 3.9 4.1 5.0 5.0 6.0 3.3 5.6 5.6 5.6 5.6 6.2 5.0 5.9 3.4 4.3 # [73] 5.0 5.4 6.0 5.0 5.0 5.2 5.5 4.0 5.8 4.8 5.4 6.7 5.2 5.6 5.0 5.5 6.1 5.0 # [91] 7.0 5.7 5.7 5.0 5.1 5.7 # [1] 6.3 6.3 6.5 5.9 6.5 7.3 5.9 6.2 6.0 7.2 6.5 6.4 6.8 5.2 7.2 6.3 6.0 6.7 # [19] 7.7 7.2 6.9 6.0 7.7 6.3 6.7 6.2 6.1 6.4 5.8 6.5 7.9 6.4 6.3 6.1 5.3 7.3 # [37] 6.5 7.2 6.9 6.1 7.0 5.9 5.5 6.7 5.4 5.3 6.5 6.2 6.2 7.3 5.2 5.3 5.8 6.5 # [55] 5.4 5.4 5.0 5.6 6.0 6.3 5.2 5.2 5.9 5.8 6.2 6.3 6.3 5.9 6.0 7.2 5.1 5.8 # [73] 5.7 6.2 7.3 6.3 5.2 6.2 6.3 5.2 5.2 5.3 7.0 7.3 6.0 6.3 5.6 7.0 6.0 5.3 # [91] 8.0 5.9 6.0 5.6 6.2 6.0 |
#3 기술통계량 계산
length(x) # 96 length(y) # 96 mean(x) # 5.16875 mean(y) # 6.220833 |
대응 표본은 짝을 이루기 때문에 서로 표본 수가 같아야 한다.
2. 동질성 검정
독립 표본의 동질성 검정과 동일하게 var.test()함수 이용
ex) 대응표본의 동질성 검정
var.test(x,y,pared=TRUE) # F test to compare two variances # # data: x and y # F = 1.0718, num df = 95, denom df = 95, p-value = 0.7361 # alternative hypothesis: true ratio of variances is not equal to 1 # 95 percent confidence interval: # 0.7151477 1.6062992 # sample estimates: # ratio of variances # 1.071793 |
검정 결과가 유의수준 0.05보다 큰 경우 두 집단 간 분포의 모양이 동질
3. 대응 두 집단 평균 차이 검정
대응되는 두 집단 간의 동질성 검정에서 분포 형태가 동질하다고 분석되었기 때문에 t.test()함수 이용 대응 두 집단 간 평균 차이 검정
ex) 대응 두 집단 평균 차이 검정
#1 양측 검정
t.test(x, y, paired = TRUE, alter = "two.sided", conf.int = TRUE, conf.level = 0.95) # Paired t-test # # data: x and y # t = -13.642, df = 95, p-value < 2.2e-16 # alternative hypothesis: true difference in means is not equal to 0 # 95 percent confidence interval: # -1.205184 -0.898983 # sample estimates: # mean of the differences # -1.052083 |
#2 방향성을 갖는 단측 가설 검정
t.test(x,y,paried=TRUE, alter = "greater", conf.int = TRUE, conf.level = 0.95) # Welch Two Sample t-test # # data: x and y # t = -10.346, df = 189.77, p-value = 1 # alternative hypothesis: true difference in means is greater than 0 # 95 percent confidence interval: # -1.220165 Inf # sample estimates: # mean of x mean of y # 5.168750 6.220833 t.test(x, y, paired = TRUE, alter = "less", conf.int = TRUE, conf.level = 0.95) # Paired t-test # # data: x and y # t = -13.642, df = 95, p-value < 2.2e-16 # alternative hypothesis: true difference in means is less than 0 # 95 percent confidence interval: # -Inf -0.9239849 # sample estimates: # mean of the differences # -1.052083 |
alter = “greater” case
alter = “less” case