I have three dataframes in R:
> df1
zone meangpp
1 1 5.4153407
2 2 4.2429236
3 3 4.5719178
4 4 3.1215946
5 5 4.9222054
6 6 3.0384872
7 7 1.9293729
8 8 8.9709741
9 9 7.8904906
10 10 6.6410986
11 12 5.5011823
> df2
zone meangpp
1 1 4.050161
2 2 7.729265
3 3 3.408220
4 4 4.884040
5 5 4.258422
6 6 2.906374
7 7 2.241984
8 8 4.703197
9 9 3.617657
10 10 2.712997
11 12 3.589406
> df3
zone meangpp
1 1 5.65432
2 2 8.76234
3 3 2.67676
4 4 5.63432
5 5 9.87654
6 6 3.45423
7 7 6.76745
8 8 3.45545
9 9 1.23434
10 10 2.712997
11 12 3.589406
所有数据框中的区域代表土地覆被类别。我根据用户在过去的问题中提供的此代码计算了标准差。我想计算标准误差线并在条形图中绘制。
我的标准差的代码是:
library(tidyverse)
df <- bind_rows("df1" = df1, "df2" = df2, "df3" = df3, .id = "groups")
my_sd <- df %>%
group_by(groups) %>%
summarise(sd=sd(meangpp))
# Standard deviation
df %>%
left_join(my_sd) %>%
mutate(zone = factor(zone)) %>%
ggplot(aes(x=zone, y=meangpp, fill = groups)) +
geom_col(position = position_dodge()) +
geom_errorbar(aes(x=zone, ymin=meangpp-sd, ymax=meangpp+sd), width=0.4, position = position_dodge(.9)) +
ggtitle("using standard deviation")
我应该对此代码进行哪些更改以仅显示标准错误栏?
答案 0 :(得分:1)
您可以像计算标准偏差(SD)一样预先计算标准误差(SE)。标准误差的计算公式为 SE = SD / sqrt(n)。您可以为此使用以下代码
library(tidyverse)
my_se <- df %>%
group_by(groups) %>%
summarise(n=n(),
sd=sd(meangpp),
se=sd/sqrt(n))
# Standard error
df %>%
left_join(my_se) %>%
mutate(zone = factor(zone)) %>%
ggplot(aes(x=zone, y=meangpp, fill = groups)) +
geom_col(position = position_dodge()) +
geom_errorbar(aes(x=zone, ymin=meangpp-se, ymax=meangpp+se), width=0.4, position = position_dodge(.9)) +
ggtitle("using standard error")