【问题标题】:Setting contrasts for part of the factors in a model.matrix为 model.matrix 中的部分因子设置对比
【发布时间】:2017-04-12 13:09:16
【问题描述】:

我有一个实验设计,我想拟合线性回归模型。

这是设计data.frame

design.df <- data.frame(batch=rep(c(1:3,1:3),4),
                      species=rep(c(rep("mouse",3),rep("rat",3)),4),
                      sex=rep(c(rep("M",12),rep("F",12))),
                      stringsAsFactors = F)

design.df$speciesdesign.df$sex 都是factors

design.df$species <- factor(design.df$species,levels=c("mouse","rat"))
design.df$sex <- factor(design.df$sex,levels=c("F","M"))

design.df$species的对比度编码应该是contr.treatment,而design.df$sex的对比度编码应该是contr.sum

将其设置为model.matrix 我认为这可能可行:

contrasts.list <- list(batch=NA,species="contr.treatment",sex="contr.sum")

design.mat <- model.matrix(as.formula(paste0("~",paste(model.factors,collapse="+"))),contrasts=contrasts.list,data=design.df)

根据我得到的错误,显然它不起作用:

Error in `contrasts<-`(`*tmp*`, value = contrasts.arg[[nn]]) : 
  contrasts apply only to factors

所以我的问题是如何根据我指定的contrasts.listdesign.df 获得model.matrix

【问题讨论】:

    标签: r lm model.matrix


    【解决方案1】:

    您正在使用未在任何地方定义的变量model.factors。不确定目标是什么。如果您只想将所有这些值作为协变量,您可以这样做

    contrasts.list <- list(species="contr.treatment", sex="contr.sum")
    design.mat <- model.matrix(~., contrasts=contrasts.list, data=design.df)
    

    请注意,您的contrasts.list 应该只有因子变量的值。不要包含batch

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多