Skip to main content

계획 비교

계획비교 planned comparison

  • 사후 검증에서는 1 vs. 2, 1 vs. 3, 1 vs. 4, 2 vs. 3, 등등 모든 비교를 수행
  • 많은 비교를 수행하여 과잉 검증의 문제가 있음
  • 계획비교: 두 집단으로 나누어가며 비교하는 방법

1, 2, 3, 4와 같이 4개의 집단이 있는 경우:

  • 1 vs 2, 3, 4로 한 번 2 vs. 3, 4로 또 한 번, 그리고 마지막으로 3 vs. 4로 비교

또는 1, 2 vs. 3, 4로 한 번, 1 vs. 2로 또 한 번, 마지막으로 3 vs. 4로 비교할 수도 있음

  • 대비계수(contrast)를 통해 비교할 집단에 수치를 설정
  • 수준이 k개이면 k - 1번 비교가 가능

계획비교 예시

  • ctrl, trt1, trt2 세 개의 수준으로 구성
  • 대비계수1은 ctrl과 trt1, trt2를 하나로 묶어 ctrl와 비교
  • 대비계수2는 trt1과 trt2를 비교(ctrl은 이미 비교했으므로 제외)
수준대비 계수1대비 계수 2
ctrl20
trt1-11
trt2-1-1

Python 계획 비교

# 실습 데이터 불러오기
plant = pd.read_excel('plant_growth.xlsx')

#분산 분석(ANOVA)을 수행
pg.anova(dv='weight', between='group', data=plant)
  • 분산 분석에서 통계적으로 유의한 차이가 없으면 STOP
  • 통계적으로 유의한 차이가 있을 경우 어느 집단 사이에 차이가 있는지 계획 비교
from statsmodels.formula.api import ols
#대비(contrast)를 정의
level2contrast = {
'ctrl': pd.Series([2, 0]), #대조군(ctrl)에 대한 대비 설정
'trt1': pd.Series([-1,1]), #처리군1(trt1)에 대한 대비 설정
'trt2': pd.Series([-1,-1]), #처리군2(trt2)에 대한 대비 설정
}

#새로운 열 'contrast1'과 'contrast2'를 생성
#plant의 group 값에 따라 contrast1과 contrast2의 값을 할당
plant[['contrast1', 'contrast2']] = plant.group.apply(lambda x: level2contrast[x])

ols('weight ~ contrast1 + contrast2', plant).fit().summary()

퀴즈