계획비교 :: 통계 - mindscale
Skip to content

계획비교

계획비교

계획비교

  • 사후 검증에서는 1 vs. 2, 1 vs. 3, 1 vs. 4, 2 vs. 3, 등등 모든 비교를 수행. 많은 비교를 수행하여 과잉검증의 문제가 있음.
  • 계획비교(planned comparison): 두 집단으로 나누어가며 비교하는 방법
  • 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번 비교가 가능 - poison 변수의 수준(level, 집단의 수)을 확인해보면 3가지 - 따라서 2번 비교가 가능

PlantGrowth 데이터의 group 변수는 ctrl, trt1, trt2 세 개의 수준으로 구성

대비계수는 다음과 같이 구성

수준 대비계수1 대비계수2
ctrl 2 0
trt1 -1 1
trt2 -1 -1

대비계수1은 ctrltrt1, trt2를 하나로 묶어 crtl와 비교

대비계수2는 trt1trt2를 비교(ctrl1은 이미 비교했으므로 제외)

plant = pd.read_csv('PlantGrowth.csv')
level2contrast = {
    'ctrl': pd.Series([2, 0]),
    'trt1': pd.Series([-1, 1]),
    'trt2': pd.Series([-1, -1]),
}

plant[['contrast1', 'contrast2']] = \
    plant.group.apply(lambda x: level2contrast[x])
contr.1 = c(2, -1, -1)
contr.2 = c(0, 1, -1)
contrasts(PlantGrowth$group) = cbind(contr.1, contr.2)
contrasts(PlantGrowth$group)

ANOVA 계획비교를 실시

from statsmodels.formula.api import ols

pg.anova(dv='weight', between='group', data=plant, detailed=True)
ols('weight ~ contrast1 + contrast2', plant).fit().summary()
m = aov(weight ~ group, data = PlantGrowth)
summary(m)
summary.lm(m)