17.통계데이터분석 - 독립성검정과 적합성검정 - 독립성검정.Rmd
0.01MB
17.통계데이터분석---독립성검정과-적합성검정---독립성검정.html
1.32MB

 

 

https://www.youtube.com/watch?https://www.youtube.com/watch?v=CO7LsfET2kc&list=PLY0OaF78qqGAxKX91WuRigHpwBU0C2SB_&index=18

1. 독립성검정(independence test)의 특징

  • 독립성검정의 특징
    • 독립성검정은 범주형변수가 서로 독립인지 검정함
    • 여기서 독립이라는 것은 두 변수가 서로 관련이 없다는 것을 의미함
    • 독립성검정에서
      • 귀무가설: 두 변수는 독립이다(=두 변수는 서로 관련이 없다)
      • 대립가설: 두 변수는 독립이 아니다(=두 변수는 서로 관련이 있다)
      • 예시) 혈액형과 선호하는 영화 장르가 서로 아무런 관련이 없을 때, 즉, 혈액형에 따라서 좋아하는 영화 장르가 다르지 않을 때 “이 두 변수가 서로 독립이다”라고 얘기함
        • 귀무가설: 혈액형과 선호하는 영화 장르는 독립이다
        • 대립가설: 혈액형과 선호하는 영화 장르는 독립이 아니다
        • 귀무가설을 기각하고 대립가설를 채택하게 되면 “혈액형과 선호하는 영화 장르간에는 관련이 있다” 라고 결론을 내리게 됨

2. 독립성검정을 수행하는 절차

2-1. 데이터셋 설명

https://youtu.be/CO7LsfET2kc?list=PLY0OaF78qqGAxKX91WuRigHpwBU0C2SB_&t=94

  • 독립성검정 수행: χ2검정 절차에 따라 두 변수의 범주 조합별 빈도를 기록한 교차표를 토대로 수행
  • 타이타닉 데이터셋 설명
str(Titanic)
##  'table' num [1:4, 1:2, 1:2, 1:2] 0 0 35 0 0 0 17 0 118 154 ...
##  - attr(*, "dimnames")=List of 4
##   ..$ Class   : chr [1:4] "1st" "2nd" "3rd" "Crew"
##   ..$ Sex     : chr [1:2] "Male" "Female"
##   ..$ Age     : chr [1:2] "Child" "Adult"
##   ..$ Survived: chr [1:2] "No" "Yes"
  • 결과해석
    • 타이타닉호 침몰사건과 관련 데이터가 테이블 형식 데이터 구조로 저장돼 있음
    • 4개의 차원으로 구성됨 (승객구분 /성별 / 나이 / 생존여부)
      • 승객구분: 1등실 2등실 3등실 선원으로 구분
      • 생존여부: 생존한 경우와 그렇지 않은 경우로 구분

2-2. margin.table() - 다차원 테이블에서 원하는 차원만 추출해 요약표 생성

  • 타이타닉호 탑승기에 승객구분에 따라서 생존율 차이가 있는지 검정
    • 다차원의 테이블 객체에 저장된 데이터셋을 이용해 독립성검정을 하기 위해서는 검정하고자 하는 변수로 이루어진 2차원 형태의 교차표로 테이블을 변환해야 함
    • 인수로 지정된 차원으로 구성된 새로운 요약 테이블 생성해야 함
  • 인수설명:
    • 1st: 테이블 객체 지정
    • 2nd: 추출하고자 하는 차원 지정
      • 여기서는 승객구분에 따른 생존율 차이가 있는지를 검정하기 때문에 4번째 차원(생존여부) / 1번째 차원(승객구분) 추출
Titanic.margin <-  margin.table(Titanic, c(4, 1))
Titanic.margin
##         Class
## Survived 1st 2nd 3rd Crew
##      No  122 167 528  673
##      Yes 203 118 178  212
  • 결과해석: 행에는 생존여부 / 열에는 승객구분이 배치된 2차원 교차표 생성

2-3. margin.table() - 행과 열의 합 추가, 열의 비율 계산

