2017-04-12 2 views
1

선형 회귀 모델에 적합하도록 실험적인 디자인을 사용하고 있습니다.model.matrix의 일부 요소에 대비 설정

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.sum되어야 design.df$sex 그 반면 contr.treatment이어야

여기서 설계 data.frame이다.

이가 일할 수있는 나는 아마도 생각 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 

그래서 제 질문은 어떻게 나는 model.matrixdesign.df에 따라 contrasts.list에 따라 지정합니까?

답변

1
외부에서 정의되지 않은 것 변수 model.factors를 사용하는

. 목표가 무엇인지 확실하지 않습니다. 그냥 공변량으로 모든 값을 원하는 경우에, 당신은 당신의 contrasts.list는 요인 변수의 값을 가져야한다

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

참고 할 수 있습니다. batch을 포함하지 마십시오.