본문 바로가기
데이터분석과 AI/빅데이터 분석기사

[빅데이터분석기사 실기][작업형3] 일원배치법(One-Way ANOVA)

by 우공80 2023. 5. 20.
728x90

일원배치법

일원배치법 혹은 일원분산분석(One-Way ANOVA, One-Way Analysis of Variance)은 하나의 독립 변수(그룹 또는 처리)와 연속형 종속 변수(측정값) 간의 차이를 평가하는 통계적인 방법입니다. 이 방법으로 그룹 간의 평균 차이가 우연에 의한 것인지 통계적으로 검증할 수 있습니다.

 

일원배치법은 다음과 같은 과정으로 진행합니다.

  1. 가설 설정
    • 귀무 가설(H0): 그룹 간의 평균은 모두 동일하다.
    • 대립 가설(H1): 적어도 하나의 그룹의 평균은 다른 그룹과 유의하게 다르다.
  2. 기본 가정 검증
    • 일원배치법에 따른 검증이 유효하려면 충족되어야 하는 몇 가지 가정이 있습니다. 이러한 가정에는 다음이 포함됩니다.
    • 독립성: 각 그룹 내의 관측값은 서로 독립적인 것으로 가정합니다. 이는 한 그룹의 측정 또는 데이터 포인트가 다른 그룹의 측정에 의해 영향을 받거나 관련되지 않아야 함을 의미합니다. ANOVA의 독립성 가정은 실험 설계 과정에서 확보되어야 하며, 데이터 자체에서 독립성을 검증하기는 어렵습니다. 
    • 정규성: 각 그룹 내의 데이터는 정규 분포를 따라야 합니다. 이 가정은 표본 크기가 작을 때 주로 중요합니다.
       Shpiro-Wilk 검정을 사용합니다.
    • 분산의 동질성: 분산으로 측정된 각 그룹 내 데이터의 변동성은 모든 그룹에서 거의 동일해야 합니다.
      levene 검정을 사용합니다.
  3. 분산 분석 수행:
    • 일원배치법은 분산 분석(ANOVA)을 사용하여 그룹 간의 평균 차이를 검정합니다.
      ('scipy.stats 모듈의 'f_oneway' 함수를 사용합니다.)
    • 변동의 비율인 F-통계량을 계산하여 그룹 간의 평균 차이가 우연에 의한 것인지 확인합니다.
  4. 검정 및 결과 해석:
    • 계산된 F-통계량과 p-value를 사용하여 귀무가설을 검정합니다.
    • 만약 p-value가 사전에 설정한 유의 수준보다 작으면 귀무가설을 기각하고 대립 가설을 채택합니다.
    • 이는 그룹 간의 평균이 통계적으로 유의하게 다르다는 것을 의미합니다.

아래는 python 예제입니다. 유의수준은 0.05로 정했습니다.

import scipy.stats as stats

# 샘플 데이터
group1 = [ 72, 84, 76, 88, 100]
group2 = [81, 63, 75, 97, 99]
group3 = [90, 62, 94, 76, 88]

# 기본 가정에 대한 확인
# 1. 독립성: 이 가정은 일반적으로 데이터 수집 프로세스에 내재되어 있으므로 특정 코드가 필요하지 않습니다.

# 2. 정규성: Shapiro-Wilk 사용
_, p_value1 = stats.shapiro(group1)
_, p_value2 = stats.shapiro(group2)
_, p_value3 = stats.shapiro(group3)
alpha = 0.05

print("정규분포를 따른다." if (p_value1 >= alpha) & (p_value1 >= alpha) & (p_value1 >= alpha) else "정규분포를 따르지 않는다.")

# 3. 등분산성: Levene 검정 사용
_, p_value_levene = stats.levene(group1, group2, group3)
print("등분산성을 충족한다." if p_value_levene>=alpha else "등분산성을 충족하지 않는다. ")


# 분산 분석 수행
f_statistic, p_value = stats.f_oneway(group1, group2, group3)

# 결과 출력
print("F-Statistic:", f_statistic)
print("P-Value:", p_value)
t='기각한다. 적어도 하나의 그룹의 평균은 다른 그룹과 유의하게 다르다.'
f='채택한다. 그룹 간의 평균은 모두 동일하다.'

print('귀무가설을 ',t if p_value<=0.05 else f)

Output: 

정규분포를 따른다.
등분산성을 충족한다.
F-Statistic: 0.028846153846153844
P-Value: 0.9716330818653905
귀무가설을  채택한다. 그룹 간의 평균은 모두 동일하다.

 

※ 위 내용은 "빅데이터 분석기사 실기 준비를 위한 캐글 놀이터"를 따라가며 공부한 내용입니다.

https://www.kaggle.com/datasets/agileteam/bigdatacertificationkr

 

Big Data Certification KR

빅데이터 분석기사 실기 (Python, R tutorial code)

www.kaggle.com

 

728x90

댓글