Practice makes perfect

[R] 집단 간 차이 분석 (part_2 두 집단 분석) 본문

빅데이터/R

[R] 집단 간 차이 분석 (part_2 두 집단 분석)

kerpect 2020. 7. 15. 18:21
728x90
반응형
SMALL

1. 두 집단 비율 검정

방법 : 두 집단간 비율 차이에 관한 분석


작업절차


1. 실습 파일 가져오기
2. 두집단 subset 작성(데이터 정제,전처리)
   -> 데이터 정체, 전처리
   -> 기술 통계량 - 빈도수
   -> 두변수(집단)에 대한 교차 분석
3. 두집단 비율 차이 검정

   -> prop.test() 

 

분석절차

 

파일 가져오기 -> 데이터 전처리 -> 두 집단 subset 생성 -> prop.test() -> 검정통계량 분석 

 

<연구가설>

연구가설(H1) : 두 가지 교육방법에 따라 교육생의 만족율에 차이가 있다.
귀무가설(H0) : 두 가지 교육방법에 따라 교육생의 만족율에 차이가 없다.

 

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

 

 해당변수: method(명목척도), survey(명목척도)
 변수척도: 명목척도: 빈도수(기술통계량)

 

 

1단계 데이터 가져오기 

data <- read.csv("C:/workspaces/R/data/two_sample.csv", header = T)

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

str(data)

- 출력값 -
'data.frame':	300 obs. of  5 variables:
 $ no    : int  1 2 3 4 5 6 7 8 9 10 ...
 $ gender: int  1 1 1 2 1 1 2 1 1 1 ...
 $ method: int  1 1 1 1 1 1 1 1 1 1 ...
 $ survey: int  1 0 1 0 1 1 0 1 1 0 ...
 $ score : num  5.1 5.2 4.7 4.8 5 5.4 NA 5 4.4 4.9 ...

View(data)

 

 

 

2단계 전처리 (두 집단 subset 작성 및 데이터 전처리 )

x <- data$method # 교육방법(1:PT,2:Coding)
y <- data$survey # 만족도(1:만족, 0:불만족)

 

3단계 집단별 빈도분석

table(x) 
table(y)

- 출력값  - 
x
  1   2 
150 150

y
  0   1 
 55 245

 

4단계 두 변수에 대한 교차분석 

table(x, y, useNA = "ifany") # 결측치 존재시 display 

- 출력값 - 
   y
x   0   1
1  40 110
2  15 135

 

-- 두 집단 비율 차이 검정 -- 

 

단계1. 양측 검정

prop.test(c(110,135), c(150,150)) # PT/Coding 교육 방법에 대한 비율 차이 검정.(만족도 넣음)
prop.test(c(110,135), c(150,150), alternative = "two.sided", conf.level = 0.95) 

 p-value = 0.0003422 => 귀무가설 기각.연구가설 채택 

 

단계2. 방향성이 있는 단측가설 검정: PT > Coding

 

- alternative = "greater"

prop.test(c(110,135), c(150,150), alternative = "greater", conf.level = 0.95)

 

p-value = 0.9998 > 0.05(PT > Coding) -- 기각 

 

 

- alternative = "less"

prop.test(c(110,135), c(150,150), alternative = "less", conf.level = 0.95)

 

p-value = 0.0001711 < 0.05(PT < Coding) 결론 : pt 만족도가 코딩 만족도 보다 떨어진다. 

 

 

 

 

 

 

 

2. 두 집단 평균 검정(독립표본 T검정)

방법 : 두 집단간 평균 차이에 관한 분석

 

작업절차
1. 실습 파일 가져오기
2. 두 집단 subset 작성(데이터 정제 , 전처리)
3. 두 집단간 동질성 검증(정규 분포 검정)
   -> var.test()

4. 두 집단 평균 차이 검정

   -> t.test() or wilcox.test()

 

 

분석절차 

 

< 연구가설 > 

- 연구가설(H1) : 교육방법에 따른 두 집단 간 실기시험의 평균에 차이가 있다.
- 귀무가설(H0) : 교육방법에 따른 두 집단 간 실기시험의 평균에 차이가 없다.

 

<연구환경>
IT 교육센터에서 PT를 이용한 프레젠테이션 교육방법과 실시간 코딩 교육 방법을 적용하여 1개월 동안 교육 받은 교육생 각 150명을 대상으로 실기시험을 실시 하였다. 두 집단간 실기시험의 평균에 차이가 있는가 검정한다.

 

 해당변수: method(명목척도), score(비율척도)
 대상변수: 교육방법, 시험성적
 모형(모델) : 교육방법(A/B) -> 시험성적(비율-성적)

 

 

