【发布时间】:2012-01-19 07:11:24
【问题描述】:
我想在我的数据集上计算一个滚动中位数的变体,它确实不是通过将k 观察到前后观察,而是通过考虑给定时间窗口中的所有观察来构建子集。
一个简单的实现可能如下所示:
windowwidth <- 30
median.window <- function(x) median(mydata[time <= x + windowwidth /2 & time >= x - windowwidth /2)
vapply(time, median.window)
但是,正如您可以想象的那样,这对于大型数据集并不是很有效。您是否看到可能的改进或提供优化实现的包?您不能期望观察结果随着时间的推移而平均分布。
zoo提供rollmedian,但此功能不提供根据时间选择winwod,而是根据观察次数选择winwod。
【问题讨论】:
-
如果你添加一个玩具数据集,这将有助于提高兴趣。另见this question
-
由于根据您的描述,每个观察的“时间戳”基本上是随机的,因此没有先验方法来确定哪些观察适合给定窗口。也就是说,我想知道使用
outer()和适当的时间宽度排序函数是否至少可以为您构建一套完整的窗口样本集。我得去玩玩了。