통계기반 데이터분석

[ R ] 집단간 차이분석 - 두 집단 검정 #2

yul_S2 2022. 11. 23. 12:23
반응형

두 집단 검정

독립된 두 집단 간의 비율 차이 검정과 평균 차이 검정

비율차이 검정: 기술통계량으로 빈도수에 대한 비율에 의미

평균 차이 검정: 표본평균에 의미

 

(1) 두 집단 비율 검정

두 집단의 비율이 같은지 또는 다른지를 검정

prop.test()함수 이용 비율차이 검정

단일표본 이항분포 비율 검정: binom.test() 함수 이용

독립 표본 이항분포 비율 검정: prop.test() 함수 이용

 

ex)-------------------------------------------------------------------------------------------------------------------------------------------------------

귀무가설: 두가지 교육 방법에 따라 교육생의 만족율에 차이가 없다.

연구가설: 두가지 교육 방법에 따라 교육생의 만족율에 차이가 있다.

 

연구환경: IT교육센터에서 PT를 이용하는 프레젠테이션 교육 방법과 실시간 코딩 교육 방법을 적용하여 교육을 시행하였다. 두 가지 교육 방법 중 더 효과적인 교육 방법을 조사하기 위해서 교육생 300명을 대상으로 설문 조사를 시행하였다.

------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 1.  집단별 subset작성과 교차분석

교육방법에 따라서 두 집단으로 subset 구성, 전처리 과정을 통해 데이터 정제

 

ex) 두 집단의 subset 작성과 교차분석 수행

two_sample.csv
0.00MB

 

 

#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


# [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) 대응 표본평균 계산

paired_sample.csv
0.00MB

 

 

#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

 

 

 

 

 

반응형