16.통계데이터분석 - 독립성검정과 적합성검정.Rmd
0.02MB
16.통계데이터분석---독립성검정과-적합성검정.html
2.52MB

 

 

https://www.youtube.com/watch?v=XIxcK0H7J4Y&list=PLY0OaF78qqGAxKX91WuRigHpwBU0C2SB_&index=17

1. χ2검정 (독립성검정과 적합성검정 정의 포함)

1-1. 교차표와 χ2검정

  • χ2검정의 특징
    • 범주형 변수로 만들어지는 교차표 상의 빈도를 바탕으로 수행됨
    • 교차표를 이용하면 범주형으로 수집된 두 변수의 범주 조합에 따른 조합별 빈도를 살펴볼 수 있음. 그리고 이를 통해 두 변수 간 관계를 파악을 할 수 있음
  • χ2검정의 종류
    • 독립성검정: 두 범주형 변수 간의 관련성이 모집단에서 존재하는지 검정함
      • 예) 연령대와 선호하는 음식 종류 간 서로 관계가 있을지 검정
        • 20대는 중식, 30대는 양식, 40대는 한식을 좋아한다면 “연령대와 선호하는 음식 간에는 서로 관련성이 있다라고 생각을 해 볼 수 있음
        • 그러한 관련성이 모집단에서 존재하는지 검정 할 때 독립성검정 사용
    • 적합성검정: 범주형 변수가 하나가 있을 경우에 그 하나의 범주형 변수에 포함돼있는 범주별 빈도를 바탕으로 모집단에서 기대되는 비율 분포가 존재하는지 검정
      • 예) 이동통신회사가 a, b, c가 있을 때, 100명의 소비자를 대상으로 어느 이동통신회사에 가입해 사용하고 있는지 문의
        • 100명 중 50명은 a, 30명은 b, 20명은 c회사를 사용하고 있다면 a b c 회사의 시장점유율 비율은 5:3:2가 될 것임
        • 그러한 비율이 모집단에서 도 유지가 되는지, 즉, 세 회사의 시장점유율이 각각 50% 30% 20% 라고 할 수 있는지 검정할 때 적합성검정 사용

2. χ2검정을 위한 교차표 생성

2-1. 교차표 생성

  • χ2검정은 교차표 상의 응답 빈도를 바탕으로 수행
  • 안전벨트 착용과 승객안전 간의 관계에 관심이 있다고 가정
    • 안전벨트 착용과 승객안전, 이 두 변수 간 교차표를 먼저 생성해야 함
    • 교통사고 환자의 안전벨트 착용유무와 환자상태의 데이터를 행렬 형식으로 저장하고,
    • 이를 행과 열에 각각 안전벨트 착용유무와 환자상태를 나타낸 범주명 지정 후
    • 교차표 확인
survivors <- matrix(c(1443, 151, 47, 1781, 312, 135), ncol=2)
dimnames(survivors) <- list(
  Status=c("minor injury", "major injury", "dead"), 
  Seatbelt=c("with seatbelt", "without seatbelt")
  )
survivors
##               Seatbelt
## Status         with seatbelt without seatbelt
##   minor injury          1443             1781
##   major injury           151              312
##   dead                    47              135
  • 결과해석
    • 행: 환자의 상태가 배치됨
    • 열: 안전벨트 착용유무가 배치됨
    • 환자상태: 경상, 중상, 사망(3개 범주)
    • 안전벨트 착용유무: 안전벨트를 착용한 경우와 그렇지 않은 경우(2개 범주)
    • 안전벨트를 착용한 경우 경상자 1443명, 중상자 151명, 사망자 47명임
  • 이 교차표로 두 변수 간 관련이 있는지 파악하기 어려움
    • 안전벨트 착용유무에 따라서 경상자 중상자 사망자수 간 차이가 크면 “안전벨트 착용유무와 환자상태 간의 관계가 있다” 라고 생각을 해 볼 수 있음
    • 그런데 안전벨트 착용자수와 비착용자수가 다르기 때문에 직접 이 수치를 가지고 비교할 수 없음
  • 비율을 바탕으로 안전벨트 착용유무가 환자상태에 미치는 영향을 좀 더 쉽게 파악 가능
    • 두 변수간 관계를 보다 잘 파악하기 위해 교차표 행과 열의 합을 추가 후
    • 열이 100% 로 척도조정된 열의 비율을 계산

