【问题标题】:R interaction with some categoriesR与某些类别的交互
【发布时间】:2014-03-19 01:53:42
【问题描述】:

我有一个分类变量和一个虚拟变量。

categorical <- sample(letters[1:4], 10, replace=TRUE)
dummy <- sample(c(0,1), 10, replace=TRUE)
y <- rnorm(10)
Data <- data.frame(cbind(y, dummy, categorical))
Data$categorical <- factor(Data$categorical, labels=c("A", "B", "C", "D"))
            y dummy categorical
1   1.2489535     1           A
2   1.0294912     1           C
3  -0.6506571     1           D
4   1.7365180     0           B
5  -1.6664038     1           B
6  -0.3499880     1           A
7   1.1315883     0           B
8  -0.8568375     0           D
9  -0.5332537     0           C
10 -1.8431102     0           B
11  1.2489535     1           B
12  1.0294912     1           A
13 -0.6506571     1           D
14  1.7365180     0           D
15 -1.6664038     1           A
16 -0.3499880     1           A
17  1.1315883     0           B
18 -0.8568375     0           D
19 -0.5332537     0           A
20 -1.8431102     0           D

在这两者之间创建交互变量非常容易,

model.matrix(y ~ categorical:dummy, data = Data)
   (Intercept) categoricalA:dummy categoricalB:dummy categoricalC:dummy categoricalD:dummy
1            1                  1                  0                  0                  0
2            1                  0                  0                  1                  0
3            1                  0                  0                  0                  1
4            1                  0                  0                  0                  0
5            1                  0                  1                  0                  0
6            1                  1                  0                  0                  0
7            1                  0                  0                  0                  0
8            1                  0                  0                  0                  0
9            1                  0                  0                  0                  0
10           1                  0                  0                  0                  0
11           1                  0                  1                  0                  0
12           1                  1                  0                  0                  0
13           1                  0                  0                  0                  1
14           1                  0                  0                  0                  0
15           1                  1                  0                  0                  0
16           1                  1                  0                  0                  0
17           1                  0                  0                  0                  0
18           1                  0                  0                  0                  0
19           1                  0                  0                  0                  0
20           1                  0                  0                  0                  0

但是,如果我只想要类别的四个级别中的三个级别的交互呢?我宁愿避免手工这样做......

【问题讨论】:

    标签: r formula


    【解决方案1】:

    你看过dummies 包吗?

    但如果不是这样可能会起作用:

    model.matrix(y ~ categorical:dummy, data = Data[ ! Data$categorical %in% 'D', ] )
    

    【讨论】:

    • 我实际上对创建更多虚拟变量不感兴趣,而是使用 R 的 formula 元素来避免它。那个包看起来肯定会让创建假人更容易,但这不是我想要的。
    • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post
    • @Eran 这是代表​​ 48 的问题,我无法对帖子发表评论。我已经更新了我的答案,以便为 OP 问题提供一个潜在的解决方案。
    • @Christopher 您的编辑只是从类别D 中删除记录。我想保留这些记录,但不估计该类别的系数。
    • @gmacfarlane 我错过了什么吗?这不是微不足道的,因为除了截距之外,这些观察的所有列都将为 0。这不是简单地在其他任何地方添加 0 的类别 D 行,因为剩余的 model.matrix 在其他任何地方都是 0。
    猜你喜欢
    • 1970-01-01
    • 2020-11-15
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 2013-03-29
    • 2016-05-15
    • 1970-01-01
    相关资源
    最近更新 更多