Расчет стандартного отклонения для столбчатой ​​диаграммы с накоплением - PullRequest
0 голосов
/ 27 апреля 2020

Я хочу рассчитать стандартное отклонение и стандартную ошибку, чтобы можно было отображать столбцы ошибок на гистограмме с накоплением.

 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))

1 Ответ

0 голосов
/ 27 апреля 2020

Это ваш полный набор данных? Тогда невозможно рассчитать стандартное отклонение или стандартную ошибку, поскольку у вас нет правильной репликации. См. Ниже

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

Создано в 2020-04-27 Представить пакет (v0.3.0)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...