【问题标题】:changing the base/reference for a design matrix model.matrix更改设计矩阵 model.matrix 的基础/参考
【发布时间】:2020-12-27 22:50:36
【问题描述】:

我有一个如下所示的数据框:

    df <- data.frame(id= rep(seq(1:125),3),
  timpoint= c(rep("T1", 125), rep("T2", 125), rep("T3", 125)),
                 treatment=c(rep("A",25),rep("B",25),rep("C",25),rep("D",25),rep("E",25)))
interaction.col <- paste(df$timpoint, df$treatment, sep = "_")  

df <- cbind(df, interaction.col)

我已经生成了一个设计矩阵如下:

model.matrix(~treatment:timpoint, df, list(treatment = contr.sum, timpoint=contr.treatment))

对于治疗:时间点效果,我的最后一组设置为参考。例如,我想将其更改为“C”组,但由于某种原因,relevel 不起作用。

我也试过设置基础:

model.matrix(~treatment:timpoint, df, list(treatment = contr.sum, timpoint=contr.treatment), base="C")

如何将时间点的基础更改为“T1”并将交互效果(治疗:时间点)更改为例如组“C”?

【问题讨论】:

    标签: r encoding model.matrix


    【解决方案1】:

    如果您将处理变量编码为一个因子,您可以重新调整因子水平,然后重新运行模型矩阵:

    df <- data.frame(
        id = rep(1:125, 3),
        timpoint = paste0("T", rep(1:3, each=125)),
        treatment = gl(5, 25, labels = LETTERS[1:5]))
    interaction.col <- paste(df$timpoint, df$treatment, sep = "_")  
    df <- cbind(df, interaction.col)
    model.matrix(~treatment:timpoint, df)
    df$treatment <- relevel(df$treatment, "C")
    model.matrix(~treatment:timpoint, df)
    

    【讨论】:

    • 这对我不起作用,我使用上述数据框 test.model
    • 究竟是什么不起作用?您收到任何错误消息吗?您是否尝试过运行我发布的确切代码?它应该是一个独立的、可重复的示例。也许将, stringsAsFactors = FALSE 添加到df data.frame,以防您的R版本默认使用stringsAsFactors = TRUE(我在R 4.0上);不过,它不应该有所作为。
    • 我没有收到错误,但它应该是这样的,当您在我的示例中运行代码时,T1:E、T2:E 和 T3:E 的交互设置为参考。现在我看到当我尝试您的示例时,仅将 T1:C 设置为参考。这对于总和编码是不正确的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    相关资源
    最近更新 更多