[R] Different freq returned by spec.ar() and spec.pgram()

Prof Brian Ripley ripley at stats.ox.ac.uk
Wed Nov 21 23:03:46 CET 2007


Frequency has units (1/wavelength), and this is just a question of using 
different units.  For monthly series, is this per month or per year?

The functions were written for R at different times by different people: 
it would seem to make sense to alter spec.ar to use the per year 
interpretation.  It would be unusual to use spec.ar on a series with known 
frequency (I have never seen it done), and it is arguable that the per-lag 
interpretation is more natural for that method.


On Wed, 21 Nov 2007, Eric Thompson wrote:

> Dear list,
>
> I've recently become interested in comparing the spectral estimates
> using the different methods ("pgram" and "ar") in the spectrum()
> function in the stats package.
>
> With many thanks to the authors of these complicated functions, I
> would like to point out what looks to me like a bit of an
> inconsistency -- but I would not be surprised if there is good
> reasoning that justifies it that I am just not seeing right now. If we
> use the lh data, the two methods return similar results:
>
>> spectrum(lh, col = "blue")
>> spec.ar(lh, add = TRUE)
>
> But using the ldeaths data:
>
>> spectrum(ldeaths, col = "blue")
>> spec.ar(ldeaths, add = TRUE)
>
> the resulting plots do not compare over the same frequency range. This
> results because spec.ar defines frequency as
>
>> freq <- seq.int(0, 0.5, length.out = n.freq)
>
> whereas spec.pgram uses
>
>> xfreq <- frequency(x)
>> N <- nrow(x)
>> Nspec <- floor(N/2)
>> freq <- seq.int(from = xfreq/N, by = xfreq/N, length.out = Nspec)
>
> And so the reason the spectral estimates of lh are similar is that
> frequency(lh) = 1, whereas frequency(ldeaths) = 12.
>
> The documentation seems more extensive for spec.pgram (and the
> pertinent section in MASS focuses on spec.pgram), and I realize that
> there is a warning in ?spec.ar that AR spectra can be misleading. But
> is there a reason that I am not aware of that the frequencies of the
> AR spectra are defined in this way? It seems to me that it would be
> desirable for frequency to be defined over the same range as in
> spec.pgram. All that would need to be added would be a line to scale
> the freq vector using the sampling frequency before it is returned.
>
> Eric Thompson
> Graduate Student
> Dept. of Civil & Env. Eng.
> Tufts University
>
>> sessionInfo()
> R version 2.6.0 (2007-10-03)
> i686-pc-linux-gnu
>
> locale:
> LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=en_US.UTF-8;LC_COLLATE=en_US.UTF-8;LC_MONETARY=en_US.UTF-8;LC_MESSAGES=en_US.UTF-8;LC_PAPER=en_US.UTF-8;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=en_US.UTF-8;LC_IDENTIFICATION=C
>
> attached base packages:
> [1] datasets  utils     stats     graphics  grDevices methods   base
>
> other attached packages:
> [1] MASS_7.2-37
>
> loaded via a namespace (and not attached):
> [1] rcompgen_0.1-17
>
> ______________________________________________
> 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.
>

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



More information about the R-help mailing list