2017-04-12 16 views
1

我有一个我想要拟合线性回归模型的实验设计。为model.matrix中的部分因素设置对比度

这里的设计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$sexcontr.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.list,我可以从design.df得到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

相关问题