계획비교
계획비교
계획비교
- 사후 검증에서는 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은 ctrl
과 trt1
, trt2
를 하나로 묶어 crtl
와 비교
대비계수2는 trt1
과 trt2
를 비교(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)