R-카이제곱 검정

2 minute read

카이제곱 검정방법

카이제곱 데스트는 그룹간에 차이가 있는지 여부(= 그룹끼지 독립이 아닌지의 여부)에 대해 Chisquare 분포를 사용해 가설검정을 하는 방법이다. 그룹간에 차이가 있는지 없는지의 여부라는 의미는 그룹간의 비율차이가 있는지의 여부라는 의미이다.

독립변수: 범주형, 종속변수: 범주형

카이제곱의 검정 방법은 목적에 따라서 3가지로 크게 나눌수 있다.

  1. 독립성 검정: 두 변수는 서로 연관성이 있는가 없는가?
  2. 적합성 검정: 실제 표본이 내가 생각하는 분포와 같은가 다른가?
  3. 동일성 검정: 두 집단의 분포가 동일한가? 다른 분포인가?

참조: leerider 블로그

카이제곱 기본 이해

귀무가설공부와 합격은 상관이 없다.
대립가설공부와 합격은 상관이 있다.
결과p-value(0.083) > 0.05(95% 신뢰확률에서의 유의수준) => 귀무가설 채택


1
2
3
4
5
6
7
8
9
10
11
12
#카이제곱분석(교차분석) 기본이해

#카이제곱을 위한 패키지 설치
install.packages("gmodels")
library(gmodels)
#데이터 불러오기
study<-read.csv("C:/git/R/Data/pass_cross.csv")
head(study)
#데이터 가공 및 카이제곱 결과 확인
table(study$공부함,study$합격)
table(study$공부안함,study$불합격)
CrossTable(study$공부함,study$합격,chisq=T)


출력결과


카이제곱 기본 이해

귀무가설현재 사용중인 주사위는 게임에 적합하다.(1~6까지의 나오는 확률이 비슷하다.)
대립가설현재 사용중인 주사위는 게임에 적합하지 않다.(1~6까지의 나오는 확률이 다르다..)
결과p-value(0.01439) < 0.05(95% 신뢰확률에서의 유의수준) =>귀무가설 채택


1
2
3
#주사이 카지에곱 검정
#내가 생각하는 주사위는 나올확률이 동일하다.
chisq.test(c(4,6,17,16,8,9))


출력결과


카이제곱 독립성 검정

귀무가설부모의 학력수준과 자녀의 대학진학여부 간의 관련이 없다.
대립가설부모의 학력수준과 자녀의 대학진학여부 간의 관련이 있다.
결과p-value(0.2507057) > 0.05(95% 신뢰확률에서의 유의수준) => 귀무가설 채택


1
2
3
4
5
6
7
8
9
10
11
12
13
#독립성(관련성): 두 속성 간의 관계검정
data<-read.csv("C:/git/R/Data/cleanDescriptive.csv",header = T,fileEncoding = "UTF-8")
head(data)

#부모의 학력수준과 자녀의 대학여부 간 관련성 검정
x<-data$level2 #부모의 학력수준(독립변수:영향줌)
y<-data$pass2 #자녀의 대학진학여부(종속변수:영향받음)

result<-data.frame(level=x,pass=y)
dim(result)
table(result)

chisq.test(x,y,correct = F) #correct = F : 연속성 보정 미적용(기본값:T-연속성보정 적용)


출력결과


카이제곱 동질성 검정

귀무가설교육방법에 따른 교육생들의 만족도 차이가 없다.
대립가설교육방법에 따른 교육생들의 만족도 차이가 있다.
결과p-value(0.5865) > 0.05(95% 신뢰확률에서의 유의수준) => 귀무가설 채택


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#부모의 학력수준과 자녀의 대학여부 간 관련성 검정
x<-data$level2 #부모의 학력수준(독립변수:영향줌)
y<-data$pass2 #자녀의 대학진학여부(종속변수:영향받음)

result<-data.frame(level=x,pass=y)
dim(result)
table(result)

chisq.test(x,y,correct = F) #correct = F : 연속성 보정 미적용(기본값:T-연속성보정 적용)


#동질성 검정 : 집단 간 분포 동일여부 검정
rm(list=ls())
gc()
data<-read.csv("C:/git/R/Data/homogenity.csv",header = T)
head(data)

#교육방법에 따른 교육생들의 만족도 차이가 있는지 검정
#귀무가설: 교육방법에 따른 교육생들의 만족도 차이가 없다.
#대립가설: 교육방법에 따른 교육생들의 만족도 차이가 있다.
str(data)

data<-subset(data,!is.na(survey),c(method,survey))
data
table(data$method)
table(data$survey)

data$method2[data$method==1]<-"방법1"
data$method2[data$method==2]<-"방법2"
data$method2[data$method==3]<-"방법3"
head(data)

data$survey2[data$survey==1]<-"매우만족"
data$survey2[data$survey==2]<-"만족"
data$survey2[data$survey==3]<-"보통족"
data$survey2[data$survey==4]<-"불만족"
data$survey2[data$survey==5]<-"매우불만족"
head(data)

table(data$method2,data$survey2) #각 집단별 길이가 같아야 한다.
chisq.test(data$method2,data$survey2) 
#X-squared = 6.5447, df = 8, p-value = 0.5865
#해석: p-value(0.5865)>0.05 -> 귀무가설 채택
#결론: 교육방법에 따른 교육생들의 만족도 차이가 없다.

CrossTable(data$method2,data$survey2,chisq = T)


출력결과



참조: 원본코드
코드에 문제가 있거나 궁금한 점이 있으면 wjddyd66@naver.com으로 Mail을 남겨주세요.

Categories:

Updated:

Leave a comment