addmargins(Titanic.margin) # 행과 열의 합 추가
##         Class
## Survived  1st  2nd  3rd Crew  Sum
##      No   122  167  528  673 1490
##      Yes  203  118  178  212  711
##      Sum  325  285  706  885 2201
  • 열의 비율 계산 절차
addmargins(Titanic.margin, 2) # 열의 합계 추가
##         Class
## Survived  1st  2nd  3rd Crew  Sum
##      No   122  167  528  673 1490
##      Yes  203  118  178  212  711
prop.table(addmargins(Titanic.margin, 2), 2) # 비율로 변환. 열의 합계가 100%가 되는 교차표 생성
##         Class
## Survived       1st       2nd       3rd      Crew       Sum
##      No  0.3753846 0.5859649 0.7478754 0.7604520 0.6769650
##      Yes 0.6246154 0.4140351 0.2521246 0.2395480 0.3230350
addmargins(prop.table(addmargins(Titanic.margin, 2), 2), 1) # 열의 합계 100% 를 명시적으로 보여주기 위해 합계가 100% 가 되는 것을 보여주는 행 추가 
##         Class
## Survived       1st       2nd       3rd      Crew       Sum
##      No  0.3753846 0.5859649 0.7478754 0.7604520 0.6769650
##      Yes 0.6246154 0.4140351 0.2521246 0.2395480 0.3230350
##      Sum 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
  • 결과해석
    • 열의 비율이 100%인 비율의 교차표 완성
    • 이 교차표를 통해 승객구분별로 생존율 차이가 있는지 추론 가능함
    • 1등실 승객의 경우에는 62.5% 가 생존한 반면에 3등실 승객의 경우에는 25.2% 만이 생존함. 가장 낮은 생존율을 보인 사람들은 승무원임. 24% 정도 만이 생존함
    • 승객구분에 따라서 생존율에 있어서 차이가 있는 것처럼 보임

3. 통계적으로 독립성검정 수행

3-1. chisq.test() - 독립성검정 수행

  • 인수설명: 교차표를 인수로 지정함
chisq.test(Titanic.margin)
## 
##  Pearson's Chi-squared test
## 
## data:  Titanic.margin
## X-squared = 190.4, df = 3, p-value < 2.2e-16
  • 결과해석
    • p값이 10의 - 16 순수 준 으로서 거의 0에 가까움
    • 유의수준 0.05에 비해 매우 작아 “승객구분과 생존여부 간 관계가 없다”는 귀무가설 기각
    • 승객구분에 따라서 생존율에 는 차이가 존재”함

3-2. assocstats() - 귀무가설 기각 후 두 범주형변수 간 관련성 강도 평가

  • 두 범주형변수 간 관계가 없다는 귀무가설 기각하면 이어서 이들 간 관련성 강도 평가가능
  • 인수설명: 교차표를 인수로 지정
library(vcd)
assocstats(Titanic.margin)
##                    X^2 df P(> X^2)
## Likelihood Ratio 180.9  3        0
## Pearson          190.4  3        0
## 
## Phi-Coefficient   : NA 
## Contingency Coeff.: 0.282 
## Cramer's V        : 0.294
  • 결과해석
    • 이 함수는 기본적으로 3개의 지표 출력함
    • 이 지표 값들은 그 값이 클수록 두 변수 간 관련성이 크다는 것을 의미함

3-3. mosaic()함수<모자이크도표> - 승객구분과 생존율 간 관계의 시각화

  • 인수섦명
    • 1st: 교차표 지정
    • shade: TRUE 지정하면 귀무가설을 기각하는 데 있어 어떠한 범주쌍이 더 큰 기여를 하는지색깔로 구분해서 볼 수 있음
mosaic(Titanic.margin, shade=TRUE)
  • 도표해석
    • 직사각형의 크기는 교차표상 셀값에 비례함
    • 파란색 계통의 셀과 빨간색 계통의 셀이 있음
    • 오른쪽 범례에 Pearson residuals는 귀무가설이 사실이라는 가정하에서 계산된 관측빈도와 기대빈도의 차이를 의미함
      • 관측빈도와 기대빈도의 차이가 양수의 큰 값일수록 파란색으로 표현되고
      • 관측빈도와 기대빈도의 차이가 음수의 큰 값일수록 빨간색으로 표현됨
      • 파란색은 관측빈도>기대빈도, 빨간색은 관측빈도<기대빈도 라는 의미임
    • 그래서 파란색이나 빨간 색에 가까운 셀들은 귀무가설을 기각하는데 크게 기여하는 셀 할 수 있음

