您如何排除r lm中的交互项?

时间:2018-09-24 02:08:34

标签: r interaction linearmodels

我正在使用R中汽车包装中Prestige数据集中的模型。

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。我如何只从模型中删除该协变量而又不消除所有Education:Type交互作用?一般来说,您如何排除与因素的相互作用?我看到了一个update函数的答案,该函数指定要排除的交互,但在我的情况下不起作用。也许我执行不正确。

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

不幸的是,这对我不起作用。

1 个答案:

答案 0 :(得分:0)

因此,有一种方法可以删除单个交互项。假设您有线性模型

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)