2-2. 교차표 생성 - 100%로 척도조정된 열비율 추가

2-2-1. addmargins() 함수 - 교차표에 행과 열의 합 추가

addmargins(survivors)
##               Seatbelt
## Status         with seatbelt without seatbelt  Sum
##   minor injury          1443             1781 3224
##   major injury           151              312  463
##   dead                    47              135  182
##   Sum                   1641             2228 3869
  • 결과해석
    • 안전벨트 착용자는 1641명, 안전벨트 미착용자는 2228명의 환자가 있음
    • 총 3869 명의 환자가 이 데이터 셋에 포함이 돼 있음
    • 그 환자 중 경상자 3224명, 중상자 463 명, 사망자 182명임
  • 현재 안전벨트 착용자과 미착용자 숫자가 다르기 때문에,
    • 착용자 1641명을 100%로 해서 경상자, 중상자, 사망자 비율 계산
    • 미착용자 2228명을 100%로 해서 경상자, 중상자, 사망자 비율 계산
    • 즉, 열의 비율이 100%가 되는 그런 비율의 교차표를 생성해야 함

2-2-2. prop.table() 함수 - 행과 열의 비율이 100%가 되는 교차표 생성

  • addmargins() 함수로 우선 열의 합만 추가
    • margin 인수: 열의 합 추가(margin=2)
addmargins(survivors, margin=2)
##               Seatbelt
## Status         with seatbelt without seatbelt  Sum
##   minor injury          1443             1781 3224
##   major injury           151              312  463
##   dead                    47              135  182
  • prop.table() 함수 - 이 교차표로 열의 합계가 100%인 비율의 교차표 생성
    • margin 인수: 열의 비율이 100%가 되는 합계열 추가(margin=2)
prop.table(addmargins(survivors, 2), margin=2)
##               Seatbelt
## Status         with seatbelt without seatbelt        Sum
##   minor injury    0.87934186       0.79937163 0.83329026
##   major injury    0.09201706       0.14003591 0.11966917
##   dead            0.02864107       0.06059246 0.04704058
  • 결과해석
    • 안전벨트 착용자 중 경상자 비율이 87.9%, 중상자 9.2%, 사망자 2.9% 임
      • 3개 비율을 모두 합하면 100%가 됨
    • 안전벨트 미착용자 중 경상자 비율이 79.9%, 중상자 14.0%, 사망자 6.1% 임
      • 역시 3개 비율 합하면 모두 100%가 됨
    • 합계열도 마찬가지로 경상자 중상자 사망자 비율 모두 합하면 100%가 됨
    • 그래서 열애 합계가 100%가 되는 교차표를 생성 됨
  • addmargin() 함수 - 이 교차표에 행의 합계가 100%가 되는 행 추가
    • margin 인수: 열의 비율이 100%가 되는 합계행 추가(margin=1)
addmargins(prop.table(addmargins(survivors, 2), margin=2), margin=1)
##               Seatbelt
## Status         with seatbelt without seatbelt        Sum
##   minor injury    0.87934186       0.79937163 0.83329026
##   major injury    0.09201706       0.14003591 0.11966917
##   dead            0.02864107       0.06059246 0.04704058
##   Sum             1.00000000       1.00000000 1.00000000
  • 결과해석
    • 최종적으로 합계행까지 포함되고, 열의 비율이 100%가 되는 교차표 생성

2-3. 생성된 교차표로 안전벨트 착용과 승객의 안전 간 관련성 유추

  • 경상자 분석
    • 안전벨트 착용시 1443명, 미착용시 1781명, 각각 비율로는 87.9%와 79.9%임
    • 안전벨트 착용시, 미착용시보다 경상자 비율이 더 높음
  • 중상자 분석
    • 안전벨트 착용시 151명, 미착용시 311명, 각각 비율로는 9.2%와 14.0%임
    • 안전벨트 미착용시, 착용시보다 중상자 비율이 더 높음
  • 사망자 분석
    • 안전벨트 착용시 47명, 미착용시 135명, 각각 비율로는 2.9%와 6.1%임
    • 안전벨트 미착용시, 착용시보다 사망자 비율이 더 높음
  • 그래서 이 비율의 교차표를 통해 “안전벨트 착용이 승객의 안전과 관련이 있다”라고 판단 가능

3. 시각화를 통한 두 범주형 변수 간 관련성 확인

