2011-01-04 21 views
5

Estoy interesado en usar la spline monótona, pero aparece un error cuando R intenta usarla. Estoy usando R 2.12.0, y el método 'monoH.FC' dice que ha sido apoyado desde 2.8.0Problema con el método spline = 'monoH.FC' '

ejemplo reproducible (mismo resultado para más complicado (x, y) las relaciones)

x<-1:2 
y<-1:2 
spline(x,y,method="monoH.FC") 
    Error in spline(x, y, method = "monoH.FC") : invalid interpolation method 

lo que he tratado

?spline devuelve:

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

Pero la función spline sí indica que no se admite el método del 'monoH.FC':

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

Pregunta

¿Cómo puedo usar method = 'monoH.FC' con spline?

Respuesta

9

Use splinefun; es compatible con method=monoH.FC.

El último ejemplo en ?spline le muestra cómo hacerlo.

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

es la siguiente? Correcto? para obtener pares x, y análogos a los resultados de 'spline (x, y)', debería usar 'f <- splinefun (x, y, method = 'monoH.FC'); list (x = x, y = f (x)) ' –

Cuestiones relacionadas