【发布时间】:2012-08-27 22:54:51
【问题描述】:
我想平滑时间序列以避免虚假的抖动/错误。换句话说,我想做一些非常局部的鲁棒平滑。
我在 zoo 包中遇到了 rollmean 和 rollmedian,但遇到了问题,因为我的向量中有一个 NA。然后我在某处读到那些动物园功能使用 runmed 的地方,这就是问题所在。
==示例==
median(c(1,1,1,2,2,2,7,NA,1,2,3,10,10,10),na.rm = TRUE)
runmed(c(1,1,1,2,2,2,7,NA,1,2,3,10,10,10),k=3)
第一行返回 2,但如果不包含 na.rm = TRUE,则返回 NA。第二行返回Error in runmed(c(1, 1, 1, 2, 2, 2, 7, NA, 1, 2, 3, 10, 10, 10), k = 3) :
NA/NaN/Inf in foreign function call (arg 1)。无法在该行中添加 na.rm 参数。
如何运行以处理 NA? 顺便说一下,rollmean 返回一个直到 NA 为止都是正确的向量,然后为之后的每个值返回 NA。
【问题讨论】:
-
Zoo 中的
rollmean和rollmean旨在提高速度,因此有一定的限制,因此它们运行得更快——如他们的帮助文件中所述。如果您的情况不符合这些限制,您仍然可以使用rollapply在这种情况下,您可以提供您想要的任何功能,例如rollapply(x, k, function(x) median(x, na.rm = TRUE))。请注意,帮助文件中说:“‘rollmean’的默认方法不处理包含‘NA’的输入。在这种情况下,请改用‘rollapply’。”
标签: r missing-data