3-1. barplot()함수<막대도표> - 안전벨트착용과 안전간의 관계 시각화

barplot(survivors, 
        col=c("yellowgreen", "lightsalmon", "orangered")
        )
  • 도표해석
    • 왼쪽이 안전벨트 착용한 경우이고, 오른쪽이 안전벨트 미착용한 경우임
# 그래프 개선
barplot(survivors, ylim=c(0, 2500), las=1, 
        col=c("yellowgreen", "lightsalmon", "or angered"), 
        ylab="Frequency", main="Frequency of Survivors")
legend(0.2, 2500, rownames(survivors), 
       fill=c("yellowgreen", "lightsalmon", "orangered") )
  • 도표해석
    • ylim 인수: y축 범위지정
    • las 인수: 1을 대입해 y 축 숫자가 x축과 평행 하도록 나타냄
    • ylab, main인수: y축, 그래프 제목 지정
    • legend() 함수: 색깔로 구분되가는 범례 추가
    • 0.2, 2500: 범례가 위치할 x,y축 위치 좌표
    • rownames(survivors): 범례로 사용될 이름 지정
    • fill 인수: 범례 색깔 지정

3-2. barplot()함수<막대도표> - 안전벨트착용과 안전간의 관계 시각화

  • 위 상자도표는 빈도로 만들어진 것이기 때문에 경상자 중상자 사망자의 상대적 비교가 어려움
  • 그래서 열의 교차표를 만든 것처럼, 안전벨트 착용한 경우의 환자수를 100%라고 착용하지 않은 경우의 환자수를 100%해서, 그 가운데 경상자 중상자 사망자의 비율이 나타나도록 비율의 형태로 막대도표 생성
  • 먼저 비율을 계산해 survivors.prop 변수에 저장 후, 막대도표 상에 비율을 표현
survivors.prop <- prop.table(survivors, 2)
barplot(survivors.prop*100, las=1, 
        col=c("yellowgreen", "lightsalmon", "or angered"), 
        ylab="percent", main="percent of Survivors")
# legend(0.2, 2500, rownames(survivors), 
#        fill=c("yellowgreen", "lightsalmon", "orangered") )
  • 도표해석
    • y 축이 100% 로 척도가 조정되어 있는 그래프 생성됨
    • y 축에 0부터 1로 되어 있는데 survivors.prop*100으로 100을 곱해 100% 로 환산
    • 경상자 중상자 사망자의 비율이 안전벨트 착용자와 미착용자 간 분명한 차이가 있는 것처럼 보임
    • 따라서 “안전벨트 착용은 승객의 안전과 밀접한 관련이 있다” 라고 생각할 수 있음

4. χ2검정 - 안전벨트 착용과 안전 간 관련성의 통계적 검정

4-1. χ2검정 및 χ2분포 설명

  • χ2검정: 범주형 변수 간 관련성이 모집단에서 존재하는지 검정
  • χ2검정 절차: 기대빈도와 관측빈도의 비교를 통해 계산되는 χ2값을 가설검정을 위한 검증 통계량 으로 사용함
    • 관측빈도: 교차표 상의 실제 빈도
    • 기대빈도: 변수 간 관련성이 없다는 가정하에 기대할 수 있는 예상 빈도
  • χ2값 계산: 교차표를 바탕으로 계산함
    • 교차표의 각 셀 값은 기본적으로 관측빈도를 의미
    • 귀무가설이 사실이라는 가정 하에 관측빈도를 바탕으로 기대빈도를 각 셀마다 계산
      • 귀무가설: “두 범주형 변수 간에 아무런 관련이 없다”
    • 그럼 각 셀은 관측빈도와 기대빈도의 쌍이 계산 됨
    • 이 쌍을 이용해, 위 산식에 의해 χ2값 계산
      • 산식설명
        • 각 셀에 대해 관측빈도와 기대빈도의 차이 계산
        • 이를 제곱한 값을 기대빈도로 나눔
        • 이러한 계산을 모든 셀에 대해 수행하고, 모든 셀에 대해 합산
  • χ2분포
    • χ2값은 χ2분포를 따름
    • χ2분포는 자유도에 따라서 분포의 모양이 달라지고
    • 대체로 위 그래프와 같이 오른쪽으로 긴 꼬리를 가짐
  • χ2분포의 자유도 계산
    • χ2분포의 자유도는 교차표를 구성하는 두 변수의 범주의 개수에서 결정됨
    • 행 변수 범주의 개수에서 1을 뺀 값과 열 변수 범주의 개수에서 1을 뺀 값을 곱한 값
    • 위의 경는 우, 자유도는 (3-1) * (2-1) =2 가 됨
  • χ2값을 통한 가설검정
    • 표본에서 χ2값을 산출하고 귀무가설이 사실이라는 가정하에서
    • 이 χ2값이 χ2분포 상에 얼마나 나타나기 어려운 희박한 경우인지 혹은 흔하게 관찰될 수 있는 경우인지를 평가해서 가설 검정
    • χ2값 계산식을 보면, 관측빈도와 기대빈도의 차에 의해서 계산하는데,
    • 만약 관측빈도와 기대빈도의 차이가 크다면,
      • 이 기대빈도는 귀무가설이 사실이라는 가정 하에서 만들어진 값이기 때문에
      • 우리가 실제로 표본으로부터 관측된 관측빈도와 많이 다르다는 것이며
      • 결국은 가설이 아닐 가능성이 높다는 얘기입니다
    • 반대로 관측빈도와 기대빈도가 유사하면 (극단적으로 관측빈도와 기대빈도가 같아 0이 나온다면)
      • 귀무가설이 사실이란 가정하에 만들어진 기대빈도와 실제 관측빈도가 같다는 것이며
      • 귀무가설이 맞을 가능성이 크다고 할 수 있음
    • χ2값이 크면 클수록 귀무가설을 기각하고 대립가설 채택
    • χ2값이 작으면 작을수록 귀무가설을 채택가능성이 높아짐

