これが良いアイデアかどうかはまだわかりません。コントラストの意味について混乱する可能性が高すぎると思います。それでも、私がすることは、合計コントラストを計算するが、名前を治療コントラストからのデフォルト名と等しく設定する新しいコントラスト関数を作成することです。
set.seed(5)
n <- 5
y <- c(10 + rnorm(n, 0, 1), 20 + rnorm(n, 0, 1), 30 + rnorm(n, 0, 1))
wFactor <- as.factor(c(rep("A", n), rep("B", n), rep("C", n)))
contr.sumX <- function(...) {
conT <- contr.treatment(...)
conS <- contr.sum(...)
colnames(conS) <- colnames(conT)
conS
}
参考までに、通常の出力は次のとおりです。
> m1 <- lm(y ~ wFactor, contrasts = list(wFactor=contr.sum(n = levels(wFactor))))
> coef(summary(m1))
Estimate Std. Error t value Pr(>|t|)
(Intercept) 19.8218432 0.2481727 79.8711599 9.889455e-18
wFactor1 -9.6079241 0.3509692 -27.3754029 3.480430e-12
wFactor2 -0.1934654 0.3509692 -0.5512319 5.915907e-01
そして、これがcontr.sumX
関数の出力です。
> m2 <- lm(y ~ wFactor, contrasts = list(wFactor=contr.sumX(n = levels(wFactor))))
> coef(summary(m2))
Estimate Std. Error t value Pr(>|t|)
(Intercept) 19.8218432 0.2481727 79.8711599 9.889455e-18
wFactorB -9.6079241 0.3509692 -27.3754029 3.480430e-12
wFactorC -0.1934654 0.3509692 -0.5512319 5.915907e-01
または、特定の要素のコントラストを事前に設定することもできます。
contrasts(wFactor) <- "contr.sumX"
m3 <- lm(y ~ wFactor)
> coef(summary(m3))
Estimate Std. Error t value Pr(>|t|)
(Intercept) 19.8218432 0.2481727 79.8711599 9.889455e-18
wFactorB -9.6079241 0.3509692 -27.3754029 3.480430e-12
wFactorC -0.1934654 0.3509692 -0.5512319 5.915907e-01