[R] [Fwd: Re: Fourier Analysis and Curve Fitting in R]

Carson Farmer cfarmer at uvic.ca
Tue Jan 29 21:33:46 CET 2008

well if you want to find the spectral density aka what frequencies
explain most of the variance then I would suggest the spectral
density.  This can be implemented with spec.pgram().  This is
conducted with the fast fourier transform algorithm.

a<-ts(data, frequency = 1)   #make the time series with 365readings/365days

and you should be able to take it from here

This will give you the raw periodogram and the dominant frequencies
after you smooth the periodogram.  If your intention is to just fit a
curve to your data there are many types of cuve fitting options moving
average etc.

   I am essentially trying to fit a smooth line (through some data gaps) from
   which phenological  type indices of snow depth can be derived.

What are you trying to do find the dominant periodicy? make a
prediction equation? fit a smooth line? or...

give us some more information and maybe we can help

On 1/28/08, Carson Farmer [1]<cfarmer at uvic.ca> wrote:

Rolf Turner wrote:

On 26/01/2008, at 10:54 AM, Carson Farmer wrote:

Dear List,

I am attempting to perform a harmonic analysis on a time series of snow
depth, in which the annual curve is essentially asymmetric (i.e. snow
accumulates slowly over time, and the subsequent melt occurs relatively
rapidly).  I am trying to fit a curve to the data, however, the actual
frequency is unknown.

In general the actual frequency of the curve will indeed be close to
1/(1 year). However, because I intend to perform this analysis on many
regions, this will not always be the case. This is perhaps an
acceptable assumption however...

    Obviously there is something I am not understanding here.
    I would have thought that the ``actual frequency'' would
    be 1/(1 year) (period = 1 year) --- modulo the fact that
    the length of the year is constantly changing a tiny bit.
    (But I would've thought that this would have no practical
    impact in respect of any observed series.)

My sampling interval is daily.

    What is your sampling interval, BTW? Day?  Week?  Month?

I have been trying to follow the methods in Peter
Bloomfields text "Fourier Analysis of Time Series", but am having
trouble implementing this in R.

Yes it certainly would.

    Note that even though the ``actual frequency'' is (???) 1/(1 year),
    the representation of the mean function in terms of sinusoids
    will involve in theory infinitely many terms/frequencies since
    the mean function is clearly (!) not a sinusoid.

Does anyone have any suggestions, or perhaps directions on how this
might be done properly? Am I using the right methods for fitting an
asymmetric curve?

What I am really trying to do is fit a relatively smooth line to my
data which will preferentially weight the larger values. This method
needs to be able to fit through data gaps however, which is why I was
originally looking to fit sinusoids. A jpg of a single year of the
data is available here:
[2]<http://www.geog.uvic.ca/spar/carson/snowDepth.jpg> to give you an
idea of the shape of my curve.
Thank you again for your help,


    I would have to know more about what you are *really* trying
    to do, and what the data are like, before I could make any
    useful suggestions.  Many modelling issues could come into
    play, and many modelling strategies are potentially applicable.


            Rolf Turner

[3]R-help at r-project.org mailing list
PLEASE do read the posting guide [5]http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


   1. mailto:cfarmer at uvic.ca
   2. http://www.geog.uvic.ca/spar/carson/snowDepth.jpg
   3. mailto:R-help at r-project.org
   4. https://stat.ethz.ch/mailman/listinfo/r-help
   5. http://www.R-project.org/posting-guide.html

More information about the R-help mailing list