4-2. χ2검정절차 상세 설명

  • 관측빈도: 안전벨트 착용 유무와 환자의 상태를 바탕으로 생성했던 교차표의 셀값은 관측빈도에 해당 됨
  • 기대빈도: 귀무가설이 사실이라는 가정하에서 기대할 수 있는 빈도
    • 여기서 귀무가설은 “안전벨트 착용과 승객안전 간에는 관련이 없다”는 것임
    • 귀무가설이 사실이면 안전벨트 착용자와 미착용자는 사고 이후 상태에 대해 동일한 패턴을 보이게 될 것
    • 이는 사고 이후 환자 상태의 비율이 안전벨트 착용자와 미착용자 간 동일하다는 의미
    • 비율이 동일해도 안전벨트 착용자와 미착용자수가 같지 않아 빈도는 다를 수 있음
  • 기대빈도 산출방법
    • 우선 환자상태의 비율 파악
      • 전체 3869명 환자 가운데 경상자 3224명, 83.3% 비율, 중상자 463명, 12% 비율, 사망자 182명, 4.7% 비율임
    • 귀무가설이 사실이라면 이 비율은 안전벨트 착용 여부와 관계없이 착용자와 미착용자 집단 모두에게 동일하게 나타날 것으로 기대할 수 있음
    • 이 비율을 빈도로 변화한 기대빈도는 각 환자상태 비율에 안전벨트 착용자 및 미착용자수를 곱해서 구할 수 있음
  • 기대빈도 산출
    • 경상자 기대빈도
      • 경상자 비율은 전체의 83.3% 임 (총 3869명 중 3224명)
      • 귀무가설이 사실이면 이 비율은 안전벨트를 착용여부 관계없이 동일하게 적용돼야 함
      • 안전벨트 착용자 가운데서 경상자 기대빈도는 안전벨트 착용자수 1641명의 83.3% 인 1327명이 됨
      • 안전벨트 미착용자로부터 경상자 기대빈도는 안전벨트 미착용자수 2228명의 83.3% 인 1855.9명이 됨
    • 중상자 기대빈도
      • 중상자 비율은 전체의 12% 임 (총 3869명 중 463명)
      • 귀무가설이 사실이면 이 비율은 안전벨트를 착용여부 관계없이 동일하게 적용돼야 함
      • 안전벨트 착용자 가운데서 중상자 기대빈도는 안전벨트 착용자수 1641명의 12%인 196.9명이 됨
      • 안전벨트 미착용자로부터 중상자 기대빈도는 안전벨트 미착용자수 2228명의 14%인 267.4명이 됨
    • 사망자 기대빈도
      • 사망자 비율은 전체의 4.7%임 (총 3869명 중 182명)
      • 귀무가설이 사실이면 이 비율은 안전벨트를 착용여부 관계없이 동일하게 적용돼야 함
      • 안전벨트 착용자 가운데서 사망자 기대빈도는 안전벨트 착용자수 1641명의 12%인 77.1명이 됨
      • 안전벨트 미착용자로부터 사망자 기대빈도는 안전벨트 미착용자수 2228명의 14%인 104.7명이 됨
    • 이제 관측빈도와 기대빈도의 차이를 구하고 그것을 제곱 한 후 기대빈도로 나눔
    • 이러한 작업을 모든 셀에 대해 반복해서 모두 합산하면 χ2값으로 45.91 산출
  • χ2검정
    • 귀무가설이 사실이라는 가정하에서 표본으로부터 산출된 χ2값 45.91이 χ2분포 상에서 얼마나 희박한 경우인지 혹은 흔하게 관찰될 수 있는지 평가해야 함
    • 평가방식1(유의확률 비교)
      • 관측된 χ2값에서의 유의확률을 구한 다음, 유의수준 0.05 또는 0.01과 비교
      • 관측된 χ2값의 유의확률이 0.05 또는 0.01의 유의수준보다 작으면 귀무가설 기각함
    • 평가방식2(χ2값 비교)
      • 유의수준 0.05 또는 0.01에서의 χ2값을 구한 다음, 관측된 χ2값과 비교
      • 관측된 χ2값이 유의수준에 대응되는 χ2값보다 크면 귀무 가설을 기각함

