2011-01-04 4 views
5

Sono interessato all'utilizzo della spline monotona, ma ottengo un errore quando R tenta di usarlo. Sto usando R 2.12.0, e il metodo 'monoH.FC' dice che è stata sostenuta dal 2.8.0Problema con metodo spline = 'monoH.FC' '

esempio riproducibile (stesso risultato per più complicato (x, y) le relazioni)

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

Quello che ho provato

?spline rendimenti:

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

Ma la funzione spline stesso indica che il metodo 'monoH.FC' non è supportato:

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

Domanda

Come posso utilizzare il metodo = 'monoH.FC' con spline?

risposta

9

Utilizzare splinefun; supporta method=monoH.FC.

L'ultimo esempio in ?spline mostra come farlo.

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

è il seguente corretto? per ottenere coppie x, y analoghe ai risultati di 'spline (x, y)', dovrei usare 'f <- splinefun (x, y, method = 'monoH.FC'); lista (x = x, y = f (x)) ' –