통계기반 데이터분석

[ R ] 집단간 차이분석 - 세 집단 검정 #3

yul_S2 2022. 11. 23. 13:58
반응형

세 집단 검정

 

(1) 세 집단 비율 검정

세 집단을 대상으로 비율 차이 검정을 통해서 세 집단 간의 비율이 같은지 또는 다른지를 검정

데이터 대상 전처리 과정(결측치와 이상치 제거) 후 비교대상의 세 집단 분류 후 prop.test()함수로 비율 차이 검정

두 집단 및 세 집단 이상의 비율 검정은 prop.test()함수 이용

 

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

연구가설

H0: 세 가지 교육 방법에 따른 집단 간 만족율에 차이가 없다.

H1: 세 가지 교육 방법에 따른 집단 간 만족율에 차이가 있다.

연구환경: IT 교육센터에서 세 가지 교육 방법을 적용하여 교육을 시행하였다. 세 가지 교육 방법 중 더 효과적인 교육 방법을 조사하기 위해서 교육생 150명을 대상으로 설문 조사를 시행하였다

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

 

 

 1. 세 집단 subset 작성과 기술통계량 계산

비율 검정을 위한 데이터 셋을 대상으로 전처리 과정을 통해 데이터를 정제한 후 비율 검정에 필요한 기술통계량을 계산

ex) 세 집단 subset 작성과 기술통계량 계산

three_sample.csv
0.00MB

 

 

#1 파일 가져오기

data <- read.csv("C:/three_sample.csv", header = TRUE) 
head(data)

  no method survey score
1  1      1      1   3.2
2  2      2      0    NA
3  3      3      1   4.7
4  4      1      0    NA
5  5      2      1   7.8
6  6      3      1   5.4

 

 

#2 세 집단 subset 작성(데이터 전처리)

method <- data$method
survey <- data$survey
method;survey

# [1] 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2
# [30] 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1
# [59] 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3
# [88] 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2
# [117] 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1
# [146] 2 3 1 2 3
# [1] 1 0 1 0 1 1 0 0 1 0 1 1 0 1 1 0 0 0 1 1 0 1 1 0 1 1 1 0 0
# [30] 1 1 0 1 1 1 1 0 1 1 0 1 1 1 0 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 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 0 1 1 1 1 1
# [117] 1 0 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0
# [146] 1 1 1 1 1

 

 

#3 기술통계량(빈도수)

table(method,useNA = "ifany")
# method
# 1  2  3 
# 50 50 50

table(method,survey,useNA = "ifany")

# survey
# method  0  1
# 1 16 34
# 2 13 37
# 3 11 39

 

 

 

 2. 세 집단 비율 차이 검정

명목척도의 비율을 바탕으로 pro.test()함수를 이용하여 세 집단 간 이항분포의 양측 검정을 통해서 검정 통계량을 구한 후 이를 이용하여 가설을 검정한다.

세 집단 비율 차이 검정을 위한 prop.test()함수의 형식을 적용한 예는 다음과 같다.

 

첫 번째 벡터는 방법1, 방법2, 방법3에 대한 만족 수(성공 횟수), 두번째 벡터는 세 교육 방법에 대한 변량의 길이(시행 횟수)이다.

 

 

ex)세 집단 비율 차이 검정

세 가지 교육 방법의 만족도에 차이가 있는지를 검정한다.

#1

prop.test(c(34,37,39),c(50,50,50))

# 3-sample test for equality of proportions without
# continuity correction

# data:  c(34, 37, 39) out of c(50, 50, 50)
# X-squared = 1.2955, df = 2, p-value = 0.5232
# alternative hypothesis: two.sided
# sample estimates:
#   prop 1 prop 2 prop 3 
# 0.68   0.74   0.78 

 

#2 결과: p-value > α 때문에 세 가지 교육 방법 간의 만족도에 차이가 있다고 볼 수 없다. 즉 “세 가지 교육 방법에 따른 집단 간 만족율에 차이가 없다.”는 귀무가설을 기각할 수 없다

 

 

(2) 분산분석(F-검정)

분산분석(ANOVA Analysis):

T-검정과 동일하게 평균에 의한 차이 검정 방법

두 집단 이상의 평균 차이를 검정

 

분석분석을 시행할 때 주의점

 - 1개의 범주형 독립변수와 종속변수 간의 관계를 분석하는 일원 분산분석과 두 개 이상의 독립변수가 종속변수에 미치는 효과를 분석하는 이원 분산분석으로 분류.

 - 독립변수는 명목척도(성별), 종속변수는 등간척도나 비율척도로 구성되어야 한다.

 - 마케팅전략의 효과, 소비자 집단의 반응 차이 등과 같이 기업의 의사결정에 도움을 주는 비계량적인 독립변수와 계량적인 종속변수 간의 관계를 파악할 때 이용한다.

