2015-01-29 28 views
5

Chcę przeprowadzić (sześcienną) interpolację splajnu dla danych populacji, aby "przekształcić" dane roczne na dane kwartalne. Wiem, że jest tak wiele wad, ale muszę to zrobić.Interpolacja splajnu z R

Oto przykład z mojego kodu (przy użyciu rodzajowy dane wejściowe):

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

Jak mogę określić, że rowki są obliczane „kwartalny”, innymi słowy na 1973,25, 1973,5, 1973,75, 1974 itp .? Przepraszamy za to, że nie jesteś ekspertem od statystyk: Jaka byłaby najlepsza metoda "przekształcania" danych rocznych w dane kwartalne: "fmm", "natural", "periodic", "monoH.FC" lub "hyman"? Założeniem byłoby, że wzrost populacji jest równomiernie rozłożony w ciągu roku.

Pozdrawiamy i dziękujemy z dużym wyprzedzeniem!

Odpowiedz

6

Dlaczego nie używając splinefun:

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

Następnie należy zdefiniować punkt prognozować chcesz:

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

rozwiązanie bardzo schludny! Wielkie dzięki! :) –

+0

Bez problemu! Zawsze lepiej jest mieć funkcję niż wektor, ponieważ możesz ocenić pierwszy na innym wektorze! –

+0

Dobrze wiedzieć! Brzmi rozsądnie. –