Как исключить термин взаимодействия в rlm? - PullRequest
0 голосов
/ 24 сентября 2018

Я работаю с моделью из набора данных Prestige в пакете автомобилей в R.

library(car)
library(carData)

data = na.omit(Prestige)
prestige = data$prestige
income = data$income
education = data$education
type = data$type

Я пытаюсь соответствовать модели lm(prestige ~ income + education + type + income:type + education:type).Для класса я начинаю с полной модели и перехожу к модели меньшего размера, просто назад.Один из наименее полезных ковариат по p-значению - education:typeprof.Как мне просто удалить этот ковариат из модели, не убирая все образования: типовые взаимодействия?В целом, как вы исключаете взаимодействие с факторами?Я видел ответ с функцией update, указывающей, какое взаимодействие исключать, но в моем случае это не сработало.Возможно, я неправильно это реализовал.

fit4 = lm(prestige ~ income + education + type + income:type + education:type)
newfit = update(fit4, . ~ . - education:typeprof)

К сожалению, у меня это не сработало.

1 Ответ

0 голосов
/ 27 сентября 2018

Таким образом, есть способ отбросить один термин взаимодействия.Предположим, у вас есть линейная модель

fullmodel = lm(y_sim ~ income + education + type + income:type + education:type - 1)

. Вы можете позвонить model.matrix на fullmodel, что даст вам матрицу X для вашей линейной модели.Оттуда вы можете указать, какой столбец вы хотите удалить и переоснастить вашу модель.

X = model.matrix(fullmodel)
drop = which(colnames(X) == 'education:typeprof')
X1 = X[,-1]
newfit = lm(presitge ~ X1 - 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...