discrepancy between periodogram implementations ? per and spec.pgram
There are several definitions of a periodgram. Note that
log(2*pi)
[1] 1.837877 See the comments in ?spectrum about scalings. I think the comments in ?per incorrectly ignore the scaling issues: per() does not take the base frequency into account and has an extra divisor of 2*pi. E.g.
x <- rnorm(64) spec.pgram(x, taper=0, detrend=F)$spec/per(x)[-1]
[1] 6.283185 6.283185 6.283185 6.283185 6.283185 6.283185 6.283185 6.283185 [9] 6.283185 6.283185 6.283185 6.283185 6.283185 6.283185 6.283185 6.283185 [17] 6.283185 6.283185 6.283185 6.283185 6.283185 6.283185 6.283185 6.283185 [25] 6.283185 6.283185 6.283185 6.283185 6.283185 6.283185 6.283185 6.283185
On Wed, 12 Dec 2007, Lieven Desmet wrote:
hello,
I have been using the per function in package longmemo to obtain a
simple raw periodogram.
I am considering to switch to the function spec.pgram since I want to be
able to do tapering.
To compare both I used spec.pgram with the options as suggested in the
documentation of per {longmemo} to make them correspond.
Now I have found on a variety of examples that there is a shift between
the log of the periodogram with per and that with spec.pgram. This
vertical shift amounts to approx. 1.8 on the log scale (the graph of
spec.pgram being above the one from per).
Is there some explanation for this ? Is the one from spec.pgram the
better one as suggested in the documentation of per {longmemo}? Finally
how are these related to an estimate of the spectral density obtained
from spec.arima ?
What is spec.arima? If you meant spec.ar, that is on the same scale as spec.pgram for series with base frequency 1 (and for all series for R >= 2.7.0).
Many thanks for help and clarification. Lieven Desmet
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