2013-12-13 7 views
1

나는 혼합 모델 회귀를 lme4로 맞추는 데이터 세트를 가지고 있습니다.적절한 혼합 모델 회귀 슬로프

dat <- structure(list(dv280 = c(41L, 68L, 0L, 6L, 20L, 30L, 8L, 1L, 
15L, NA, 59L, 5L, 21L, 41L, 11L, 14L, -2L, 20L, 25L, 33L, 32L, 
30L, 68L, 16L, 11L, -1L, 8L, 0L), v0 = c(55L, 90L, 30L, 23L, 
74L, 48L, 25L, 25L, 46L, NA, 60L, 69L, 55L, 41L, 34L, 41L, 53L, 
76L, 72L, 64L, 34L, 37L, 75L, 21L, 26L, 14L, 24L, 19L), treatment = structure(c(2L, 
1L, 1L, 2L, 2L, 1L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 
2L, 1L, 2L, 2L, 1L, 2L, 1L, 1L, 2L, 2L, 1L), .Label = c("hc", 
"nhc"), class = "factor"), cse = structure(c(2, 2, 6, 6, -4, 
-4, 5, 5, NA, NA, -4, -4, -3, -3, -2, -2, 3, 3, 2, 2, -4, -4, 
-7, -7, 4, 4, 2, 2), .Dim = c(28L, 1L)), pp = structure(c(1L, 
1L, 2L, 2L, 3L, 3L, 4L, 4L, 5L, 5L, 6L, 6L, 7L, 7L, 8L, 8L, 9L, 
9L, 10L, 10L, 11L, 11L, 12L, 12L, 13L, 13L, 14L, 14L), .Label = c("j.1", 
"j.3", "j.6", "j.11", "j.13", "j.16", "j.17", "j.18", "j.19", 
"j.22", "j.24", "j.30", "j.32", "j.36"), class = "factor")), .Names = c("dv280", 
"v0", "treatment", "cse", "pp"), row.names = c(NA, 28L), class = "data.frame") 
head(dat) 
require(lme4) 
m <- lmer(dv280 ~ 1 + v0:treatment + cse + (0 + v0 | pp), data=dat, REML=TRUE) 
summary(m) 

다음 I 그래서 원래의 값에 대한 예측을 생성 http://glmm.wikidot.com/faq 예에서 코드를 이용하여 얻어진 적합 플롯 싶다.

newdat <- data.frame(
    v0=dat$v0, 
    treatment=dat$treatment, 
    cse=dat$cse, 
    dv280=0) 
newdat <- newdat[-c(9,10),] 
mm <- model.matrix(terms(m), newdat) 
newdat$dv280 <- mm %*% fixef(m) 
pvar1 <- diag(mm %*% tcrossprod(vcov(m), mm)) 
tvar1 <- pvar1 + VarCorr(m)$pp[1] 
newdat <- data.frame(newdat, plo=newdat$dv280 - 2 * sqrt(pvar1), 
        phi=newdat$dv280 + 2 * sqrt(pvar1), 
        tlo=newdat$dv280 - 2 * sqrt(tvar1), 
        thi=newdat$dv280 + 2 * sqrt(tvar1)) 

이 ggplot와 플롯 쉽다 :

p <- ggplot(data=newdat, mapping=aes(x=v0, y=dv280, colour=treatment)) + 
    geom_point() + 
    geom_smooth(method='lm', se=TRUE) + 
    scale_colour_discrete(guide=guide_legend(title.position='left', title.hjust=1)) 
p + .mytheme + coord_cartesian(xlim=c(-20,100)) +  
    geom_hline(yintercept=0, colour='gray35', linetype='dashed') + 
    geom_vline(xintercept=0, colour='gray35', linetype='dashed') 

그러나 화상에서 볼 수 있듯이, ggplot 의해 플롯 회귀 라인의 절편은 회귀 추정 절편 비교 떠난다

; 적어도 이것은 공통적 인 추정 절편이 0.54 인 반면 명확하게 음의 절편으로가는 nhc 선의 경우입니다.

Plot

내 실수 (나는 가정) 쉽게 : 회귀가 geom_smooth 치료에 따라 개별적으로 데이터를 가져와 주어진 말씀이 아닌 다른 맞춤에 또한 장착의 맥락없이 액면 geom_smooth 결과를 사용하여 모델. 그러나 나는 선을 올바르게 그리는 방법을 놓치고있다.

+0

예제 코드에 대한 속성을 추가하는 것을 잊었습니다. – Roland

+0

질문이 업데이트되었습니다. http://glmm.wikidot.com/faq였습니다. 그 임무를 지적 해 주셔서 고마워요. –

+0

[혼합 모델의 결과를 그리는 방법] (http://stackoverflow.com/questions/9447329/how-to-plot-the-results-of-a-mixed-model) – ROLO

답변

1

cse의 효과를 고려해야합니다. 내가 newdatcse=0을 설정하면, 선은 절편을 통과 : 해당 주 효과없이 모델의 상호 작용을 포함하는 일반적으로 권장되지 않습니다

p <- ggplot(data=newdat, mapping=aes(x=v0, y=dv280, colour=treatment)) + 
    geom_point() + 
    geom_smooth(method='lm', se=TRUE, fullrange=TRUE) + 
    scale_colour_discrete(guide=guide_legend(title.position='left', title.hjust=1)) 
p + theme_bw() + coord_cartesian(xlim=c(-1,1), ylim=c(0.4,0.65)) +  
    geom_hline(yintercept=0, colour='gray35', linetype='dashed') + 
    geom_vline(xintercept=0, colour='gray35', linetype='dashed') 

enter image description here

하는 것으로.

편집 :

p <- ggplot(data=newdat, mapping=aes(x=v0, y=dv280, ymin=tlo, ymax=thi, colour=treatment, fill=treatment)) + 
    geom_ribbon(alpha=0.2, aes(colour=NULL)) + 
    geom_point() + 
    geom_line() + 
    scale_colour_discrete(guide=guide_legend(title.position='left', title.hjust=1)) 
p + theme_bw() + 
    geom_hline(yintercept=0, colour='gray35', linetype='dashed') + 
    geom_vline(xintercept=0, colour='gray35', linetype='dashed') 
그러나

enter image description here

,이 플롯은 매우 보이지 않는다 :

귀하의 의견에 따르면, 당신은 (원래 newdat와) 같은 것을 할 수 있습니다 유용한 점 (특히 점 사이의 선)은 dv280-v0 평면의 투영을 묘사하므로 선형 관계를이 방식으로 볼 수 없습니다.

+0

해결해 주셔서 감사합니다! 그러나 나는 이것이 해결책이라고 이해하지 못합니다. 이제 저는 cse (우리 연구의 confounder)를 0으로 설정했습니다. 실제로 제대로 된 라인을 얻기위한 실용적인 해결책으로 그것을 의도하셨습니까 (따라서 두 개의'newdat'에 맞 춥니 다)? –

+0

이것은 "해결책"으로 의도 된 것이 아니라 설명입니다. 당신은 당신의 계획에있는'lm' 피트 라인이 절편을 통과 할 것으로 기대할 수 없습니다. – Roland

+0

밀도가 높지만 특정 절편을 초래하는 회귀를 기반으로 한 선이 가로 채기를 통과 할 것으로 기대할 수없는 이유가 없습니다. 공변량으로 cse를 포함하는 회귀; 그래서 그 효과는 이미 회귀 방정식의 일부입니다. –