[R] Fourier Analysis and Curve Fitting in R
Spencer Graves
spencer.graves at pdf.com
Tue Jan 29 04:03:31 CET 2008
The 'fda' package supports fitting finite Fourier series with examples
in 'canadian-weather.R' and 'gait.R' in the 'demo' subdirectory of
'~R\library\fda\fda'; see also 'fda-ch01.R' in the 'scripts'
subdirectory. Also, the 'percur' funcction in the 'DierckxSpline'
package supports fitting periodic splines.
stephen sefick wrote:
> 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
>> ?spec.pgram
>>
> 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.
>
> 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 <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:
>>> <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,
>>>
>>> Carson
>>>
>>>> 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.
>>>>
>>>> cheers,
>>>>
>>>> Rolf Turner
>>>>
>>>>
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>>
>
>
>
More information about the R-help
mailing list