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$species
和design.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.list
,我可以从design.df
得到model.matrix
吗?