【问题标题】:Plotting the overall trend using ggplot for longitudinal data使用 ggplot 绘制纵向数据的总体趋势
【发布时间】:2020-05-03 17:26:24
【问题描述】:

我想绘制纵向数据的总体趋势。我正在使用lme4 包中的sleepstudy 数据来演示我的问题。

 library("lme4")
 library("ggplot2")
    p1 <- ggplot(data = sleepstudy, aes(x = Days, y = Reaction, group = Subject))
    p1 + geom_line() + geom_point(aes(col = Subject) ,size=2)

当我为每个人绘制纵向轨迹时,我得到了这个图

这里我有兴趣找到基于所有主题的整体趋势。对于基于上图的示例,我们可以看到总体上呈上升趋势。一般来说,这种趋势可以是线性的、二次的等。这是绘制这种总体趋势的任何方式吗?

我试过这个。但是我得到了每个主题的平滑曲线,而不是得到整体趋势

p1  + geom_point() +  geom_smooth(method = "lm") 

谁能帮我解决这个问题?

谢谢

【问题讨论】:

    标签: r ggplot2 plot


    【解决方案1】:

    不知道我是否理解正确:

    library("lme4")
    library("ggplot2")
    ggplot(data = sleepstudy, aes(x = Days, y = Reaction))+
      geom_point(aes(colour = Subject), alpha = .3)+
      geom_smooth()+
      theme(legend.position = "none")
    

    如您所见,您将拥有loess 函数:

    > geom_smooth()` using method = 'loess' and formula 'y ~ x'
    

    如果您需要lm,只需将参数method 指定为geom_smooth

    library("lme4")
    library("ggplot2")
    ggplot(data = sleepstudy, aes(x = Days, y = Reaction))+
      geom_point(aes(colour = Subject), alpha = .3)+
      geom_smooth(method = "lm")+
      labs(title = "Linear Model (LM)")+
      theme(legend.position = "none")
    

    结果:

    【讨论】:

    • 您好,谢谢您的回答。尽管在这种情况下数据呈线性趋势,但有时它可能是二次的。在那种情况下,我们可以使用什么类型的平滑方法?
    • 这取决于你想展示什么。但是,如果您需要二次,请查看here
    • 谢谢。我想到的还有一件事。在我向您展示的图中,每个人都有平滑的曲线。那么有没有办法获得这些平滑曲线的平均值并将其绘制为整体趋势?我可能想试试这个,因为这些是纵向数据
    • 您可能需要的是回归模型。看glmgam
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-28
    • 2021-02-14
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多