The problem you have encountered is that by removing the main effect for ROI
in the model formulation, you have simply reparameterized the model. The main effect is still there, but now it just appears as part of the interaction. For example:
> dt <- read.csv("http://www.bodowinter.com/tutorial/politeness_data.csv")
>
> lm0 <- lm(frequency ~ attitude*gender, data=dt)
> lm1 <- lm(frequency ~ attitude*gender - gender, data=dt)
>
>summary(lm0)
Call:
lm(formula = frequency ~ attitude * gender, data = dt)
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 260.686 7.784 33.491 <2e-16 ***
attitudepol -27.400 11.008 -2.489 0.0149 *
genderM -116.195 11.008 -10.556 <2e-16 ***
attitudepol:genderM 15.890 15.664 1.014 0.3135
Residual standard error: 35.67 on 79 degrees of freedom
Multiple R-squared: 0.7147, Adjusted R-squared: 0.7038
F-statistic: 65.95 on 3 and 79 DF, p-value: < 2.2e-16
> summary(lm1)
Call:
lm(formula = frequency ~ attitude * gender - gender, data = dt)
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 260.686 7.784 33.491 < 2e-16 ***
attitudepol -27.400 11.008 -2.489 0.0149 *
attitudeinf:genderM -116.195 11.008 -10.556 < 2e-16 ***
attitudepol:genderM -100.306 11.144 -9.000 9.71e-14 ***
Residual standard error: 35.67 on 79 degrees of freedom
Multiple R-squared: 0.7147, Adjusted R-squared: 0.7038
F-statistic: 65.95 on 3 and 79 DF, p-value: < 2.2e-16
Note that the main effect for gender
in lm0
is now shown as the interaction term attitudeinf:genderM
in lm1
. This is because there are only 2 levels of gender
. If we had more than 2 levels of a categorical variable and removed it's main effect, the interaction terms would then be simple contrasts. Note also that the estimate for the interaction parameter in lm0
is now the difference in the two levels of the interaction in lm1
The $R^2$, F statistic and the associated degrees of freedom are identical in both models, because they are simply different parameterizations of the same model.
In order to test the significance of gender
we need to remove it from the interaction as well. Since this example is a two-way interaction, we need to remove the interaction entirely:
> lm3 <- lm(frequency ~ attitude, data=dt)
> anova(lm0,lm3)
Analysis of Variance Table
Model 1: frequency ~ attitude * gender
Model 2: frequency ~ attitude
Res.Df RSS Df Sum of Sq F Pr(>F)
1 79 100511
2 81 345341 -2 -244830 96.216 < 2.2e-16 ***
Also see this post for more details about testing the significance of a categorical variable.