【发布时间】:2020-01-03 08:21:22
【问题描述】:
model.matrix 如果交互项中包含低阶项,则返回更少的级别。如果双因素变量分别具有 na 和 nb 水平。在具有交互项的完整 model.matrix 中,
model.matrix(~ A + B + A:B),我不应该有 (na-1) + (nb-1) + (na*nb-1) 吗?
在以下示例中,a 和 b 均具有三个级别。它们总共有九个级别。
data(mtcars)
a <- as.factor(mtcars$gear)
b <- as.factor(mtcars$cyl)
table (a,b)
b
a 4 6 8
3 1 2 12
4 8 4 0
5 2 1 2
对于只有交互项的模型矩阵,它具有所有九个级别。
mod.I <- model.matrix(~ a:b)
colnames(mod.I)
[1] "(Intercept)" "a3:b4" "a4:b4" "a5:b4" "a3:b6"
[6] "a4:b6" "a5:b6" "a3:b8" "a4:b8" "a5:b8"
但是,对于只有一个低阶项的 model.matrix,它也会降低其他变量的水平。在这种情况下,b 没有 b = 4 的项。
mod.a <- model.matrix(~ a + a:b)
colnames(mod.a)
[1] "(Intercept)" "a4" "a5" "a3:b6" "a4:b6"
[6] "a5:b6" "a3:b8" "a4:b8" "a5:b8"
这相当于完整的model.matrix。
mod.ab <- model.matrix(~ a + b + a:b)
colnames(mod.ab)
[1] "(Intercept)" "a4" "a5" "b6" "b8"
[6] "a4:b6" "a5:b6" "a4:b8" "a5:b8"
我读到它与对比度有关,但是,对比度不会在交互项上独立运行吗?另外,如果我想知道 a4:b4 与 a3:b4 的系数,我该怎么做?
【问题讨论】:
-
我认为这应该会有所帮助 - stats.stackexchange.com/questions/147083/…
-
谢谢,这很有帮助。对于
mod.a,假设Intercept的系数为a3:b4,是否可以将a4:b4的系数计算为a4 + Intercept?如果a4或Intercept中只有一个是显着的,如何为这个新系数分配显着性水平?
标签: r model.matrix