2016-11-15 17 views
0

sjPlot 패키지를 사용하여 계수 플롯을 사용하는 혼합 효과 선형 모델에서 회귀 계수를 제시하려고합니다. 이것은 이전 질문 인 on plotting regression coefficients에 대한 후속 조치입니다.sjPlot을 사용하여 예측 인자를 회귀 계수로 정렬

내 문제는 예측자를 정렬 할 수 없다는 것입니다. 이것이 사소한 문제는 아니지만 공식적인 환경에서 이런 방식으로 결과를 제시 할 수 없으므로이 패키지의 사용을 실질적으로 방해합니다.

는 계수 플롯을 재현 :

data("sleepstudy") 
sleepstudy$var2 <- rnorm(n=nrow(sleepstudy), mean=0, sd=1) 
sleepstudy$var3 <- rnorm(n=nrow(sleepstudy), mean=10, sd=5) 
sleepstudy$var4 <- rnorm(n=nrow(sleepstudy), mean=-5, sd=2) 
sleepstudy$var5 <- rnorm(n=nrow(sleepstudy), mean=-10, sd=10) 

M <- lmer(Reaction ~ Days + var2 + var3 + var4 + var5 + (1|Subject), data=sleepstudy, REML = FALSE) 

sjp.lmer(M, 
     type = "fe.std", 
     remove.estimates = c("var5"), 
     p.kr=FALSE, 
     y.offset = 0.4, 
     fade.ns = TRUE, 
     axis.labels = c("Number of days", "Variable 2", "Variable 3", "Variable 4") 
) 

내 문제는 내가 순서 자신을 나타내는 이러한 변수를 정렬 할 필요가있다. 예 : 이 순서 (위에서 아래로) : 일, var4, var2, var3이 필요합니다. 이것이 가능한가?

라벨에 대한 최종 의문점 :이 axis.labels은 라벨을 플롯에 할당하는 유일한 방법입니까?

+0

모델을 피팅 할 때 수식의 용어 순서를 변경해 보았습니까? – Daniel

+0

예, 모델 용어에 대한 사용자 정의 레이블에는 'axis.labels'를 사용해야합니다. – Daniel

+0

예, 작동 하겠지만 직접적인 옵션이 더 좋을 것입니다. 필자는 상호 작용 및 요소가 포함 된 복잡한 계층 적 모델을 가지고 있으므로 공식을 사용하여 'remove.estimates'라고 말하면서 매우 복잡한 시퀀스가됩니다. 이것이 유일한 방법입니까? – 000andy8484

답변

0

의견이 너무 길어서 대답으로 게시합니다. group.estimate으로 견적을 그룹화 할 수 있지만 "그룹"당 하나의 견적만을 포함하고 sort.est = TRUE으로 정렬하십시오. - 당신은 그룹 당 하나의 추정치가 있다면, 그것은 당신 같은 견적을 정렬합니다

data(efc) 

# create binary response 
efc$hi_qol <- dicho(efc$quol_5) 

# prepare group variable 
efc$grp = as.factor(efc$e15relat) 
levels(x = efc$grp) <- get_labels(efc$e15relat) 

# data frame for fitted model 
mydf <- data.frame(hi_qol = to_factor(efc$hi_qol), 
        sex = to_factor(efc$c161sex), 
        education = to_factor(efc$c172code), 
        c12hour = efc$c12hour, 
        neg_c_7 = efc$neg_c_7, 
        grp = efc$grp) 

fit <- glmer(hi_qol ~ sex + c12hour + neg_c_7 + education + (1|grp), 
      data = mydf, family = binomial("logit")) 

# define the order of estimates within `group.estimates`, and 
# set `sort.est = T`. 
sjp.glmer(fit, type = "fe", group.estimates = c(5, 4, 3, 2, 1), sort.est = T) 

이 자신의 그룹에 의해 추정을 정렬합니다 : 여기

은 도움 ?sjp.glmer에서 가져온 수정, 예입니다 소원. 각 그룹은 고유 한 색을 갖기 때문에 다음과 같이 자신의 색 눈금을 추가해야합니다.

library(ggplot2) 
p <- sjp.glmer(fit, type = "fe", group.estimates = c(5, 4, 3, 2, 1), sort.est = T) 
p$plot + scale_color_manual(values = rep("#333333", 5)) 
+0

'? sjp.lm'에'group.estimates'에 대한 작은 예제가 있습니다. – Daniel