Fast Fourier Transform in R

前端 未结 2 400
心在旅途
心在旅途 2021-01-30 03:36

I have a dataset with the number of hourly visits an animal made during a period of 12 months. I want to use the Fast Fourier Transform to examine cyclical patterns and periodic

2条回答
  •  不思量自难忘°
    2021-01-30 03:48

    You may consider the following functions.

    • periodogram from TSA package immediately plots a periodogram.
    • periodogram from GeneCycle returns a list of frequencies and estimated power spectral densities. It is a wrapper function for stats::spectrum with some special options set.
    • spectrum from stats allows you to choose the method used to estimate the spectral density: either periodogram or using autoregressive process.
    • cpgram from stats 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.

提交回复
热议问题