4-3. χ2검정 (R사용)

4-3-1. 평가방식1(유의확률 비교) - pchisq()로 특정 χ2값에 대응되는 유의확률 구함

  • 인수설명
    • q: χ2값 지정. 표본으로부터 관측된 χ2값 45.91 지정
    • df: 자유도 지정. 행범주 개수 3에서 1을 빼고, 열범주 개수 2에서 1을 빼 곱한 수치
    • lower.tail: 이대로 계산하면 45.91 이하 영역이 계산되기 때문에, 45.91 이상이 발생할 확률 구하기 위해, FALSE로 지정하여 오른쪽 꼬리 부분 영역의 확률 계산함
pchisq(45.91, df=(3-1)*(2-1), lower.tail=FALSE)
## [1] 1.073421e-10
  • 결과해석
    • 결과는 1.07 곱하기 10의 마이너스 10승
    • 유의수준 0.05나 0.01에 비해서 굉장히 작은 수치기 때문에 귀무가설 기각, 대립가설 채택
    • 즉, “안전벨트 착용 유무는 환자의 상태와 관련이 있다” 라고 결론을 내릴 수가 있음음

4-3-2. 평가방식2(χ2값 비교) - qchisq()로 특정 유의확률에 대응되는 χ2값 구함

  • 인수설명
    • p: 유의확률 지정. 0.05로 지정하면 유의수준 0.05에 대응되는 χ2값 계산
    • df: 자유도 지정. 행범주 개수 3에서 1을 빼고, 열범주 개수 2에서 1을 빼 곱한 수치
    • lower.tail: 이대로 계산하면 왼쪽 꼬리 부분 영역의 면적이 0.05에 대응되는 χ2값이 계산되기 때문에, 오른쪽 꼬리 부분 영역이 0.05인 곳에 대응되는 χ2값 계산위해, FALSE로 지정
qchisq(0.05, df=(3-1)*(2-1), lower.tail=FALSE)
## [1] 5.991465
  • 결과해석
    • 유의수준 0.05에 대응되는 χ2값은 5.99
    • 표본으로부터 관측된 χ2값이 45.91이고, 45.91은 5.99에 오른쪽에 위치하기 때문에 귀무가설 기각하고 대립가설 채택

4-4. χ2검정 결과 그래프로 확인

  • qchisq() 함수를 통해서 오른쪽 꼬리 부분의 면적이 0.05 에 대응되는 χ2값 5.99 계산함
  • 표본으로부터 관측된 값이 45.91은 5.99보다 상당히 오른쪽 끝에 있어 굉장히 작은 영역임
  • 이 영역은 0.05 에 비해서 굉장히 작고, pchisq()로 이 부분 확률이 1.073421e-10로 0.05에 비해서 굉장히 작기 때문에 역시 귀무가설 기각하고 대립가설을 채택함
  • 따라서 “안전벨트 착용 유무는 환자의 상태와 밀접한 관련이 있다” 라는 것을 알 수 있음

+ Recent posts