我正在处理横截面时间序列数据(随着时间的推移,许多不同的人)。在个人层面上,每个人都有一定数量的商品需求。关于每个时期有多少人,这个数据是不平衡的。对于每个时间段,我将各个数据聚合到一个时间序列中。下面的数据结构示例
横截面时间序列
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次,然后从bootstrap中获得平均和标准误差。
最终结果应该如下所示
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中是可能的,但我不知道如何编码,或者我需要问的正确问题是什么。感谢所有的帮助!
发布于 2018-12-22 04:49:36
我们可以做以下几件事:
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我认为代码是不言自明的。在每一组中,我们用replicate替换X时间来重新采样它的值,并计算两个所需的统计量。添加任何其他内容也很简单!
https://stackoverflow.com/questions/53890491
复制相似问题