Повторная выборка данных временных рядов в R - PullRequest
0 голосов
/ 21 декабря 2018

Я имею дело с данными временных рядов поперечного сечения (многие РАЗНЫЕ люди со временем).На индивидуальном уровне у каждого человека есть спрос на определенное количество товара.Эти данные несбалансированы относительно того, сколько человек в каждом периоде.Для каждого периода времени я агрегировал отдельные данные в один временной ряд.Пример структуры данных ниже

Временные ряды сечения

Time | Person | Quantity
----------------------
11/18| Bob    | 2
11/18| Sally  | 1    
11/18| Jake   | 5
12/18| Jim    | 2   
12/18| Roger  | 8

Временные ряды

Time | Total Q
-------------
11/18| 8      
12/18| 10    

То, что я хочу сделать для каждого периода, это повторная выборка (с заменой)индивидуальное количество, агрегировать по отдельным лицам, повторять X раз, а затем получить среднее и стандартную ошибку из начальной загрузки.

Конечный результат должен выглядеть следующим образом:

Time | Total Q | Boot Strap Total Mean  
-------------------------------------
11/18| 8       | 8.5 
12/18| 10      | 10.05 

Вот пример кода для создания примера данных примера:

library(tidyverse)

set.seed(1234)

Cross_Time = data.frame(x) %>%
     mutate(Period = sample(1:10, 50, replace=T),
            Q=rnorm(50,10,1)) %>%
     arrange(Period)

Timeseries = Cross_Time %>%
group_by(Period) %>%
summarize(Total=sum(Q))

Я знаю, что это возможно в R, но яЯ в растерянности относительно того, как его кодировать или какие правильные вопросы мне нужно задать.Вся помощь приветствуется!

1 Ответ

0 голосов
/ 21 декабря 2018

Мы можем сделать следующее:

X <- 1000
Cross_Time %>% group_by(Period) %>%
  do({QS <- colSums(replicate(sample(.$Q, replace = TRUE), n = X))
  data.frame(Period = .$Period[1], `Total Q` = sum(.$Q), Mean = mean(QS), `Standard Error` = sd(QS))})
# A tibble: 10 x 4
# Groups:   Period [10]
#    Period Total.Q  Mean Standard.Error
#     <int>   <dbl> <dbl>          <dbl>
#  1      1    28.8  28.8          0.284
#  2      2    35.9  35.8          0.874
#  3      3   109.  109.           3.90 
#  4      4    48.9  48.9          2.16 
#  5      5    20.2  20.2          0.658
#  6      6    59.0  58.8          3.57 
#  7      7    88.7  88.6          2.64 
#  8      8    22.7  22.7          1.04 
#  9      9    47.7  47.7          2.46 
# 10     10    27.9  27.9          0.575

Я думаю, что код довольно понятен.В каждой группе мы пересчитываем ее значения с заменой X раз на replicate и вычисляем две желаемые статистики.Также просто добавить любые другие!

...