cf) ANOVA 가 아닌 여러 번 t 검정을 하면 1종 오류가능성이 증대됨

 

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

예) 세 집단을 비교하기 위해서는 세 번의 독립표본 t 검정을 수행하여야 함. 각 t 검정에서 유의수준을 0.05로 설정하였다면, 세 번 모두 귀무가설이 맞는데 귀무가설을 기각하지 않은 옳은 결정을 할 확률은 0.95 ✕ 0.95 ✕ 0.95 = 0.86, 1종 오류는 0.14 m개의 집단을 두 개씩 t 검정을 수행한다면 1종오류는? 1-(1-α) m(m-1)/2 분산분석에서 집단 간의 동질성 여부를 검정하기 위해서 barlett.test()함수 사용 cf) 두 집단 간 동질성 검정 시 var.test()함수 사용, 분석분석은 barlett.test()함수 사용 집단 간의 분포가 동질한 경우 분산분석을 위해 aov()함수 사용 집단 간의 분포가 동질하지 않는 경우 kruskal.test()함수 사용 27 사후비교(post hoc comparisons) • 귀무가설이 기각된 경우 어떤 집단간 차이가 있는지 2개씩 짝지어 차이를 분석함 • m개의 집단이면 mC2 번 비교 • 집단 i와 집단 j를 비교하는 경우 H0 : μi = μj H1 : μi ≠ μj 사후비교 방법 • Least Squate Difference method: 최소유의차, 검정력이 낮음 • Bonferroni’s method LSD: 방법을 보완 • Scheffe’s method: 사회과학에서 많이 사용 • Tukey’s method : 검정력이 높음 TukeyHSD()함수를 이용하여 사후검정 수행 연구가설 H0: 교육 방법에 따른 세 집단 간 실기시험의 평균에 차이가 없다. H1: 교육 방법에 따른 세 집단 간 실기시험의 평균에 차이가 있다. 연구환경: 세 가지 교육 방법을 적용하여 1개월 동안 교육받은 교육생 각 50명씩을 대상으로 실기시험을 시행하였다. 세 집단 간 실기시험의 평균에 차이가 있는지를 검정한다.

 

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

 

 1. 데이터 전처리

데이터 정제 (NA, 이상치 제거)

ex)  데이터 전처리 수행

#1 파일 가져오기

data <- read.csv("C:/three_sample.csv", header = TRUE) 
head(data)

  no method survey score
1  1      1      1   3.2
2  2      2      0    NA
3  3      3      1   4.7
4  4      1      0    NA
5  5      2      1   7.8
6  6      3      1   5.4

 

#2 데이터 전처리 (NA, 이상치 제거)

data <- subset(data,!is.na(score),c(method,score))
head(data)
# method score
# 1      1   3.2
# 3      3   4.7
# 5      2   7.8
# 6      3   5.4
# 8      2   8.4
# 9      3   4.4

 

#3 차트이용 outlier보기(데이터 분포 현황 분석)

par(mfrow =c(1,2))
plot(data$score) 



barplot(data$score) 




mean(data$score)
# 14.4472514.44725

 

#4 데이터 정제(이상치 제거, 평균(14)이상 제거

length(data$score)
# 91

data2 <- subset(data,score < 14)

length(data2$score)
# 88

head(data2)
# method score
# 1      1   3.2
# 3      3   4.7
# 5      2   7.8
# 6      3   5.4
# 8      2   8.4
# 9      3   4.4

 

 

 

#5 정제된 데이터 확인

x <- data2$score
x
# [1] 3.2 4.7 7.8 5.4 8.4 4.4 2.8 7.7 5.8 4.3 5.1 2.4 4.1 3.3
# [15] 5.0 5.9 4.7 6.7 5.2 4.0 4.1 7.4 8.5 5.1 3.8 3.3 7.0 5.4
# [29] 5.5 7.3 3.9 4.1 4.5 6.0 3.3 7.7 5.6 6.2 7.8 3.4 5.1 6.4
# [43] 3.0 6.8 6.3 5.5 5.8 5.4 6.0 6.7 5.2 5.6 3.0 6.1 2.7 5.7
# [57] 3.7 5.1 2.0 6.3 6.5 6.5 6.0 6.2 7.2 6.5 6.8 5.8 4.8 7.7
# [71] 3.7 7.7 6.7 3.4 6.4 5.1 7.9 6.3 6.1 6.3 6.0 6.9 4.3 3.7
# [85] 5.4 6.5 6.2 5.9

