2016-11-21 1 views
2

Мне не нужен основной эффект, потому что он коллинеарен с фиксированным эффектом с более высоким коэффициентом, поэтому это раздражает наличие этих NA.Как использовать формулу в R, чтобы исключить основной эффект, но сохранить взаимодействие

В этом примере:

lm(y ~ x * z) 

Я хочу, чтобы взаимодействие x (числовой) и z (фактор), но не основной эффект z.

+0

if 'fz <- factor (z)' (только для обозначения), то 'x: fz' должен работать в одном смысле (он изменяет изменчивость данных по-разному), но он построит модель, которая * эквивалент * с точки зрения сложности, доброты и т. д. на 'x * fz'. –

+0

@ ZheyuanLi да, это правильно, Бен правильный? – robertevansanders

ответ

2

С вашего вопроса, x является числовым. Если у вас есть z как фактор уже, спецификация вы хотите:

y ~ x + x:z 

Поскольку x является числовым значением, это эквивалентно сделать

y ~ x:z 

Единственное различие здесь параметризация (смотрите примеры ниже) ,

Но если x является фактором, эти две спецификации разные, которые вы можете прочитать Why do I get NA coefficients and how does lm drop reference level for interaction.

Рассмотрим небольшой пример:

set.seed(0) 
y <- rnorm(10) 
x <- rnorm(10) 
z <- gl(2, 5, labels = letters[1:2]) 

fit1 <- lm(y ~ x + x:z) 
#Coefficients: 
#(Intercept)   x   x:zb 
#  0.1989  -0.1627  -0.5456 

fit2 <- lm(y ~ x:z) 
#Coefficients: 
#(Intercept)   x:za   x:zb 
#  0.1989  -0.1627  -0.7082 

Вы можете проверить эквивалентность

all.equal(fit1$fitted, fit2$fitted) 
# [1] TRUE 
1

Это очень хорошее объяснение, но позвольте мне добавить еще одну вещь, когда в процессе выбора значимых предикторов ,

Давайте снова рассмотрим следующую модель:

fit1 <- lm(y ~ x + x:z) 
#Coefficients: 
#(Intercept)   x   x:zb 
#  0.1989  -0.1627  -0.5456 

Предположим, что основной эффект x не является статистически значимым, и вы хотите, чтобы избавиться от него. Наиболее интуитивная вещь, для меня, по крайней мере, чтобы написать вторую модель, как и выше:

fit2 <- lm(y ~ x:z) 
#Coefficients: 
#(Intercept)   x:za   x:zb 
#  0.1989  -0.1627  -0.7082 

, который в конечном счете ставит назад главный эффект замаскирован как взаимодействие с исходным уровнем фактора. Теперь единственным решением, которое я смог найти, чтобы действительно не включать основные эффекты, является использование lm.fit, который, как вы все знаете, не возвращает объект класса lm, а list. Поэтому возникает вопрос: знаете ли вы какой-либо метод, чтобы избавиться от основных эффектов, не потеряв класс lm?

+0

Итак, если модели равны (установленные значения идентичны), почему разные коэффициенты «x: zb»? Есть ли разница в интерпретации взаимодействия «x: zb» между моделями? Я только что разместил этот вопрос на SE (https://stats.stackexchange.com/q/280265/161806), который кажется связанным, позаботиться о том, чтобы взглянуть? – wibom

Смежные вопросы