Проблема с методом сплайнов = 'monoH.FC' ' - PullRequest
5 голосов
/ 04 января 2011

Меня интересует использование монотонного сплайна, но я получаю сообщение об ошибке, когда 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' со сплайном?

1 Ответ

9 голосов
/ 04 января 2011

Использование 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)
...