Practice makes perfect
[R] 집단 간 차이 분석 (part_2 두 집단 분석) 본문
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에서 귀무가설이 기각되 었다. 따라서 교수법 프로그램 적용 전과 적용 후의 두 집단간 학습력의 평균에 차이가 있다. 라고 말할 수 있다. 또한 단측검정을 실시한 결과 교수법 프로그램 적용 전 학습력이 교수법프로그램 적용 후 학습력 보다 크지 않은 것으로 나타났다. 즉 교수법 프로그램이 학습력에 효과가 있는 것으로 분석 된다.
'빅데이터 > R' 카테고리의 다른 글
[R] 요인분석(Factor Analysis) (1) | 2020.07.16 |
---|---|
[R] 집단 간 차이 분석 (part_3 세 집단 분석(분산 분석)) (0) | 2020.07.16 |
[R] 집단 간 차이 분석 (part_1 단일 집단 분석) (0) | 2020.07.15 |
[R] 추정(estimation) + (표본크기 결정) (0) | 2020.07.15 |
[R] 카이제곱(chi-square 검정) (1) | 2020.07.15 |