情节lmer导致刻面的ggplot

时间:2015-04-26 05:25:07

标签: r ggplot2 facet lmer

我正在分析一些重复测量药物试验数据,而且我不确定在使用多面ggplots时如何绘制lmer结果。我已经从主数据集中绘制了各个斜率的初始图,但我按性别分别进行了lmer分析。

使用公开数据,其中只有2个治疗组与我所拥有的4个治疗组相比,这是下面的可复制示例。它使用reshape2lme4ggplot2个包。

CatAnx <- read.fwf(file=("http://www.stat.ufl.edu/~winner/data/cats_anxiety1.dat"),
               widths=c(-6,2,-5,3,-5,3,-7,1,-7,1,-7,1,-7,1,-7,1,-6,2,-6,2,-6,2,-6,2,-6,2))
colnames(CatAnx) <- c('ID','Weight','Age_Months','Gender','Environment','Origin','Treatment','Result','EmoTime1','EmoTime2',
                  'EmoTime3','EmoTime4','EmoTime5')
library("reshape2")
CatAnxRM <- melt(CatAnx, id.vars=c("ID", "Gender", "Treatment"), measure.vars=c("EmoTime1", "EmoTime2", "EmoTime3",
                                                                            "EmoTime4", "EmoTime5"))
CatAnxRM$Sex <- with(CatAnxRM, ifelse(Gender==1, "Neut Female", ifelse(Gender==2, "Neut Male", "Whole Female")))
CatAnxRM$Time <- with(CatAnxRM, ifelse(variable=="EmoTime1", 1, ifelse(variable=="EmoTime2", 2, ifelse(variable=="EmoTime3", 3,
                                  ifelse(variable=="EmoTime4", 4,5)))))
CatAnxRM.Male <- subset(CatAnxRM, Gender=="2")
library("lme4")
Male.lmer <- lmer(value ~ Treatment * Time + (Time + 1|ID), data=CatAnxRM.Male)
library("ggplot2")
AnxScores<-ggplot(CatAnxRM, aes(Time, value, colour=Sex))+
geom_line(aes(group = ID))+
labs(x="Time Anxiety Measured", y="Anxiety Score", title="Effect of Zylkene on Anxiety")+ 
facet_grid(. ~ Treatment)
AnxScores

有关数据集is here的信息。

如何在两个方面绘制来自lmer的正确摘要行,这些摘要在Treatment的基础上有所不同?

在我的现实生活中,我也将分析女性,因此每个方面将有两组线条。

2 个答案:

答案 0 :(得分:1)

使用截距(例如lines.df)和斜率(int)变量创建数据框(例如slo),其中df的每一行对应一个面,然后绘制顶部:

+ geom_abline(aes(intercept = int, slope = slo), data = lines.df)

答案 1 :(得分:0)

通过“正确的摘要行”并不完全清楚您的意思,但我已将this answer中的代码修改为您的数据。这是你需要的输出吗?

newdata <- with(CatAnxRM.Male, expand.grid(Treatment=unique(Treatment),
                                           Time=unique(Time), Sex = unique(Sex),
                                           ID=unique(ID)))

newdata$pred <- predict(Male.lmer, newdata)

p <- ggplot(newdata, aes(x=Time, y=pred, colour=Sex, group=ID))
p + geom_line() + ggtitle("Varying Slopes") + 
    facet_grid(. ~ Treatment)

获得以下输出

Random slopes plot