我对na.spline()包中的zoo函数有问题。虽然文档明确指出这是一个插值函数,但我得到的行为包括外推。
下面的代码再现了这个问题:
require(zoo)
vector <- c(NA,NA,NA,NA,NA,NA,5,NA,7,8,NA,NA)
na.spline(vector)这方面的产出应是:
NA NA NA NA NA NA 5 6 7 8 NA NA这将是内部NA的内插,使尾部NAs就位。但是,相反,我得到:
-1 0 1 2 3 4 5 6 7 8 9 10根据文件,这不应该发生。有什么方法可以避免外推吗?
我承认,在我的例子中,我可以使用线性插值,但这是一个MWE。虽然我不一定与na.spline()函数结合在一起,但我需要一些方法来使用三次样条插值。
发布于 2015-12-14 19:05:35
这种行为似乎来自于stats::spline函数,例如,
spline(seq_along(vector), vector, xout=seq_along(vector))$y
# [1] -1 0 1 2 3 4 5 6 7 8 9 10这里有一个工作,使用的事实是na.approx严格内插。
replace(na.spline(vector), is.na(na.approx(vector, na.rm=FALSE)), NA)
# [1] NA NA NA NA NA NA 5 6 7 8 NA NA编辑
正如@G.Grothendieck在下面的评论中所指出的,另一种无疑更有表现力的方式是:
na.spline(vector) + 0*na.approx(vector, na.rm = FALSE)https://stackoverflow.com/questions/34274128
复制相似问题