我对使用单调样条感兴趣,但是当R尝试使用它时我收到错误。我使用的是R 2.12.0,方法'monoH.FC'表示它自2.8.0以来一直受支持
可重复的示例(更复杂的(x,y)关系的结果相同)
x<-1:2
y<-1:2
spline(x,y,method="monoH.FC")
Error in spline(x, y, method = "monoH.FC") : invalid interpolation method
我尝试了什么
?spline
返回:
...
Usage:
...
spline(x, y = NULL, n = 3*length(x), method = "fmm",
xmin = min(x), xmax = max(x), xout, ties = mean)
...
Arguments:
method: specifies the type of spline to be used. Possible values are
‘"fmm"’, ‘"natural"’, ‘"periodic"’ and ‘"monoH.FC"’.
...
但是spline
函数本身表明不支持'monoH.FC'方法:
...
method <- pmatch(method, c("periodic", "natural", "fmm"))
if (is.na(method))
stop("invalid interpolation method")
...
问题
如何在样条曲线上使用method ='monoH.FC'?
答案 0 :(得分:9)
使用splinefun
;它支持method=monoH.FC
。
?spline
中的最后一个示例向您展示了如何执行此操作。
## An example of monotone interpolation
n <- 20
set.seed(11)
x. <- sort(runif(n)) ; y. <- cumsum(abs(rnorm(n)))
plot(x.,y.)
curve(splinefun(x.,y.)(x), add=TRUE, col=2, n=1001)
curve(splinefun(x.,y., method="mono")(x), add=TRUE, col=3, n=1001)
legend("topleft", paste("splinefun( \"", c("fmm", "monoH.CS"), "\" )", sep=''),
col=2:3, lty=1)