【问题标题】:R: rolling standard deviation with startpoint at the first index and ignore NAR:以第一个索引为起点的滚动标准偏差并忽略 NA
【发布时间】:2020-03-31 06:00:16
【问题描述】:

我如何计算一个向量的滚动标准差,这样

  1. 它忽略不适用
  2. 始终计算滚动标准偏差从第一个索引
  3. 返回一个与输入向量长度相同的滚动标准差向量

?

例子:

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

结果会返回

sd(x[1:1],na.rm=T) = NA
sd(x[1:2],na.rm=T) = NA
sd(x[1:3],na.rm=T) = 0.2335561
sd(x[1:4],na.rm=T) = 1.140186
sd(x[1:5],na.rm=T) = 0.9355676
sd(x[1:6],na.rm=T) = 0.8110218
sd(x[1:7],na.rm=T) = 0.8110218
sd(x[1:8],na.rm=T) = 0.9550024
sd(x[1:9],na.rm=T) = 0.8718094
sd(x[1:10],na.rm=T) = 1.009344
sd(x[1:11],na.rm=T) = 0.9928846
sd(x[1:12],na.rm=T) = 0.9537841

【问题讨论】:

    标签: r statistics standard-deviation


    【解决方案1】:

    您可以使用来自zoorollapplyr

    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
    

    或者在基本 R 中的手动方式比zoo 方法慢。

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

    【讨论】:

    • window_size 是什么?
    • 如问题中所述,我想始终从第一个索引开始进行滚动计算。
    • 感谢您添加示例。我已经更新了答案。
    • 第二个 rollapplyr 解决方案是 rollapplyr(x, length(x), sd, na.rm = TRUE, partial = TRUE)
    猜你喜欢
    • 2013-10-05
    • 1970-01-01
    • 2014-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多