简体   繁体   English

更改设计矩阵 model.matrix 的基础/参考

[英]changing the base/reference for a design matrix model.matrix

I have a dataframe which looks like this:我有一个 dataframe 看起来像这样:

    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)

and I have generated a desgin matrix as follows:我已经生成了一个设计矩阵,如下所示:

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

For the treatment:timepoint effect, my last group is set as reference.对于治疗:时间点效应,我的最后一组设置为参考。 I'd like to change this for instance to group "C" and for some reason relevel doesn't work.例如,我想将其更改为“C”组,并且由于某种原因重新调整不起作用。

I also tried setting a base:我也尝试设置一个基础:

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

How can i change the basis for timepoint to "T1" and for the interaction effect (treatment:timepoint) to for instance group "C"?如何将时间点的基础更改为“T1”并将交互效果(治疗:时间点)更改为例如组“C”?

If you code your treatment variable as a factor you can relevel the factor and then re-run the model matrix:如果将处理变量编码为因子,则可以重新调整因子水平,然后重新运行 model 矩阵:

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)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM