R:滚动标准偏差,起始点位于第一个指标,忽略NA

R:滚动标准偏差,起始点位于第一个指标,忽略NA,r,statistics,standard-deviation,R,Statistics,Standard Deviation,如何计算向量的滚动标准偏差,例如 它忽略了NA 始终计算第一个指数的滚动标准偏差 返回长度与输入向量相同的滚动标准偏差向量 ? 例如: set.seed(123) x <- c(NA, rnorm(5), NA, rnorm(5)) 您可以使用zoo中的rollappyr zoo::rollapplyr(x, seq_along(x), sd, na.rm = TRUE) #[1] NA NA 0.234 1.140 0.936 0.811 0.811 0.955 0.872

如何计算向量的滚动标准偏差,例如

  • 它忽略了NA
  • 始终计算第一个指数的滚动标准偏差
  • 返回长度与输入向量相同的滚动标准偏差向量
  • ?

    例如:

    set.seed(123)
    x <- c(NA, rnorm(5), NA, rnorm(5))
    

    您可以使用
    zoo
    中的
    rollappyr

    zoo::rollapplyr(x, seq_along(x), sd, na.rm = TRUE)
    #[1]   NA    NA 0.234 1.140 0.936 0.811 0.811 0.955 0.872 1.009 0.993 0.954
    

    或者以手动方式在base R中运行,这将比
    zoo
    方法慢

    sapply(seq_along(x), function(i) sd(x[1:i], na.rm = TRUE))
    

    您可以使用
    zoo
    中的
    rollappyr

    zoo::rollapplyr(x, seq_along(x), sd, na.rm = TRUE)
    #[1]   NA    NA 0.234 1.140 0.936 0.811 0.811 0.955 0.872 1.009 0.993 0.954
    

    或者以手动方式在base R中运行,这将比
    zoo
    方法慢

    sapply(seq_along(x), function(i) sd(x[1:i], na.rm = TRUE))
    

    什么是窗口大小?如问题中所述,我希望总是从第一个索引开始进行滚动计算。感谢您添加示例。我已经更新了答案。第二个rollapplyr解决方案是
    rollapplyr(x,length(x),sd,na.rm=TRUE,partial=TRUE)
    什么是窗口大小?如问题中所述,我希望始终从第一个索引开始进行滚动计算。感谢您添加示例。我已经更新了答案。第二个rollapplyr解决方案是
    rollapplyr(x,长度(x),sd,na.rm=TRUE,partial=TRUE)