3-4. chisq.test() - 데이터프레임으로 저장된 데이터로 독립성검정 수행

  • 테이블로 저장된 데이터셋 뿐만 아니라 데이터프레임 형태로 저장된 데이터셋에 대해서도 교차표 생성 과정 없이 독립성검정 바로 수행 가능. chisq.test() 에 검정대상 변수를 직접 지정함
  • 데이터셋 변수 설명
    • Sex: 성별
    • Fold: 팔짱을 끼었을 때 어느 쪽 손이 위쪽에 위치하는 지를 나타냄
library(MASS)
str(survey)
## 'data.frame':    237 obs. of  12 variables:
##  $ Sex   : Factor w/ 2 levels "Female","Male": 1 2 2 2 2 1 2 1 2 2 ...
##  $ Wr.Hnd: num  18.5 19.5 18 18.8 20 18 17.7 17 20 18.5 ...
##  $ NW.Hnd: num  18 20.5 13.3 18.9 20 17.7 17.7 17.3 19.5 18.5 ...
##  $ W.Hnd : Factor w/ 2 levels "Left","Right": 2 1 2 2 2 2 2 2 2 2 ...
##  $ Fold  : Factor w/ 3 levels "L on R","Neither",..: 3 3 1 3 2 1 1 3 3 3 ...
##  $ Pulse : int  92 104 87 NA 35 64 83 74 72 90 ...
##  $ Clap  : Factor w/ 3 levels "Left","Neither",..: 1 1 2 2 3 3 3 3 3 3 ...
##  $ Exer  : Factor w/ 3 levels "Freq","None",..: 3 2 2 2 3 3 1 1 3 3 ...
##  $ Smoke : Factor w/ 4 levels "Heavy","Never",..: 2 4 3 2 2 2 2 2 2 2 ...
##  $ Height: num  173 178 NA 160 165 ...
##  $ M.I   : Factor w/ 2 levels "Imperial","Metric": 2 1 NA 2 2 1 1 2 2 2 ...
##  $ Age   : num  18.2 17.6 16.9 20.3 23.7 ...
  • Sex, Fold 변수로 “성별에 따라서 팔짱을 끼웠을 때의 손 위치에 차이가 있는지 검정” 수행
    • 인수로 검정하고자는 두 개의 범주형변수를 나란히 지정함
    • 그러면 chisq.test()함수는 내부적으로 교차표 생성 후, 그 결과로 독립성검정을 수행함
    • 이렇게 chisq.test()에 직접 데이터를 지정할 때는 그 데이터들은 벡터 형식이어야 함
chisq.test(survey$Fold, survey$Sex)
## 
##  Pearson's Chi-squared test
## 
## data:  survey$Fold and survey$Sex
## X-squared = 2.5741, df = 2, p-value = 0.2761
  • 결과해석
    • p값 0.2761로 유의수준 0.05 에 비해서 크기 때문에 귀무가설을 기가하지 못함
    • “성별에 따라서 팔짱을 끼었을 때 손 위치의 차이가 없다”는 귀모가설을 기각하지 못하기 때문에 “손 위치와 성별 간에는 관련성이 없다” 라고 결론 내릴 수 있음
  • 교차표를 먼저 생성하고 그걸 바탕으로 독립성검정을 수행해도 동일한 결과 출력됨
crsstab <- table(survey$Fold, survey$Sex) # 테이블 함수로 교차표 생성
crsstab
##          
##           Female Male
##   L on R      48   50
##   Neither      6   12
##   R on L      64   56
chisq.test(crsstab)
## 
##  Pearson's Chi-squared test
## 
## data:  crsstab
## X-squared = 2.5741, df = 2, p-value = 0.2761
# 그리고 이 교차표를 chisq.test()에 직접 지정해 독립성검정 수행
  • 결과해석: 동일한 p값이 출력됨

+ Recent posts