【问题标题】:Calculate a mean per day per sample, then add a line of best fit计算每个样本每天的平均值,然后添加一条最佳拟合线
【发布时间】:2018-08-26 07:22:19
【问题描述】:

我的问题:

如何计算每个样本 A、B、C 每天(3 到 5 分开)的平均值(平均值),然后从一天到下一天通过平均值添加一条最佳拟合线?

我想将此添加到点图 (ggplot2 geom_point) 的数据示例如下...在数据下方使用的 R 脚本。

以下数据:

Day     Sample  Measurement
3   A   0.648
3   A   0.661
3   A   0.65
3   A   0.594
3   A   0.548
3   A   0.653
3   A   0.648
3   A   0.672
3   A   0.661
3   A   0.66
3   A   0.647
3   A   0.629
3   A   0.691
3   A   0.534
3   A   0.567
3   A   0.634
3   A   0.579
3   B   0.689
3   B   0.598
3   B   0.658
3   B   0.662
3   B   0.599
3   B   0.678
3   B   0.65
3   B   0.617
3   B   0.673
3   B   0.67
3   B   0.666
3   B   0.595
3   B   0.604
3   B   0.59
3   B   0.569
3   B   0.614
3   C   0.624
3   C   0.623
3   C   0.606
3   C   0.66
3   C   0.623
3   C   0.669
3   C   0.642
3   C   0.658
3   C   0.645
3   C   0.653
3   C   0.501
3   C   0.552
3   C   0.663
3   C   0.589
3   C   0.602
5   A   0.811
5   A   0.822
5   A   0.811
5   A   0.824
5   A   0.773
5   A   0.823
5   A   0.815
5   A   0.819
5   A   0.754
5   A   0.81
5   A   0.796
5   A   0.818
5   A   0.797
5   A   0.811
5   A   0.812
5   A   0.817
5   A   0.821
5   B   0.827
5   B   0.798
5   B   0.819
5   B   0.81
5   B   0.826
5   B   0.821
5   B   0.805
5   B   0.821
5   B   0.825
5   B   0.821
5   B   0.816
5   B   0.814
5   B   0.823
5   B   0.81
5   B   0.823
5   B   0.762
5   B   0.825
5   B   0.821
5   B   0.825
5   B   0.812

ggplot 的 R 代码:

p2 <- ggplot(data=data1, aes(x=Day, y=Fv.Fm..XE..Mean)) + 
  geom_point(aes(colour= Sample), 
  position = position_jitterdodge(dodge.width=0.75 , jitter.width=0.250)) +
  # geom_line(aes(colour=Sample), 
  # position = position_jitterdodge(dodge.width=0.75)) +
  scale_x_discrete(labels=c(3, 5, 7, 10, 14)) + 
  scale_y_continuous(limits=c(0.3 , 1.0))
p2
ggsave("p2.jpg")

【问题讨论】:

  • 平均线不会提供信息。尝试使用geom_smooth

标签: r


【解决方案1】:

首先计算每个SampleDay 的平均值

library(tidyverse)
library(ggpmisc)

data1 <- read.table(text = txt, header = TRUE)

mean_data1 <- data1 %>% 
  group_by(Day, Sample) %>% 
  summarise(Mean = mean(Measurement, na.rm = TRUE))
mean_data1

#> # A tibble: 5 x 3
#> # Groups:   Day [?]
#>     Day Sample  Mean
#>   <int> <fct>  <dbl>
#> 1     3 A      0.628
#> 2     3 B      0.633
#> 3     3 C      0.621
#> 4     5 A      0.808
#> 5     5 B      0.815

然后按样本绘制所有测量值facet_grid。使用geom_smooth 添加线性线。 ggpmisc 包中的 stat_poly_eq 函数用于显示方程和 R2。最后,我们绘制Mean 值。

p2 <- ggplot(data = data1, aes(x = Day, y = Measurement)) + 
  geom_point(aes(colour= Sample), 
             alpha = 0.7,
             position = position_jitterdodge(dodge.width=0.75, 
                                             jitter.width=0.250)) +
  scale_x_continuous(breaks=c(3, 5)) +
  scale_y_continuous(limits=c(0.3 , 1.0))

formula <- y ~ x

p2 + 
  facet_grid(~ Sample) + 
  geom_smooth(method = "lm", formula = formula, se = FALSE) +
  stat_poly_eq(aes(label = paste(..eq.label.., ..rr.label.., sep = "~~~~")), 
               label.x.npc = "left", label.y.npc = "top",
               formula = formula, parse = TRUE, size = 4) +
  geom_point(data = mean_data1, aes(Day, Mean, color = "Mean"), 
             size = 3) +
  theme_bw() +
  theme(aspect.ratio = 1)

使用的数据:

txt <- "Day     Sample  Measurement
3   A   0.648
3   A   0.661
3   A   0.65
3   A   0.594
3   A   0.548
3   A   0.653
3   A   0.648
3   A   0.672
3   A   0.661
3   A   0.66
3   A   0.647
3   A   0.629
3   A   0.691
3   A   0.534
3   A   0.567
3   A   0.634
3   A   0.579
3   B   0.689
3   B   0.598
3   B   0.658
3   B   0.662
3   B   0.599
3   B   0.678
3   B   0.65
3   B   0.617
3   B   0.673
3   B   0.67
3   B   0.666
3   B   0.595
3   B   0.604
3   B   0.59
3   B   0.569
3   B   0.614
3   C   0.624
3   C   0.623
3   C   0.606
3   C   0.66
3   C   0.623
3   C   0.669
3   C   0.642
3   C   0.658
3   C   0.645
3   C   0.653
3   C   0.501
3   C   0.552
3   C   0.663
3   C   0.589
3   C   0.602
5   A   0.811
5   A   0.822
5   A   0.811
5   A   0.824
5   A   0.773
5   A   0.823
5   A   0.815
5   A   0.819
5   A   0.754
5   A   0.81
5   A   0.796
5   A   0.818
5   A   0.797
5   A   0.811
5   A   0.812
5   A   0.817
5   A   0.821
5   B   0.827
5   B   0.798
5   B   0.819
5   B   0.81
5   B   0.826
5   B   0.821
5   B   0.805
5   B   0.821
5   B   0.825
5   B   0.821
5   B   0.816
5   B   0.814
5   B   0.823
5   B   0.81
5   B   0.823
5   B   0.762
5   B   0.825
5   B   0.821
5   B   0.825
5   B   0.812"

reprex package (v0.2.0) 于 2018 年 3 月 17 日创建。

【讨论】:

  • 谢谢。我找到了一个有效的。我还得到了添加高于和低于平均值的标准误差线的帮助。 geom_point 和 geom_errorbar 对于库(ggplot2)库(dplyr)很有用。 geom_errorbar(data = data1总结,jitter dodge 非常有用。谢谢。将所有数据集放在一张图上也很有用。aes(y = mean_mean, ymin = mean_mean-mean_se, ymax = mean_mean+mean_se),
猜你喜欢
  • 2014-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多