TOP
본문 바로가기
📚 목차
자격증/빅데이터분석기사

[빅분기 실기] 작업형 3유형 : 분산분석

by 기록자_Recordian 2025. 5. 31.
728x90
반응형
이전 내용
 

[빅분기 실기] 작업형 3유형 : 가설검정

이전 내용 [빅분기 실기] 작업형 2유형 : 회귀 실습이전 내용 [빅분기 실기] 작업형 2유형 : 다중 분류 실습이전 내용 [빅분기 실기] 작업형 2유형 : 이진 분류 실습 (feat. 가짜데이터)이전 내용 [빅

puppy-foot-it.tistory.com


작업형 3유형

 

작업형 3유형은 데이터 분석 과정에서 필요한 통계학적 접근 방법을 이해하고 적용할 수 있는 능력을 평가하기 때문에, 1과 2유형보다 이론적 내용을 더 많이 포함한 시험 문제를 출제한다.

 

3유형에서는 사이파이(scipy)와 스태츠모델즈(statsmodels) 같은 통계 분석을 위한 주요 파이썬 라이브러리를 활용해 수행한다.

  • 가설검정: 주어진 데이터가 특정 가설을 지지하는지 여부를 통계적으로 검토하는 방법. 이를 통해 귀무가설과 대립가설을 설정하고 검정.
  • 분산 분석: 두 개 이상의 집단 간의 평균 차이를 검정하기 위한 통계적 기법으로, 집단 간 분산과 집단 내 분산을 비교.
  • 카이제곱 검정: 범주형 변수 간의 독립성을 검정하는 방법, 기대 빈도와 관측 빈도를 비교하여 결과 도출.
  • 회귀 분석: 하나 이상의 독립 변수가 종속 변수에 미치는 영향을 모델링하는 기법, 선형 회귀가 가장 일반적.
  • 로지스틱 회귀 분석: 이진 종속 변수를 예측하기 위해 사용되는 회귀 분석 기법, 사건의 확률을 추정하는 데 적합.

분산 분석(ANOVA)

 

분산 분석: 여러 집단의 평균 차이를 통계적으로 유의미한지 검정하는 방법. ※ 주로 3개 이상의 집단 비교 시 사용

  • 일원 분산 분석: 단일 요인의 수준 간 평균 차이 검정
  • 이원 분산 분석: 두 요인의 수준 간 및 그들의 상호작용이 평균에 미치는 영향 검정

※ 요인: 독립변수로, 머신러닝에서는 '변수'를 의미.

 

◆ 분산 분석의 기본 가정

  • 독립성: 각 집단의 관측치들은 모든 다른 집단의 관측치들과 독립적
  • 정규성: 각 집단에서의 관측치는 정규 분포를 따름
  • 등분산성: 모든 집단에서의 관측치는 동일한 분산을 가짐

◆ 일원 분산 분석의 귀무 가설과 대립 가설

  • 귀무 가설: 모든 집단의 평균은 동일
  • 대립 가설: 집단의 평균에는 차이가 있음. (적어도 두 그룹 간의 평균)

◆ 이원 분산 분석의 귀무 가설과 대립 가설

이원 분산 분석은 주 효과뿐 아니라 상호작용 효과에도 관심을 두기 때문에, 이원 분산 분석을 실시할 경우 주 효과 2개, 상호작용 효과 1개로 세 가지 가설을 세울 수 있다.

ex) 다이어트 시 운동 방법과 운동 장소에 따른 효과를 분석한다고 할 때 A요인은 운동 방법은 걷기와 달리기, B 요인은 야외에서 운동, 실내 (헬스장)에서 운동으로 구성된다.

A  요인: 운동 방법 걷기 달리기
B 요인: 운동 장소 야외 핼스장 야외 헬스장

 

- 주 효과: A 요인(운동 방법)

  • 귀무 가설: 운동 방법에 따라 다이어트 효과가 차이가 없다
  • 대립 가설: 운동 방법에 따라 다이어트 효과가 차이가 있다

- 주 효과: B 요인(운동 장소)

  • 귀무 가설: 운동 장소에 따라 다이어트 효과가 차이가 없다
  • 대립 가설: 운동 장소에 따라 다이어트 효과가 차이가 있다

- 상호작용 효과

  • 귀무 가설: A 요인과 B 요인 간에 상호작용이 없다
  • 대립 가설: A 요인과 B 요인 간에 상호작용이  있다

분산 분석 풀기

 

