我有一个计算累积平均值和标准差的脚本:
library(tidyverse)
tibble(aa = c(2, 3, 4, 5, 6, 7, 8)) %>%
mutate(
running_mean = sapply(seq(n()), function(i) mean(aa[seq(i)])),
running_sd = sapply(seq(n()), function(i) sd(aa[seq(i)])),
)
我现在想将我的观察结果“aa”随机化 100 次,并仅计算 100 次运行的平均值。
尝试使用下面的代码replicate
replicate(
5,
tibble(aa = sample(c(2, 3, 4, 5, 6, 7, 8))) %>%
mutate(
running_mean = cumsum(aa) / seq_along(aa),
running_sd = sqrt(1 / (1 - seq_along(aa)^(-1)) * (cumsum(aa^2) / seq_along(aa) - running_mean^2))
),
simplify = FALSE
)
例如,这给出了
[[1]]
# A tibble: 7 × 3
aa running_mean running_sd
<dbl> <dbl> <dbl>
1 6 6 NaN
2 5 5.5 0.707
3 3 4.67 1.53
4 7 5.25 1.71
5 8 5.8 1.92
6 2 5.17 2.32
7 4 5 2.16
[[2]]
# A tibble: 7 × 3
aa running_mean running_sd
<dbl> <dbl> <dbl>
1 8 8 NaN
2 7 7.5 0.707
3 5 6.67 1.53
4 6 6.5 1.29
5 4 6 1.58
6 2 5.33 2.16
7 3 5 2.16
[[3]]
# A tibble: 7 × 3
aa running_mean running_sd
<dbl> <dbl> <dbl>
1 3 3 NaN
2 6 4.5 2.12
3 7 5.33 2.08
4 2 4.5 2.38
5 8 5.2 2.59
6 5 5.17 2.32
7 4 5 2.16
[[4]]
# A tibble: 7 × 3
aa running_mean running_sd
<dbl> <dbl> <dbl>
1 8 8 NaN
2 3 5.5 3.54
3 5 5.33 2.52
4 6 5.5 2.08
5 2 4.8 2.39
6 7 5.17 2.32
7 4 5 2.16
[[5]]
# A tibble: 7 × 3
aa running_mean running_sd
<dbl> <dbl> <dbl>
1 8 8 NaN
2 5 6.5 2.12
3 6 6.33 1.53
4 2 5.25 2.5
5 3 4.8 2.39
6 4 4.67 2.16
7 7 5 2.16
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)