logo

[통계] 계획비교

계획비교

 

계획비교

  • 사후 검증에서는 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은 이미 비교했으므로 제외)

=== "Python"

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])

=== "R"

contr.1 = c(2, -1, -1)
contr.2 = c(0, 1, -1)
contrasts(PlantGrowth<InlineMath math={`group) = cbind(contr.1, contr.2)
contrasts(PlantGrowth<InlineMath math={`group)

ANOVA 계획비교를 실시

=== "Python"

from statsmodels.formula.api import ols

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

=== "R"

m = aov(weight ~ group, data = PlantGrowth)
summary(m)
summary.lm(m)
Next
통계