首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于函数从不规则间隔的时态计算加权和

基于函数从不规则间隔的时态计算加权和
EN

Stack Overflow用户
提问于 2018-04-23 21:55:34
回答 2查看 283关注 0票数 0

给定一个包含时间序列的数据序列,其间隔间隔极短,定义为:

代码语言:javascript
复制
df <- data.frame(date = as.Date("2016-01-01") + ((1:100) + sample(1:5, 100, replace = TRUE)), 
data = rnorm(100) )

如何计算data列在前30天的滚动和,以及由这个衰变函数定义的权重?

代码语言:javascript
复制
tau <- 0.05
decay = function(tau, day){
  exp(-tau * day)
}

现在的数据权重为1,30天前的数据权重为decay(0.05, 30) = 0.2231302。在使用衰减函数计算权重时,仍应考虑输入时间序列中缺少的天数。

如果可能的话,我希望将数据帧转换为zooxts对象,然后使用rollapplyr函数或类似的函数,并使用dplyr管道来实现这一点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-24 00:13:31

定义一个函数weighted,它接受最后的30个点,并且只在最后一个点的30天内保持这些点。然后用这些值乘以权重。

在这个过程中,我们将df转换成动物园,然后在weighted中使用rollapplyr。请注意,我们使用coredata = FALSE非常重要,以便将时间索引传递给weighted。如果没有这一点,它就不会是。

代码语言:javascript
复制
library(dplyr)
library(zoo)

weighted <- function(x, tau) {
  tx <- time(x)
  cx <- coredata(x)[tx > tail(tx, 1) - 30] # only keep if within 30 days
  w <- decay(tau, seq(to = 0, by = -1, length = length(cx)) )
  sum(w * cx)
}

df %>%
  read.zoo %>%
  rollapplyr(30, weighted, tau = tau, partial = TRUE, coredata = FALSE)

如果要将失踪天数视为0,请使用以下方法:

代码语言:javascript
复制
weighted <- function(x, tau) {
  tx <- as.numeric(time(x))
  days <- tail(tx, 1) - tx
  w <- (days < 30) * decay(tau, days)
  sum(w * coredata(x))
}

备注

我们使用了以下从问题中修改的输入,增加了set.seed的可重现性。而且,问题中使用的代码可能会产生多个具有相同date的值,并且我们消除了这样的重复。

代码语言:javascript
复制
set.seed(123)
df <- data.frame(date = as.Date("2016-01-01") + 1:100 + sample(1:5, 100, replace = TRUE), 
  data = rnorm(100) )
df <- df[!duplicated(df$date), ]

tau <- 0.05
decay = function(tau, day){
  exp(-tau * day)
}
票数 2
EN

Stack Overflow用户

发布于 2018-04-23 23:40:37

我不确定管道,但这应该能让你:

代码语言:javascript
复制
d <- decay(tau, 29:0)
rollapply(df, 30, function(z) {
  data <- as.data.frame(z, stringsAsFactors = FALSE)
  data$data <- as.numeric(data$data)
  sum(data$data * d)
}, by.column = FALSE)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49990517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档