Surprisingly Slow Standard Deviation in R

后端 未结 3 2093
死守一世寂寞
死守一世寂寞 2021-01-06 09:52

I am calculating standard deviations on an expanding window where at each point I recalculate the standard deviation. This seems like a fairly straightforward thing to do t

3条回答
  •  暖寄归人
    2021-01-06 10:09

    When a somewhat similar question about a cumulative variance and a cumularive kurtosis operation came up in rhelp a few days ago, here is what I offered :

    daily <- rnorm(1000000)
    mbar <- mean(daily)
    cumvar <-  cumsum( (daily-cumsum(daily)/1:length(daily) )^2)
    cumskew <- cumsum( (daily-cumsum(daily)/1:length(daily))^3)/cumvar^(3/2)
    

    It's certainly faster than the sapply method but may be comparable to Aaron's.

     system.time( cumvar <-  cumsum( (daily-cumsum(daily)/1:length(daily) )^2) )
       user  system elapsed 
      0.037   0.026   0.061 
     system.time(cumsd <- sqrt(cumvar) )
       user  system elapsed 
      0.009   0.005   0.013 
    

提交回复
热议问题