1. 일원 분산 분석

일원 분산 분석은 scipy의 f_oneway 사용

from scipy import stats

scipy.stats.f_oneway(sample1, sample2, sample3)
# sample은 각 집단 데이터

 

Q. 세 개 학급의 시험 점수 평균 비교

대학교 A학과에서는 세 개 반(1반, 2반, 3반)이 같은 시험을 봤다. 학생들이 얼마나 잘했는지 확인하고자, 각 반의 평균 점수가 통계적으로 차이가 있는지 알아보려 한다. (유의 수준 0.05)

  • 귀무 가설: 세 반의 평균 시험 점수는 모두 같다
  • 대립 가설: 적어도 하나의 반 평균은 다르다
# 일원 분산 분석
import pandas as pd
from scipy import stats

df = pd.DataFrame({
  'class_1' : [82, 76, 91, 85, 77],
  'class_2' : [89, 94, 90, 92, 88],
  'class_3' : [70, 65, 72, 68, 74],
})

df

 

print("정규성 검정: p-value가 유의 수준보다 크면 정규 분포")
print(stats.shapiro(df['class_1']))
print(stats.shapiro(df['class_2']))
print(stats.shapiro(df['class_3']))

print("\n등분산성 검정: p-value가 유의 수준 보다 크면 모든 그룹의 분산 동일")
print(stats.levene(df['class_1'], df['class_2'], df['class_3']))

print("\n일원 분산 분석: p-value가 유의 수준 보다 크면 세 반의 평균 시험 점수는 모두 같다고 볼 수 있다 - 귀무 가설 채택")
print(stats.f_oneway(df['class_1'], df['class_2'], df['class_3']))

 

1) 정규성 검정 (shapiro)

  • Shapiro-Wilk 검정은 각 그룹이 정규분포를 따르는지 확인하는 과정.
  • p-value > 0.05 → 정규분포라고 판단 → ANOVA 사용 가능 조건 충족.

2) 등분산성 검정 (levene)

  • Levene 검정은 세 그룹이 비슷한 분산을 갖는지 확인.
  • p-value > 0.05 → 등분산 가정 충족 → 일원 분산 분석 가능.

3) 일원 분산 분석 (f_oneway)

  • f_oneway()는 F-검정 통계량과 p-value를 반환.
검정 단계 결과 해석 결론
정규성 모든 반의 점수 분포는 정규성을 만족 만족
등분산성 세 반의 분산은 비슷함 만족
ANOVA p-value가 작음 → 평균 차이 있음 귀무가설 기각 (차이 있음)

2. 이원 분산 분석

이원 분산 분석의 경우 스태츠모델즈(statsmodels)의 ols와 anova_lm 사용

model = ols(종속변수 ~ 요인1 + 요인2 + 요인1:요인2).fit()
aonva_lm(model, typ=숫자)
# 종속변수: 연속형 변수
# 요인1: 첫 번째 독립 변수(범주형 변수)
# 요인2: 두 번째 독립 변수(범주형 변수)
# typ=1: 변수의 순서에 따른 분석 (기본값)
# typ=2: 각 변수의 독립적인 효과 분석
# typ=3: 모든 변수와 상호작용을 동시에 고려해 분석

 

Q. 운동 종류와 성별에 따른 체중 감소 효과 분석

헬스장에서 다이어트 프로그램을 진행하며, 두 가지 요인(factor)을 비교하고자 한다.

  • 요인1: 운동 종류 (달리기, 근력)
  • 요인2: 성별 (남성, 여성)

각 조합별로 3명씩 참가했고, 4주간 다이어트를 진행한 후 감량한 체중(kg)은 다음과 같다.

성별 운동 종류 감량 1 감량 2 감량 3
남성 달리기 3.2 2.8 3.0
남성 근력 1.5 1.8 1.7
여성 달리기 2.5 2.2 2.3
여성 근력 1.0 0.9 1.2

 

[문제]

  • 운동 종류에 따라 체중 감량에 차이가 있는가?
  • 성별에 따라 체중 감량에 차이가 있는가?
  • 운동 종류와 성별의 상호작용 효과가 있는가?
# 이원 분산 분석
import pandas as pd
from statsmodels.formula.api import ols

df = pd.DataFrame({
    'gender': ['m1', 'm1', 'm1','m2', 'm2','m2','w1','w1','w1', 'w2','w2','w2'], 
    'type': ['run', 'run','run','weight','weight','weight','run','run','run', 'weight','weight','weight'],
    'lose_weight': [3.2, 2.8, 3.0, 1.5, 1.8, 1.7, 2.5, 2.2, 2.3, 1.0, 0.9, 1.2]
})

