2011-01-04 3 views
5

Je suis intéressé par l'utilisation de la spline monotone, mais j'obtiens une erreur lorsque R essaie de l'utiliser. J'utilise R 2.12.0, et la méthode « monoH.FC » dit qu'il a été pris en charge depuis 2.8.0Problème avec spline method = 'monoH.FC'

exemple Reproductibles (même résultat pour des relations plus compliquées (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 

Ce que j'ai essayé

?spline retours:

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

Mais la fonction elle-même spline indique que la méthode 'monoH.FC' est pas pris en charge:

... 
method <- pmatch(method, c("periodic", "natural", "fmm")) 
if (is.na(method)) 
    stop("invalid interpolation method") 
... 

Question

Comment puis-je utiliser la méthode = 'monoH.FC' avec spline?

Répondre

9

Utiliser splinefun; il prend en charge method=monoH.FC.

Le dernier exemple de ?spline vous montre comment procéder.

## 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

est le correct? pour obtenir des paires x, y analagues aux résultats de 'spline (x, y)', je devrais utiliser 'f <- splinefun (x, y, method = 'monoH.FC'); liste (x = x, y = f (x)) ' –