[R] Using spec.ls to interpolate very long time series

Martin Berg bergmartinl at yahoo.com
Thu Jan 21 02:39:27 CET 2010


I have an very long, irregularly spaced time series (and I'm also new to
spectral analysis, so please be patient.) I want to use spec.ls as an
interpolator and then use the output to reconstruct the time series via
inverse fft.  But so far I've been having difficulty doing this.  

ts<-read.csv("timeseries.csv",header=TRUE) #file contains over 30000
irregularly spaced observations
attach(ts)
ts_lomb<-spec.ls(tsspec,y=NULL,demean=TRUE,detrend=FALSE)

>length(ts_lomb$freq)
 [1]17496 

#Now to see what some of the frequencies look like.
>ts_lomb$freq[1:10]
 [1] 2.857796e-05 5.715592e-05 8.573388e-05 1.143118e-04 1.428898e-04
 [6] 1.714678e-04 2.000457e-04 2.286237e-04 2.572016e-04 2.857796e-04

I would like to do an inverse fft using these frequencies so that I can
recreate the interpolated
time series. But when I do:

>fft(fft(ts_lomb))/length(ts_lomb)

I get:
 
 ...
 [17485] 0.00037151349-0i 0.00034293553-0i 0.00031435757-0i 0.00028577961-0i
 [17489] 0.00025720165-0i 0.00022862369-0i 0.00020004572-0i 0.00017146776-0i
 [17493] 0.00014288980+0i 0.00011431184-0i 0.00008573388-0i 0.00005715592-0i

My question:

1) The numbers don't make sense to me. Shouldn't I have both cosine and sine
functions?  I don't know why I have nothing but zeros for sine.  Anyone have
any insight in what I could be doing wrong? Or could this actually be
correct?

2) Let's say these are "good" numbers. What code could I write to create the
formula describing this ginormous time series?


 
-- 
View this message in context: http://n4.nabble.com/Using-spec-ls-to-interpolate-very-long-time-series-tp1033441p1033441.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list