# chap12_CrossTableChiSquare
# 교차분석과 카이제곱검정
# 1. 교차분석
# 2. 카이제곱 검정
# 데이터프레임 생성
# - 교차표 생성을 위한 데이터셋 만들기
### 사용된 파일은 https://joyfuls.tistory.com/4 에서 다운 받으실 수 있습니다.
# 1) 실습파일 가져오기
setwd("C:/2_Rwork/Part-III")
data <- read.csv("cleanDescriptive.csv", header=TRUE)
data # 확인
head(data) # 변수 확인
dim(data) # 248 14
# 2) 변수 추출
x <- data$level2 # 리코딩 변수 이용
y <- data$pass2 # 리코딩 변수 이용
# 3) 데이터프레임 생성
df <- data.frame(Level=x, Pass=y) # 데이터 프레임 생성
table(df$Level) # 3 -> row
table(df$Pass) # 2 -> column
#######################
## 1. 교차분석
#######################
# - 교차분할표를 통해서 범주형 변수의 관계를 분석하는 방법
# 1) 교차분할표 생성
table(df) # 빈도보기
# 2) package를 이용한 교차분할표 생성
install.packages("gmodels") # gmodels 패키지 설치
library(gmodels) # CrossTable() 함수 사용
CrossTable(x=df$Level, y=df$Pass)
# 3) diamond의 cut과 color에 대한 교차분할표 생성
library(ggplot2) # diamonds 데이터 셋 사용
CrossTable(x=diamonds$color, y=diamonds$cut)
#----------------------------------------------------------------------------
# <실습> 부모의 학력수준이 자녀의 대학진학에 영향이 있는가를
# 알아보기 위해서 다음과 같이 교차분석을 수행하시오.
#----------------------------------------------------------------------------
#<조건1> CrossTable()함수 이용
#<조건2> 변수모델링 : 부모학력수준(x) -> 자녀대학진학여부(y)
# sample : 고졸(합격) : 49
# 기대값 식 = (셀의 행합 * 셀의 열합) / 전체합
p_value = (89 * 135) / 225
p_value # 53.4
# 기대비율 식 = (관측값 - 기대값)^2/ 기대값
p_rate = ((49 - p_value)^2) / p_value
p_rate # 0.3625468
# 교차분할표 & 카이검정
CrossTable(x=df$Level, y=df$Pass, chisq = TRUE)
#Pearson's Chi-squared test
#------------------------------------------------------------
#Chi^2 = 2.766951 d.f. = 2 p = 0.2507057
# 검정통계량 : Chi^2 : 기대비율총합, d.f.(자유도) : n-1
Chi_2 = 0.544 + 0.363 + 1.026 + 0.684 + 0.091 + 0.060
Chi_2
# 귀무가설 : 학년수준과 자녀의 대학진학여부와 관련이 없다.(O)
# 대립가설 : 학년수준과 자녀의 대학진학여부와 관련이 있다.(x)
# p = 0.2507057 >= 0.05(알파)
###################################
## 2. 카이제곱 검정 : CrossTable() 이용
###################################
# 1) 일원카이제곱
# 적합도/선호도 검정
# - chisq.test() 함수를 이용하여 관찰치와 기대빈도 일치여부 검정
# (1) 적합성 검정 예
#-----------------------------------------------
# 귀무가설 : 기대치와 관찰치는 차이가 없다.(x)
# 대립가설 : 기대치와 관찰치는 차이가 있다.(o)
#-----------------------------------------------
# 가설 설정 방법
# 귀무가설 : 같다 = 다르지않다 = 차이가 없다 = 효과가 없다(부정적)
# 대립가설 : 같지않다 = 다르다 = 차이가 있다 = 효과가 있다(긍정적)
# 60회 주사위를 던져서 나온 관측도수/기대도수
# 관측도수 : 4(1), 6(2), 17(3), 16(4), 8(5), 9(6)
# 기대도수 : 10,10,10,10,10,10
chisq.test(c(4,6,17,16,8,9))
#X-squared = 14.2, df = 5, : 검정통계량
#p-value = 0.01439 : 유의확률
# p-value = 0.01439 < 0.05(유의수준) : 기각
#<유의확률 해석>
#유의확률(p-value : 0.01439)이 0.05미만이기 때문에 유의미한 수준(α=0.05)에서 귀무가설을 기각할 수 있다.
# (2) 선호도 분석
#-----------------------------------------
# 귀무가설 : 기대치와 관찰치는 차이가 없다.(X)
# 대립가설 : 기대치와 관찰치는 차이가 있다.(O)
#-----------------------------------------
data <- textConnection(
"스포츠음료종류 관측도수
1 41
2 30
3 51
4 71
5 61
")
x <- read.table(data, header=T)
x # 스포츠음료종류 관측도수
chisq.test(x$관측도수)
#X-squared = 20.4882, df = 4(N-1), p-value = 0.0003999
#<유의확률 해석>
#유의확률(p-value : 0.0003999)이 0.05미만이기 때문에 유의미한 수준(α=0.05)에서 귀무가설을 기각할 수 있다.
# 2) 이원카이제곱 - 교차분할표 이용
# (1) 독립성/관련성 검정
# - 동일 집단의 두 변인(학력수준과 대학진과 여부)을 대상으로 관련성이 있는가 없는가?
# 귀무가설 : 부모의 학력수준과 자녀의 대학진학 여부와 관련성이 없다. p >= 0.05
# - 두 변인은 서로 독립적이다.
# 대립가설 : 부모의 학력수준과 자녀의 대학진학 여부와 관련성이 있다. p < 0.05
# - 두 변인은 서로 독립적이지 않다.
# x : 범주형 변수, y : 범주형 변수
# 독립변수(x)와 종속변수(y) 생성
x <- data$level2 # 부모의 학력수준
y <- data$pass2 # 자녀의 대학진학여부
x
y
CrossTable(x, y, chisq = TRUE) #p = 0.2507057
#Pearson's Chi-squared test
# p = 0.2507057 >= 0.05
# <논문에서 교차분석과 카이제곱 검정 결과 제시방법>
# (2) 동질성 검정
# 두 집단의 분포가 동일한가? 다른 분포인가?
# 예) 교육방법(범주형)에 따른 만족도(등간) : 집단 간 차이가 없다.(동질성 검정)
# x : 범주형 변수(명목/서열), y : 숫자형 변수(등간/비율)
# <실습>
# 1. 파일 가져오기
setwd("C:/2_Rwork/Part-III")
data <- read.csv("homogenity.csv", header=TRUE)
head(data)
# method와 survery 변수만 서브셋 생성
data <- subset(data, !is.na(survey), c(method, survey))
# 2. 변수리코딩 - 코딩 변경
# method: 1:방법1, 2:방법2, 3:방법3
# survey: 1:매우만족, 2:만족, 3:보통, 4: 불만족, 5: 매우불만족
# 교육방법2 필드 추가
data$method2[data$method==1] <- "방법1"
data$method2[data$method==2] <- "방법2"
data$method2[data$method==3] <- "방법3"
# 만족도2 필드 추가
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] <- "매우불만족"
# 3. 교차분할표 작성
table(data$method2, data$survey2) # 교차표 생성 -> table(행,열)
# 만족 매우만족 매우불만족 보통 불만족
# 방법1 8 5 6 15 16 -> 50
# 방법2 14 8 6 11 11 -> 50
# 방법3 7 8 9 11 15 -> 50
# 주의 : 반드시 각 집단별 길이(50)가 같아야 한다.
# 4. 동질성 검정 - 모수 특성치에 대한 추론검정
chisq.test(data$method2, data$survey2)
# X-squared = 6.5447, df = 8, p-value = 0.5865
CrossTable(data$method2, data$survey2, chisq = TRUE)
# Chi^2 = 6.544668 d.f. = 8 p = 0.5864574
# 5. 동질성 검정 해석
# p-value = 0.5865 >= 0.05 : 각 집단간 만족도에 차이가 없다.
'R 과 데이터분석 > 기초 문법 ~ 머신러닝' 카테고리의 다른 글
[R 데이터분석] 14장. 상관분석 (0) | 2019.09.13 |
---|---|
[R 데이터분석] 13장. 집단간 차이 검정 (0) | 2019.09.13 |
[R 데이터분석] 11장. 기술통계분석 (0) | 2019.09.13 |
[R 데이터분석] 10장. 통계분석절차와 통계지식 (0) | 2019.09.13 |
[R 데이터분석] 9장. 정형(DB데이터)과 비정형 데이터 처리 (0) | 2019.09.13 |
댓글