【问题标题】:Calculating the standard deviation for a stacked bar chart计算堆积条形图的标准差
【发布时间】:2020-04-27 08:48:45
【问题描述】:

我想计算标准偏差和标准误差,以便在堆积条形图上显示误差线。

 Management    Habitat   Intensity     Var2   
   A           Urban        High        6   
   A          Farmland      High        9   
   A          Farmland      Medium     10 
   B          Forest        Medium     17 
   B          Peatland      Medium     23     
   C          Peatland      Low        22    
   C          Urban         Low        10     

我的堆积条形图代码是

 ggplot(df, aes(fill=Habitat, y= Var1, x=Intensity)) + 
  geom_bar(position="stack", stat="identity")+
  labs(y = "Area of habitat (hectares)")+
  theme(legend.title = element_text())

我已经尝试使用 ddply 函数通过强度计算 Var 2 的标准偏差和标准误差,以通过强度给出每个条形的总体误差,然后为 ymin 和 ymax 设置限制,但我得到一个错误

错误:美学长度必须为 1 或与数据相同 (96):ymax 和 ymin

EB<-ddply(Mean_PFB, c("Intensity"), summarise,
      N    = length(Var2),
      mean = mean(Var2),
      sd   = sd(Var2),
      se   = sd / sqrt(N))

【问题讨论】:

    标签: r standard-deviation standard-error


    【解决方案1】:

    这是您的完整数据集吗?那么由于没有正确的复制,就不可能计算标准偏差或标准误差。见下文

    library(tidyverse)
    #> Warning: package 'tidyr' was built under R version 3.6.2
    #> Warning: package 'dplyr' was built under R version 3.6.2
    
    df <- read.table(text = "Management    Habitat   Intensity     Var2   
               A          Urban         High        6   
               A          Farmland      High        9   
               A          Farmland      Medium     10 
               B          Forest        Medium     17 
               B          Peatland      Medium     23     
               C          Peatland      Low        22    
               C          Urban         Low        10", header=T)
    
    #standard deviation calculation
    df %>% 
      group_by(Habitat) %>% 
      summarise(new = list(mean_sdl(Var2))) %>% 
      unnest(new)
    #> # A tibble: 4 x 4
    #>   Habitat      y   ymin  ymax
    #>   <fct>    <dbl>  <dbl> <dbl>
    #> 1 Farmland   9.5   8.09  10.9
    #> 2 Forest    17   NaN    NaN  
    #> 3 Peatland  22.5  21.1   23.9
    #> 4 Urban      8     2.34  13.7
    
    df %>% 
      group_by(Management) %>% 
      summarise(new = list(mean_sdl(Var2))) %>% 
      unnest(new)
    #> # A tibble: 3 x 4
    #>   Management     y   ymin  ymax
    #>   <fct>      <dbl>  <dbl> <dbl>
    #> 1 A           8.33  4.17   12.5
    #> 2 B          20    11.5    28.5
    #> 3 C          16    -0.971  33.0
    
    df %>% 
      group_by(Intensity) %>% 
      summarise(new = list(mean_sdl(Var2))) %>% 
      unnest(new)
    #> # A tibble: 3 x 4
    #>   Intensity     y   ymin  ymax
    #>   <fct>     <dbl>  <dbl> <dbl>
    #> 1 High        7.5  3.26   11.7
    #> 2 Low        16   -0.971  33.0
    #> 3 Medium     16.7  3.65   29.7
    
    #standard deviation calculation for grouped data with Intensity, Habitat 
    #give you NAs as it does not have proper replications
    df %>% 
      group_by(Intensity, Habitat) %>% 
      summarise(new = list(mean_sdl(Var2))) %>% 
      unnest(new)
    #> # A tibble: 7 x 5
    #> # Groups:   Intensity [3]
    #>   Intensity Habitat      y  ymin  ymax
    #>   <fct>     <fct>    <dbl> <dbl> <dbl>
    #> 1 High      Farmland     9   NaN   NaN
    #> 2 High      Urban        6   NaN   NaN
    #> 3 Low       Peatland    22   NaN   NaN
    #> 4 Low       Urban       10   NaN   NaN
    #> 5 Medium    Farmland    10   NaN   NaN
    #> 6 Medium    Forest      17   NaN   NaN
    #> 7 Medium    Peatland    23   NaN   NaN
    

    同样适用于标准错误,只需使用 mean_se 代替 mean_sdl

    reprex package (v0.3.0) 于 2020 年 4 月 27 日创建

    【讨论】:

      猜你喜欢
      • 2017-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-29
      • 2020-07-04
      • 2013-12-22
      • 1970-01-01
      相关资源
      最近更新 更多