1
$\begingroup$

I have two questions concerning planned contrasts:

  1. I would like to know how factor-based contrasts (obtained through an interaction term) compare to model-paramter-based contrasts (obtained by specifying model parameters).
  2. I would like to know this for a simple case of comparing one condition with another, but ultimately I am interested in comparing one condition vs all other conditions.

Below are my attempts at understanding factor-based contrasts and model-parameter based contrasts:

#create some dummy data
data <- mtcars
#create interaction terms
data$interaction <- interaction(mtcars$am, mtcars$vs, sep="X")
	data$interaction <- gsub("^0", "am0", data$interaction)
	data$interaction <- gsub("^1", "am1", data$interaction)
	data$interaction <- gsub("0$", "vs0", data$interaction)
data$interaction <- gsub("1$", "vs1", data$interaction)
	data$interaction <- factor(data$interaction)
	levels(data$interaction)
#[1] "am0Xvs0" "am0Xvs1" "am1Xvs0" "am1Xvs1"

From Eric Fuchs' blogpost I think I figured out how to obtain factor-based contrasts. Let us assume for now that I am interested in the comparison of am0Xvs0 vs. am0Xvs1. To this purpose, I create a contrast matrix where I assign equal weights with opposing signs to my two levels of interest, and 0 to the other two levels:

#specify contrasts:
c.f <- c(-1, 1, 0, 0) 
mat.f <- cbind(c.f)
contrasts(data$interaction) <- mat.f
#fit model
fit.f <- aov(mpg~interaction, data)
#get coefficients for contrasts
summary(fit.f, split=list(interaction=list("am0Xvs0 vs. am0Xvs1"=1)))

Output:

                                       Df Sum Sq Mean Sq F value   Pr(>F)    
interaction                         3  788.6  262.86   21.81 1.73e-07 ***
  interaction: am0Xvs0 vs. am0Xvs1  1  232.3  232.28   19.27 0.000147 ***
Residuals                          28  337.5   12.05                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

For comparison, my attempt at model-parameter-based contrasts:

fit.m <- aov(mpg~am*vs, data)

with $E[mpg]=b_0 + b_1 \text{am} + b_2 \text{vs} + b3 (\text{am} \times \text{vs}).$ Based on Matt Blackwell's answer I think that a comparison of am0Xvs0 vs. am0Xvs1 means that $H_0: b_1 = 0$ (i.e., the regression weight associated with am). Therefore:

## construct contrast matrices
mat.m <- rbind("am0:vs0 - vs1" = c(0, 0, 1, 0))
library(car)
lht(fit.m, mat.m)

Output:

Linear hypothesis test

Hypothesis:
am = 0

Model 1: restricted model
Model 2: mpg ~ am * vs

  Res.Df    RSS Df Sum of Sq      F  Pr(>F)  
1     29 425.84                              
2     28 337.48  1     88.36 7.3311 0.01142 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

The values differ, so one of the two solutions is not correct (and my suspicion is that I did not correctly translate Matt's answer to this case). My question now is: which one of the two approaches is correct and how can the other be rewritten correctly?


Ultimately, I am interested in the comparison of 1 of the 4 levels of the interaction term vs. the other 3. Let's say I want to compare am0Xvs0 vs. the other 3 conditions. The factor-based version is simply an extension of what I have written above (if what I wrote above was correct):

#create contrast matrix
c.f2 <- c(1, -1/3, -1/3, -1/3) 
mat.f2 <- cbind(c.f2)
contrasts(data$interaction) <- mat.f2
#fit model
fit.f2 <- aov(mpg~interaction, data)
#get coefficients for contrasts
summary(fit.f2, split=list(interaction=list("am0Xvs0 vs. rest"=1)))

Output:

                                Df Sum Sq Mean Sq F value   Pr(>F)    
interaction                      3  788.6   262.9   21.81 1.73e-07 ***
  interaction: am0Xvs0 vs. rest  1  487.8   487.8   40.48 6.95e-07 ***
Residuals                       28  337.5    12.1                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Unfortunately I would not know how to start with the parameters for the model-parameter-based version, which is what I am ultimately interested in.

$\endgroup$

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.