2011-01-04 2 views
5

Я заинтересован в использовании монотонного сплайна, но я получаю сообщение об ошибке, когда R пытается его использовать. Я использую R 2.12.0, а метод "monoH.FC говорит, что он поддерживается начиная с 2.8.0Проблема с сплайн-методом = 'monoH.FC' '

Возпроизводимо пример (тот же результат для более сложного (х, у) отношения)

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") 
... 

Вопрос

Как я могу использовать метод = «monoH.FC» с рейкой?

ответ

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) 
+0

следующее правильное изображение: чтобы получить пары x, y, сравнимые с результатами 'spline (x, y)', я должен использовать 'f <- splinefun (x, y, method = 'monoH.FC'); list (x = x, y = f (x)) ' –

Смежные вопросы