【问题标题】:Specifically assign contrasts in R model.matrix在 R model.matrix 中专门分配对比
【发布时间】:2018-07-03 09:33:28
【问题描述】:

如果我有 2 个级别的变量(条件)并且想要创建一个模型。矩阵 R 会自动将 conditionB 分配为设计矩阵中的术语。

condition <- as.factor( c("A","A","A","B","B","B"))
df <- data.frame(condition)
design <- model.matrix( ~ condition)

> df
  condition
1         A
2         A
3         A
4         B
5         B
6         B


> design
  (Intercept) conditionB
1           1          0
2           1          0
3           1          0
4           1          1
5           1          1
6           1          1
attr(,"assign")
[1] 0 1
attr(,"contrasts")
attr(,"contrasts")$condition
[1] "contr.treatment"

问题:我想获得与 conditionA 相关的结果。如何在 model.matrix() 中指定它?

(一种解决方法是反转生成的 FC)

【问题讨论】:

标签: r model.matrix


【解决方案1】:

您可以使用C 函数来确定要考虑的基数:

以A为底:

 model.matrix(~C(condition,base=1))
  (Intercept) C(condition, base = 1)2
1           1                       0
2           1                       0
3           1                       0
4           1                       1
5           1                       1
6           1                       1
attr(,"assign")
[1] 0 1
attr(,"contrasts")
attr(,"contrasts")$`C(condition, base = 1)`
  2
A 0
B 1

以B为基准:

model.matrix(~C(condition,base=2))
  (Intercept) C(condition, base = 2)1
1           1                       1
2           1                       1
3           1                       1
4           1                       0
5           1                       0
6           1                       0
attr(,"assign")
[1] 0 1
attr(,"contrasts")
attr(,"contrasts")$`C(condition, base = 2)`
  1
A 1
B 0

【讨论】:

  • 我认为只是重新练级是行不通的。它确实将设计矩阵中的术语更改为 conditionA,但如果您与数据框(见主帖)进行比较,"1" 仍然是 "B"。只是重新调整可能会比较错误的案例。
【解决方案2】:

这是你想要的结果吗?

df <- data.frame(condition)
design <- model.matrix( ~ condition-1)
design
  conditionA conditionB
1          1          0
2          1          0
3          1          0
4          0          1
5          0          1
6          0          1
attr(,"assign")
[1] 1 1
attr(,"contrasts")
attr(,"contrasts")$`condition`
[1] "contr.treatment"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-15
    • 2013-06-21
    • 2021-03-01
    • 2017-04-03
    • 2023-01-30
    • 1970-01-01
    相关资源
    最近更新 更多