如何对R中时间序列中的第一个和最后一个k值应用hampel滤波器?

如何对R中时间序列中的第一个和最后一个k值应用hampel滤波器?,r,time-series,filtering,data-cleaning,R,Time Series,Filtering,Data Cleaning,我正在使用pracma包中的hampel方法来过滤时间序列数据中的异常值。但是,hampel不会过滤数据中第一个和最后一个k值中的异常值,而是按原样复制它们 对于R中的异常值检测,是否有一种替代的移动平均滤波器,它可以在考虑第一个和最后一个k值的同时环绕序列?如果没有,我如何利用hampel独自完成这项工作 例如,我有原始序列orig和过滤序列filt,如下所示: > orig<-c(26L, 34L, 29L, 49L, 24L, 28L, 30L, 26L, 33L, 25L,

我正在使用
pracma
包中的
hampel
方法来过滤时间序列数据中的异常值。但是,
hampel
不会过滤数据中第一个和最后一个k值中的异常值,而是按原样复制它们

对于R中的异常值检测,是否有一种替代的移动平均滤波器,它可以在考虑第一个和最后一个k值的同时环绕序列?如果没有,我如何利用
hampel
独自完成这项工作

例如,我有原始序列
orig
和过滤序列
filt
,如下所示:

> orig<-c(26L, 34L, 29L, 49L, 24L, 28L, 30L, 26L, 33L, 25L, 33L, 43L, 20L, 26L, 32L, 21L, 28L, 28L, 18L, 28L, 23L, 23L, 22L, 22L, 27L, 24L, 25L, 25L, 28L, 33L, 26L, 24L, 20L, 20L, 27L, 24L, 27L, 23L, 23L, 22L)
> filt<-hampel(orig, k=6)$y

例如,您可以简单地在开头重复前三个点,在结尾重复最后三个点
hampel(x,k=6)
然后将返回索引7和15,即原始序列的索引为4和12的点。这可以很容易地自动化。@HansWerner在一个时间序列中,这不会干扰数据的趋势吗?而且,如果我重复前k个点,这些点内的任何异常值也会重复;这就是为什么我把我的评论作为评论而不是解决方案。想想看:识别异常值是有问题的,而且在边界上问题更大。如果您不介意,您可以更改
hampel
,这样对于第一个(也是最后一个)
k
点,它将把这些
k
点作为(常量)上下文—只需添加到函数中的几行。@HansWerner不幸的是,这不适用于我的数据。谢谢你的建议