KT 에이블스쿨 - 9. 이변량 분석(범주&숫자, 범주&범주, 숫자&범주)

은브이·2024년 9월 21일
0

KT 에이블스쿨

목록 보기
9/11

1. 이변량분석 : 범주 -> 숫자

1.1 범주 vs 숫자 비교

  • 평균 비교 : barplot
    • 범주가 2개 : 두 평균의 차이 비교
    • 범주가 3개 이상 : 전체 평균과 각 범주의 평균 비교

1.2 시각화

  • sns.barplot() : 평균비교
  • 신뢰구간(오차범위)
    • 평균값이 얼마나 믿을만한가?
    • 좁을수록 믿을만하다
    • 데이터가 많을수록, 편차가 적을수록 신뢰구간은 좁아짐
  • 두 평균에 차이가 크고 신괴 구간은 겹치지 않을때, 대립가설이 맞다고 볼 수 있음

    눈으로 겹치는 부분을 보고 판단하기 어려운 경우 - 가설검증으로 해결

1.3 수치화

  • t-test와 anova

    • 범주형 x와 숫자형 y의 관계를 검정하기 위한 도구
    • 평균을 비교하여 차이 검정
  • T-test

    • 두 그룹간에 차이가 있는가?
    • 그룹 A의 평균 vs 그룹 B의 평균 비교
    • 범주의 수 2개일때 사용
    • T 통계량
      • 두 그룹의 평균 간 차이을 표준오차로 나눈 값(두 평균의 차이)
      • t 통계량의 분포
      • 유의미한지 검정 (T-test: t 통계량, p-value)
        • p-value가 0.05보다 작으면 차이가 있음
        • t 통계량이 -2보다 작거나, 2보다 크면 차이가 있다고 봄
  • Anova (Analysis of Variance)

    • 분산분석
      • 전체 평균과 각 그룹 평균에 차이가 있는가?
    • 전체 평균과 그룹 평균의 차이과 그룹내 차이를 비교
      • 여러 집단 간에 차이 비교 : 기준은 전체 평균
    • 범주의 수 3개 이상일때 사용
    • F 통계량
      • 집단간 분산/집단 내 분산 = (전체 평균 - 각 집단 평균)/각 집단의 평균-개별 값

    !주의!
    분산 분석은 전체 평균대비 각 그룹간 차이가 있는지만 알려줌
    어느 그룹간에 차이가 있는지 없는지 알 수 없음
    (그래서 보통 사후분석 진행)

    2. 이변량분석 : 범주 -> 범주

    2.1 교차표(Crosstab) 집계

  • 교차표 시각화(mosaic plot)

  • 아무런 관련이 없을 때의 교차표와 차이 비교(Chi-squared test)

#교차표
pd.crosstab(df['Survived'],df['Sex'])
pd.crosstab(titanic[’Survived’],titanic[’Sex’],normalize=’’)

pd.crosstab(titanic[’Survived’],titanic[’Sex’],normalize=’’)

  • normalize 옵션 : 비율로 변환
    • columns: 열 기준 100%
    • index: 행 기준 100%
    • all : 전체 기준 100%

2.2 시각화 - 모자이크 플롯

  • mosaic plot : 범주별 양과 비율 나타냄
  • 빨간선은 전체 평균
  • 두 범주형 변수가 아무런 상관이 없다면
    • 범주별 비율의 차이가 전혀 없음
  • 조금이라도 관련이 잇다면,비율 혹은 bar의 크기에 조금이라도 차이가 남
    • 전체 평균 기준선을 기준으로 많이 차이가 나면 관련이 깊음

2.3 수치화 - 카이제곱검정

  • 기대빈수 : 아무련 관련이 없을때 나올 수 있는 빈도수
  • 실제 데이터 관련된 값

카이제곱 통계량

  • 클수록 기대빈도로부터 실제 값에 차이가 크다는 의미
  • 범주의 수가 늘어날수록 값은 커지게 되었음
  • 자유도의 약 2배도다 크면, 차이가 있다고 봄

범주형 변수의 자유도

  • 범주의 수 -1

카이제곱 검정에서 자유도 계산

  • x 변수의 자유도 * y 변수의 자유도

카이제곱 변수

  • 먼저 crosstab으로 집계
    • normalize 옵션을 사용하면 안됨!!
    • 카이제곱 검정 수행
# 먼저 교차표 집계
table=pd.crosstab(titanic['Survived'],titanic['Pclass'])
print(table)

# 카이제곱검정
spst.chi2_contingency(table)

결과

  1. 카이제곱 통계량
  2. p-value
  3. 자유도
  4. 기대빈도:계산된 값

3. 이변량분석 숫자 → 범주

sns.kdeplot()

  • common_norm=False : 생존자, 사망자 각각 kde plot
  • multiple-’fill’ 모든 구간에 대한 100% 비율로 kpe 그리기
  • 겹치는 부분이 많은 수록 관련이 없다
profile
안녕하세요

0개의 댓글