考虑以下代码:
x = rnorm(100)
y = rnorm(100)
z = rnorm(100)
m = lm(z ~x * y)
print(summary(update(m, . ~ . - x)))
返回
> print(summary(update(m, . ~ . - x)))
Call:
lm(formula = z ~ y + x:y)
Residuals:
Min 1Q Median 3Q Max
-2.41007 -0.73868 -0.08357 0.66749 3.06076
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.04004 0.11219 0.357 0.722
y 0.16649 0.11672 1.426 0.157
y:x 0.07202 0.12069 0.597 0.552
Residual standard error: 1.117 on 97 degrees of freedom
Multiple R-squared: 0.02479, Adjusted R-squared: 0.00468
F-statistic: 1.233 on 2 and 97 DF, p-value: 0.296
请注意,主要效果x消失了,但交互项x:y仍然存在。换句话说,更新命令似乎不是针对原始数据帧中的变量,而是针对model.matrix()中的变量。是否有一种简便的方法可以删除所有涉及“ x”的术语?