1단계 파일 가져오기 (데이터 파악)

data <- read.csv("C:/workspaces/R/data/two_sample.csv", header = T)

str(data)

- 출력값 - 
'data.frame':	300 obs. of  5 variables:
 $ no    : int  1 2 3 4 5 6 7 8 9 10 ...
 $ gender: int  1 1 1 2 1 1 2 1 1 1 ...
 $ method: int  1 1 1 1 1 1 1 1 1 1 ...
 $ survey: int  1 0 1 0 1 1 0 1 1 0 ...
 $ score : num  5.1 5.2 4.7 4.8 5 5.4 NA 5 4.4 4.9 ...

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) # score - NA's :73개 

- 출력값 -
     no             gender         method        survey           score      
 Min.   :  1.00   Min.   :1.00   Min.   :1.0   Min.   :0.0000   Min.   :3.000  
 1st Qu.: 75.75   1st Qu.:1.00   1st Qu.:1.0   1st Qu.:1.0000   1st Qu.:5.100  
 Median :150.50   Median :1.00   Median :1.5   Median :1.0000   Median :5.600  
 Mean   :150.50   Mean   :1.42   Mean   :1.5   Mean   :0.8167   Mean   :5.685  
 3rd Qu.:225.25   3rd Qu.:2.00   3rd Qu.:2.0   3rd Qu.:1.0000   3rd Qu.:6.300  
 Max.   :300.00   Max.   :2.00   Max.   :2.0   Max.   :1.0000   Max.   :8.000  
                                                                NA's   :73     
                                                                
View(data)

# 완전한 정수로 사용하고 싶으면 int 로 형변환하여 사용합니다. (as.integer) 

 

 

2단계 데이터 전처리 (두 집단 subset 작성 및 데이터 전처리)

- score의 NA 값 제거한 method와 score의 값만 result 변수에 저장
result <- subset(data, !is.na(score), c(method, score)) 

View(result)

 

3단계 교육 방법별로 분리

a <- subset(result, method == 1)
b <- subset(result, method == 2)

a1 <- a$score # PT 교육 받은 학생 점수
b1 <- b$score # coding 교육 받은 학생 점수 

head(a1);head(b1)

-출력값- 
[1] 5.1 5.2 4.7 4.8 5.0 5.4
[1] 4.9 5.2 5.3 4.8 5.0 5.4

 

4단계 기술 통계량 

- NA 값을 제외 - 

length(a1) 출력값 : [1] 109 (PT)
length(b1) 출력값 : [1] 118 (CODING)

 

-  동질성 검정(var.test)

var.test(a1, b1) # p-value = 0.3002 > α(유의수준) : t-검정

 결과 : 동질성을 가지고 있다. ( 0.3002 > 0.05 )  -> t.test() - ( T검정 사용) 

 

 

- 두 집단 평균 차이 검정 

 

단계1. 양측검정

t.test(a1, b1)
t.test(a1, b1, alternative = "two.sided", conf.level = 0.95)

결과 : p-value = 0.0411 < 0.05 - 교육방법 :  따른 두 집단간 실기시험의 평균에 차이가 있다.

 

 

단계2. 방향성을 갖는 단측가설 검정 

 

- alternative = "greater"

t.test(a1, b1, alternative = "greater", conf.level = 0.95)

결과 : p-value = 0.9794 : a1을 기준으로 비교 -> a1이 b1보다 크지 않다 (기각) 

 

 

- alternative = "less"

t.test(a1, b1, alternative = "less", conf.level = 0.95)

결과 : p-value = 0.02055 : a1을 기준으로 비교 -> a1이 b1보다 작다.

 

최종 결과 : 

유의수준 0.05에서 귀무가설이 기각 되었다. 따라서 교육방법에 따른 두 집단간 실기시험의 평균에 차이가 있다 라고 말할 수 있다. 단측검정을 실시한 결과 교육 방법1이 교육방법 2보다 크지 않은 것으로 나타났다. 즉 실시간 코딩 교육 방법이 교육효과가 더 높은것 으로 분석 된다.

 

 

 

3. 대응 두 집단 평균 검정(대응 표본 T검정)

 - 동일한 표본을 대상으로 측정된 두 변수의 평균 차이를 검정하는 분석방법.
 - 일반적으로 사전검사와 사후검사의 평균 차이를 검증할 때 많이 사용.

 

방법 : 대응 되는 두 집단간 평균 차이에 관한 분석

 

