向量的均值和标准差

Mean and sd for a vector

我想计算 table 中列的均值和 st.devs,但我想为每个新观察值 ex

计算它们
library(tidyverse)

aa <- data.frame(aa = c(2, 3, 4, 5, 6, 7, 8)) %>%
  mutate(aa1 = cumsum(aa), li = 1:n()) %>%
  mutate(MeanAA = aa1/li)


aa = c(2, 3, 4, 5, 6, 7, 8)

mean(aa[1:2])
mean(aa[1:3])

sd(aa[1:2])
sd(aa[1:3])

我可以做到平均但不能做到标准差。我想看看 sd 是如何随着观察次数的增加而相对于均值发生变化的。

这个怎么样:

aa <- c(2, 3, 4, 5, 6, 7, 8)

for (i in 2:length(aa)) {
  mn <- mean(aa[1:i])
  ss <- sd(aa[1:i])
  cat(sprintf("1-%i\tMean: %.2f\tSD: %.2f\n", i, mn, ss))
}
#> 1-2  Mean: 2.50  SD: 0.71
#> 1-3  Mean: 3.00  SD: 1.00
#> 1-4  Mean: 3.50  SD: 1.29
#> 1-5  Mean: 4.00  SD: 1.58
#> 1-6  Mean: 4.50  SD: 1.87
#> 1-7  Mean: 5.00  SD: 2.16

reprex package (v2.0.1)

创建于 2022-06-01

如果您需要 data.frame 中的值,您可以像这样使用它

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)])),
  )
#> # A tibble: 7 x 3
#>      aa running_mean running_sd
#>   <dbl>        <dbl>      <dbl>
#> 1     2          2       NA    
#> 2     3          2.5      0.707
#> 3     4          3        1    
#> 4     5          3.5      1.29 
#> 5     6          4        1.58 
#> 6     7          4.5      1.87 
#> 7     8          5        2.16

reprex package (v2.0.1)

创建于 2022-06-01