【问题标题】:Is there an efficient way to calculate rolling deviation from mean?有没有一种有效的方法来计算与平均值的滚动偏差?
【发布时间】:2014-11-12 21:18:18
【问题描述】:

我想用滚动窗口计算平均偏差 '1/n[sum(Xi-mu)]'。 “亩”是滚动平均值。习也在滚动观察。这是我的示例代码,窗口大小为 n=10:

library(TTR)
dt<-rnorm(10000)
avg<-runMean(dt,n=10,cumulative=F)
df<-data.frame(dt,avg)

ls<-lapply(10:nrow(df),function(.){
    dev<-(df[(.-10+1):.,'dt']-df[.,'avg'])
    sk=mean(dev)
})

(p<-unlist(ls))

看来 lapply 不是一种有效的方法。不确定什么是替代解决方案。谢谢大家的建议。

【问题讨论】:

  • abs(Xi-mu)的平均值。

标签: r lapply moving-average


【解决方案1】:

您的意思是这样的吗(尽管正如简单解释 here 所解释的那样,差异抵消了)?

library(zoo)
dt <- rnorm(1000)
rollapply(dt, 10, function(x) mean(x - mean(x)))

【讨论】:

  • 不是方差。它的意思(Xi-mu)。方差是均值((Xi-mu)^2)
  • 但这没有任何意义,偏差会抵消,结果为0
  • 可以证明修改函数为:function(x) mean(x - mean(x))
  • 因为它不会是零,而是接近。它将用于计算偏度。
  • 看起来不错。比我的快 50%。希望有更快的速度。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-23
  • 2012-07-06
  • 2020-03-20
  • 1970-01-01
  • 1970-01-01
  • 2011-04-13
  • 2018-03-08
相关资源
最近更新 更多