작업절차


1. 실습 파일 가져오기
2. 두 집단 subset 작성(데이터 정제, 전처리)
3. 두 집단간 동질성 검증(정규 분포 검정)

   -> var.test(x, y, paired = TRUE)

4. 두 집단 평균 차이검정

   -> t.test(x, y, paired = TRUE)

   -> wilcox.test(x, y, paired = TRUE) 

 

 

분석절차 

< 가설 설정 > 

연구가설(H1) : 교수법 프로그램을 적용하기 전 학생들의 학습력과 교수법 프로그램을 적용한 후 학생들의 학습력에 차이가 있다.

 

귀무가설(H0) : 교수법 프로그램을 적용하기 전 학생들의 학습력과 교수법 프로그램을 적용한 후 학생들의 학습력에 차이가 없다.

 

< 연구 환경 > 
A교육센터에서 교육생 100명을 대상으로 교수법 프로그램 적용 전에 실기시험을 실시한 후 1개월 동안 동일한 교육생에게 교수법 프로그램을 적용한 후 실기시험을 실시한 점수와 평균에 차이가 있는가 검정 한다.

 

 

 

1단계 파일 가져오기 

data <- read.csv("C:/workspaces/R/data/paired_sample.csv", header = T)

head(data) # no before after

- 출력값 - 
   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

summary(data) # NA 4개 

- 출력값 - 
       no             before          after      
 Min.   :  1.00   Min.   :3.000   Min.   :5.000  
 1st Qu.: 25.75   1st Qu.:4.800   1st Qu.:5.800  
 Median : 50.50   Median :5.100   Median :6.200  
 Mean   : 50.50   Mean   :5.145   Mean   :6.221  
 3rd Qu.: 75.25   3rd Qu.:5.600   3rd Qu.:6.500  
 Max.   :100.00   Max.   :7.000   Max.   :8.000  
                                  NA's   :4  
                                  
View(data)                                  

 

2단계 전처리( 대응 두 집단 subset 생성 ) 

result <- subset(data, !is.na(after), c(before, after)) # 96

head(result)

-출력값 - 
    before after
1    5.1   6.3
2    5.2   6.3
3    4.7   6.5
4    4.8   5.9
5    5.0   6.5
6    5.4   7.3

x <- result$before
y <- result$after

 

3단계 기술통계량 

length(x) 출력값 : [1] 96 ()
length(y) 출력값 : [1] 96

- NA 제외한 평균 - 
mean(x) 출력값 :  [1] 5.16875 
mean(y, na.rm=T) 출력값 : [1] 6.220833  

 

- 동질성 검정 

동질성 검정의 귀무가설 : 대응 두 집단 간 분포의 모양이 동질적이다.

 

- 동일 집단이기 때문에 동질성을 가질 것 같지만, 집단이 중요한 것이 아니라 데이터의 분포가 중요하고, 전과 후의 점수의 분포도의 특징은 비교해야합니다.

var.test(x, y, paired=T) 

결과 p-value = 0.7361  > 0.05 : 동질성을 가지고 있다.  -> t.test() - ( T검정 사용) 

 

 

 

- 대응 두 집단 평균 차이 검정 

 

① 단계1: 양측검정

t.test(x, y, paired = T)

결과 :  p-value =  2.2e-16 < 0.05 : 귀무가설 기각

연구 가설 채택 : 교수법 프로그램을 적용하기 전 학생들의 학습력과 교수법 프로그램을 적용한 후 학생들의 학습력에 차이가 있다.

 

 

② 방향성을 갖는 단측가설 검정 

 

- alternative = "less"

t.test(x, y, paired = T, alternative = "less", conf.level = 0.95)

 p-value = 2.2e-16 < 0.05 /  x를 기준으로 비교 : x가 y보다 작다.

 

- alternative = "greater"

t.test(x, y, paired = T, alternative = "greater", conf.level = 0.95)

p-value = 1 > 0.05 / x 를 기준으로 비교 : x가 y보다 크지 않다. 

 

 

최종 결과 : 유의수준 0.05에서 귀무가설이 기각되 었다. 따라서 교수법 프로그램 적용 전과 적용 후의 두 집단간 학습력의 평균에 차이가 있다. 라고 말할 수 있다. 또한 단측검정을 실시한 결과 교수법 프로그램 적용 전 학습력이 교수법프로그램 적용 후 학습력 보다 크지 않은 것으로 나타났다. 즉 교수법 프로그램이 학습력에 효과가 있는 것으로 분석 된다.

728x90
반응형
LIST