Вот один подход, который, как мне кажется, будет работать:
mtcars$cyl <-as.factor(mtcars$cyl)
fit <- lm(mpg ~ wt + cyl, mtcars)
library(emmeans)
fit
emm_fit <- emmeans(fit, specs = "cyl")
contrast(emm_fit, list(cyl = c(1, -.5, -.5)))
Это эквивалент x_1 - .5x_2-.5x_3
Это приводит к следующему:
contrast estimate SE df t.ratio p.value
cyl 5.16 1.37 28 3.781 0.0008
Подходит для модели, использует emmeans для определения маргиналов, затем в функции contrast
мы смотрим разницу между 4 цилиндрами и средним значением 6 и 8. Подробнее см. https://cran.r-project.org/web/packages/emmeans/vignettes/comparisons.html#contrasts