par(mfrow=c(1,1))
boxplot(x)



 

 

 2. 세 집단 subset작성과 기술 통계량

 

ex) 세 집단 subset작성과 기술통계량 구하기

#1 세집단 subset 작성

data2$method2[data2$method == 1] <- "방법1"
data2$method2[data2$method == 2] <- "방법2"
data2$method2[data2$method == 3] <- "방법3"

head(data2)
# method score method2
# 1      1   3.2   방법1
# 3      3   4.7   방법3
# 5      2   7.8   방법2
# 6      3   5.4   방법3
# 8      2   8.4   방법2
# 9      3   4.4   방법3

 

#2 교육 방법별 빈도수

table(data2$method2)

# 방법1 방법2 방법3 
# 31    27    30 

 

#3 교육 방법을 x변수에 저장

x <- table(data2$method2)
x

# 방법1 방법2 방법3 
# 31    27    30 

 

#4 교육 방법에 따른 시험성적 평균 구하기

y <- tapply(data2$score,data2$method2,mean)
y

# 방법1    방법2    방법3 
# 4.187097 6.800000 5.610000 

tapply()함수

 

 

#5 교육방법과 시험성적으로 데이터프레임 생성

df <- data.frame(교육방법=x,시험성적=y)
df
#            교육방법.Var1 교육방법.Freq    시험성적
# 방법1               방법1                 31      4.187097
# 방법2               방법2                 27      6.800000
# 방법3               방법3                 30      5.610000

 

 

 3. 세 집단 간 동질성 검정

barlett.test()함수 사용 검정 결과가 유의수준 0.05보다 큰 경우 세 집단 간 분포의 모양이 동질하다고 할 수 있다. 

barlett.test(종속변수 ~ 독립변수, data=dataset)

 

 

ex) 세 집단간 동질성 검정 수행

bartlett.test(score~method, data=data2)

# Bartlett test of homogeneity of variances

# data:  score by method
# Bartlett's K-squared = 3.3157, df = 2, p-value = 0.1905

* 틸드(~)를 이용하여 분석 식을 작성하면 집단별로 subset을 만들지 않고 사용할 수 있다.

 

 

 4. 분산분석 (세 집단 간 평균 차이 검정)

세 집단 간의 동질성 검정에서 분포 형태가 동질하다고 분석되었기 때문에 aov()함수를 이용하여 세 집단 간 평균 차이 검정 동질하지 않다면 kruskal.test()함수 이용하여 비모수 검정을 수행

 

ex) 분산분석 수행

help(aov)
result <- aov(score~method2, data=data2)

names(result)
# [1] "coefficients"  "residuals"     "effects"       "rank"         
# [5] "fitted.values" "assign"        "qr"            "df.residual"  
# [9] "contrasts"     "xlevels"       "call"          "terms"        
# [13] "model" 

summary(result)
# Df Sum Sq Mean Sq F value   Pr(>F)    
# method2      2  99.37   49.68   43.58 9.39e-14 ***
#   Residuals   85  96.90    1.14                     
# ---
#   Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

p-value 이용 검정 

 

 

 

 5. 사후검정

집단별로 평균의 차에 대한 비교를 통해 사후검정을 수행

 

ex) 사후검정 수행

#1 분산분석 결과에 대한 사후검정

TukeyHSD(result)
# Tukey multiple comparisons of means
# 95% family-wise confidence level

# Fit: aov(formula = score ~ method2, data = data2)

# $method2
# diff        lwr        upr     p adj
# 방법2-방법1  2.612903  1.9424342  3.2833723 0.0000000
# 방법3-방법1  1.422903  0.7705979  2.0752085 0.0000040
# 방법3-방법2 -1.190000 -1.8656509 -0.5143491 0.0001911

 

#2 사후검정 시각화

plot(TukeyHSD(result))



 

#3 결론: lwr과 upr은 신뢰구간의 하한값과 상한값이다. 95% 신뢰수준에서 신뢰구간의 범위가 0을 포함하지 않으면 차이가 통계적으로 유의하다. ‘통계적으로 유의하다’는 의미는 t값이 채택역을 벗어나거나, p adj값이 0.05미만인 경우를 말한다. 만약 신뢰구간에 0이 포함되면 차이가 통계적으로 유의하지 ㅇ낳다. .즉 집단 간의 평균 차이가 없다고 볼 수 있다. 따라서 유의미한 수준에서 세 집단 간 분산의 차이가 있다고 볼 수 있다 (세 집단 모두 p adj < 0.05)

 

반응형