Построение среднего и или медианы набора наблюдений - PullRequest
0 голосов
/ 16 ноября 2018

Данные:

df = structure(list(obs_date = structure(c(17728, 17759, 17750, 17751, 
                                    17759, 17777, 17778, 17779, 17780, 17751, 17759, 17773, 17779, 
                                    17759, 17773, 17777, 17784, 17722, 17759, 17750, 17759, 17724, 
                                    17759, 17760, 17780, 17781, 17740, 17759, 17779, 17780, 17777, 
                                    17759, 17765, 17759, 17760, 17766, 17774, 17750, 17759, 17779, 
                                    17740, 17759, 17779, 17716, 17732, 17735, 17736, 17760, 17740, 
                                    17759, 17765), class = "Date", tzone = "Australia/Sydney"), 
             obs_value = c(0.104669, 0.109833, 0.196295, 0.2, 0.21, 0.21422, 0.21, 0.202339, 0.2, 
                           0.24, 0.24, 0.25, 0.24, 0.209645, 0.204462, 0.204462, 0.2042, 
                           NA, NA, 0.204, 0.224486, 0.142, 0.142, 0.144, 0.144, 0.15, NA, 
                           0.22, 0.22, 0.22, 0.23, 0.208, 0.208, 0.213781, 0.213781, 0.23111, 
                           0.23111, 0.2, 0.190581, 0.188411, 0.318, 0.208, 0.204, 0.31, 
                           0.31, 0.21, 0.21, 0.21, 0.25, 0.21, 0.21), 
             obs_id = c("2HN", "2HN", "4GJ", "4GJ", "4GJ", "4GJ", "4GJ", "4GJ", "4GJ", "KFM", 
                        "KFM", "KFM", "KFM", "N9S", "N9S", "N9S", "N9S", "NF7", "NF7", 
                        "7Q6", "7Q6", "M6Q", "M6Q", "M6Q", "M6Q", "M6Q", "MW6", "YP0", 
                        "YP0", "YP0", "ZG9", "D14", "D14", "MDY", "MDY", "MDY", "MDY", 
                        "G3S", "G3S", "G3S", "J6Z", "J6Z", "J6Z", "6RU", "6RU", "6RU", 
                        "6RU", "6RU", "6ZE", "6ZE", "6ZE")), class = "data.frame", row.names = c(NA, -51L))

В кадре данных df:

obs_id - это лица, оценивающие определенное значение переменной. Значение obs_value - это значение, наблюдаемое этим человеком. Наблюдения продолжаются до тех пор, пока не будет записано новое наблюдение в соответствии с датой наблюдения.

График наблюдений показан ниже:

library(plotly)
plot_ly(data = df, x = ~obs_date, y = ~obs_value, 
            type = 'scatter', mode = 'lines', 
            line = list(shape = "hvh"),
            color = ~obs_id)

Вопрос: Есть ли способ наложения / отображения медианы / среднего наблюдения (за весь период наблюдения) на том же графике?

1 Ответ

0 голосов
/ 16 ноября 2018

Вы можете попробовать Tidyverse

library(tidyverse)
df %>%
  group_by(obs_id) %>% 
  mutate(start = min(obs_date),
         end= max(obs_date), 
         Mean = mean(obs_value, na.rm = T)) %>% 
  ggplot(aes(obs_date, obs_value,color= obs_id)) + 
    geom_point() + 
    geom_segment(data= . %>% distinct(obs_id, start, end, Mean), 
                 aes(x=start, xend = end, y = Mean, yend =Mean))

enter image description here

После этого вы можете попытаться преобразовать сюжет в сюжет, используя library(plotly);ggplotly(the_plot)

Согласно вашему комментарию вы можете попробовать

df %>%
  group_by(obs_id) %>% 
  mutate(start = min(obs_date),
         end= max(obs_date), 
         Mean = mean(obs_value, na.rm = T)) %>% 
  ggplot(aes(obs_date, obs_value)) + 
  geom_point(aes(color= obs_id)) + 
  stat_summary(fun.y = "mean", geom="bar", alpha=0.2)

enter image description here

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