2015-01-29 21 views
5

Desidero eseguire un'interpolazione spline (cubica) per i dati della popolazione per "trasformare" i dati annuali in dati trimestrali. So che ci sono un buon numero di difetti, ma ho bisogno di farlo.Interpolazione spline con R

Ecco un esempio del mio codice (utilizzando i dati di input generici):

#--------------spline interpolation 

x = c(1973:2014) 
population = seq(500000, 600000, length.out = 42) 
list = spline(x, population, n = 4*length(x), method = "fmm", 
     xmin = min(x), xmax = max(x), ties = mean) 

x_spline = list$x 
pop_spline = list$y 

Come posso definire che le scanalature sono calcolati "trimestrale", in altre parole a 1.973,25, 1.973,5, 1973,75, 1974 ecc .? Scusa per non essere un esperto di statistiche: quale sarebbe il metodo migliore per "trasformare" i dati annuali in dati trimestrali: "fmm", "natural", "periodic", "monoH.FC" o "hyman"? L'ipotesi sarebbe che la crescita della popolazione sia distribuita uniformemente durante l'anno.

I migliori saluti e molte grazie in anticipo!

risposta

6

Perché non utilizzare splinefun:

func = splinefun(x=x, y=population, method="fmm", ties = mean) 

Poi si definisce il punto di prevedere che si desidera:

func(seq(1973, 2014, 0.25)) 
+0

soluzione molto pulito! Molte grazie! :) –

+0

Nessun problema! È sempre meglio avere una funzione che un vettore dato che puoi valutare il primo su un vettore diverso! –

+0

Buono a sapersi! Sembra ragionevole. –