Fast Fourier Transform in R
Use spectrum
to do a spectral density analysis; also fft
for the base fast Fourier transform.
You may consider the following functions.
periodogram
fromTSA
package immediately plots a periodogram.periodogram
fromGeneCycle
returns a list of frequencies and estimated power spectral densities. It is a wrapper function forstats::spectrum
with some special options set.spectrum
fromstats
allows you to choose the method used to estimate the spectral density: either periodogram or using autoregressive process.cpgram
fromstats
plots a cumulative periodogram along with a confidence interval.
See, e.g., ?cpgram
or ?spectrum
for all the details and keep in mind that it is, e.g., TSA::periodogram
and GeneCycle::periodogram
when names of the functions coincide.
There are also plenty of examples and tutorials online on how to use those functions. See here for the usage of fft
and here for an even more extensive tutorial.
Also, as you probably already know, a given time series must be detrended. Hence, use, e.g., diff(x)
instead of x
. And finally, the length of your time series must be divisible by 12 as to be able to identify 12 and 24 hours frequencies, it can be achieved by, e.g., x[-(1:(length(x) %% 12))]
, where x
is a detrended time series.