Como remover um parâmetro de ordem inferior em um modelo quando os parâmetros de ordem superior permanecem?

O problema: Não consigo remover um parâmetro de ordem inferior (por exemplo, um parâmetro de efeitos principais) em um modelo, desde que os parâmetros de ordem superior (ou seja, interações) permaneçam no modelo. Mesmo ao fazer isso, o modelo é refatorado e o novo modelo não é aninhado no modelo superior.
Veja o exemplo a seguir (como eu estou vindo de ANOVAs eu usocontr.sum):

d <- data.frame(A = rep(c("a1", "a2"), each = 50), B = c("b1", "b2"), value = rnorm(100))
options(contrasts=c('contr.sum','contr.poly'))
m1 <- lm(value ~ A * B, data = d)
m1

## Call:
## lm(formula = value ~ A * B, data = d)
## 
## Coefficients:
## (Intercept)           A1           B1        A1:B1  
##   -0.005645    -0.160379    -0.163848     0.035523  

m2 <- update(m1, .~. - A)
m2

## Call:
## lm(formula = value ~ B + A:B, data = d)

## Coefficients:
## (Intercept)           B1       Bb1:A1       Bb2:A1  
##   -0.005645    -0.163848    -0.124855    -0.195902  

Como pode ser visto, embora eu remova um parâmetro (A), o novo modelo (m2) é refatorado e énão aninhado no modelo maior (m1). Se eu transformar meus fatores por mão em variáveis ​​de contraste numérico, posso obter os resultados desejados, mas como posso obtê-lo usando os recursos do fator R?

A questão: Como posso remover um fator de ordem inferior em R e obter um modelo que realmente perca esse parâmetro e não seja refatorado (ou seja, o número de parâmetros no modelo menor deve ser menor)?

Mas por que? Quero obter "Tipo 3" como valores de p para umlmer modelo usando oKRmodcomp função dopbkrtest pacote. Então este exemplo é apenas um exemplo.

Por que não CrossValidated? Eu tenho a sensação de que isso é realmente mais um R, então uma questão de estatísticas (ou seja, eu sei que você nunca deve encaixar um modelo com interações, mas sem um dos efeitos principais, mas eu ainda quero fazê-lo).

questionAnswers(2)

yourAnswerToTheQuestion