df

★ 필자가 작성한 코드는 개별 인물로 되어 있어서 약간 혼동이 있을 수 있으므로, 성별에 대한 효과만 필요하다면 아래와 같이 하는 것이 좋다.

df = pd.DataFrame({
    'gender': ['male']*6 + ['female']*6,
    'type': ['run']*3 + ['weight']*3 + ['run']*3 + ['weight']*3,
    'lose_weight': [3.2, 2.8, 3.0, 1.5, 1.8, 1.7, 2.5, 2.2, 2.3, 1.0, 0.9, 1.2]
})

 

새로 변경한 데이터프레임으로 이원 분산 분석을 진행해 본다.

# 이원 분산 분석
import statsmodels.api as sm
from statsmodels.formula.api import ols

model = ols('lose_weight ~ gender+type+gender:type', data=df).fit()
anova_table = sm.stats.anova_lm(model)
anova_table

※ 만약, 범주형 변수가 1, 2, 3 과 같은 숫자로 되어있을 때는 연속형 변수로 잘못 해석될 위험이 있으므로 C()를 사용해 명확히 범주형으로 처리해줘야 한다.

model = ols('lose_weight ~ C(gender)+C(type)+C(gender):C(type)', data=df).fit()
  • gender: 성별의 주효과
  • type: 운동 종류의 주효과
  • gender:type: 성별과 운동 종류의 상호작용 효과

 

 

[해석]

요인 df Sum_sq Mean_sq F값 p-value 해석 요약
gender 1 1.267 1.267 46.09 0.000139 ✅ 유의함
type 1 5.200 5.200 189.12 0.0000007541 ✅ 유의함
gender:type 1 0.0008 0.0008 0.03 0.8661 ❌ 유의하지 않음
Residual(오차) 8 0.220 0.0275 - - -

 

용어 의미
df (자유도) 각 요인의 그룹 수 - 1 비교한 그룹의 수에 따라 달라짐
Sum Sq (제곱합) 전체 변동 중 이 요인이 설명하는 양 요인이 데이터의 차이에 얼마나 기여했는지
Mean Sq (평균제곱) 제곱합을 자유도로 나눈 값 비교 기준값
F값 요인에 의한 분산 / 오차에 의한 분산 F값이 클수록 요인의 효과가 크다는 뜻
p-value 귀무가설이 맞을 확률 0.05보다 작으면 의미 있는 차이 있음(귀무가설 기각)

 

◆ 요인별 해석

1. gender (성별의 효과)

  • F = 46.09, p = 0.000139
  • 해석: 성별에 따라 감량량에 통계적으로 유의미한 차이가 있음.
  • 즉, 남성과 여성은 평균적으로 다르게 체중을 감량했음.

2. type (운동 종류의 효과)

  • F = 189.12, p = 0.000000754
  • 해석: 운동 종류(run vs. weight)에 따라 감량량에 매우 큰 차이가 있음.
  • 어떤 운동이든 체중 감량에 영향을 많이 줬다는 뜻.
    예를 들어 달리기(run)가 웨이트(weight)보다 감량 효과가 컸을 가능성 있음.

3. gender:type (성별과 운동 방식의 상호작용)

  • F = 0.03, p = 0.866
  • 해석: 성별과 운동 종류의 조합이 감량에 영향을 주지 않음.
    즉, 남자가 달리기를 하든 웨이트를 하든, 여자가 어떤 운동을 하든 간에 그 조합 자체는 감량량 차이에 큰 영향을 주지 않음.

◆ 최종 결론

항목 결론
성별(gender) 감량량에 유의미한 차이 있음
운동 종류(type) 감량량에 유의미한 차이 있음
성별 x 운동 상호작용 감량량에 차이를 주지 않음

[참고]

유튜브 퇴근 후 딴짓


다음 내용

 

[빅분기 실기] 작업형 3유형 : 카이제곱 검정

이전 내용 [빅분기 실기] 작업형 3유형 : 분산분석이전 내용 [빅분기 실기] 작업형 3유형 : 가설검정이전 내용 [빅분기 실기] 작업형 2유형 : 회귀 실습이전 내용 [빅분기 실기] 작업형 2유형 : 다중

puppy-foot-it.tistory.com

728x90
반응형