J'essaie de comprendre si la transformée de Fourier discrète donne la même représentation d'une courbe qu'une régression utilisant la base de Fourier. Par exemple,
library(fda)
Y=daily$tempav[,1] ## my data
length(Y) ## =365
## create Fourier basis and estimate the coefficients
mybasis=create.fourier.basis(c(0,365),365)
basisMat=eval.basis(1:365,mybasis)
regcoef=coef(lm(Y~basisMat-1))
## using Fourier transform
fftcoef=fft(Y)
## compare
head(fftcoef)
head(regcoef)
FFT donne un nombre complexe, tandis que la régression donne un nombre réel.
Transmettent-ils les mêmes informations? Y a-t-il une carte un à un entre les deux ensembles de nombres?
(J'apprécierais que la réponse soit écrite du point de vue du statisticien au lieu du point de vue de l'ingénieur. De nombreux documents en ligne que je peux trouver ont un jargon d'ingénierie partout, ce qui les rend moins agréables au goût.)
Réponses:
Ce sont les mêmes. Voici comment...
Faire une régression
Supposons que vous correspondiez au modèle où t = 1 , … , N et n = plancher ( N / 2 ) . Cela ne convient pas à la régression linéaire, cependant, vous utilisez plutôt une trigonométrie ( cos ( a + b ) = cos
et β 2,j=
Faire une transformation de Fourier discrète
Lorsque vous exécutez une transformée de Fourier, vous calculez, pour :j=1,…,n
Il s'agit d'un nombre complexe (notez le ). Pour voir pourquoi cette égalité est valable, gardez à l'esprit que e i x = cos ( x ) + i sin ( x ) , cos ( -i eix=cos(x)+isin(x) cos(−x)=cos(x) sin( - x ) = - péché( x )
I <- abs(fft(Y))^2/length(Y)
, ce qui est un peu bizarre, car vous devez le mettre à l'échelle.P <- (4/length(Y))*I[(1:floor(length(Y)/2))]
La connexion entre les deux
Il s'avère que le lien entre la régression et les deux périodogrammes est:
Source: https://www.amazon.com/Time-Analysis-Its-Applications-Statistics/dp/144197864X
la source
R
objects I posted.fft()
doesn't scale the way I wrote (I already mentioned this), that I haven't proved anything with intercepts, and thatcreate.fourier.basis()
scales the basis functions weirdly.They are strongly related. Your example is not reproducible because you didn't include your data, thus I'll make a new one. First of all, let's create a periodic function:
Now, let's create a Fourier basis for regression. Note that, withN=2k+1 , it doesn't really make sense to create more than N−2 basis functions, i.e., N−3=2(k−1) non-constant sines and cosines, because higher frequency components are aliased on such a grid. For example, a sine of frequency kω is indistinguishable from a costant (sine): consider the case of N=3 , i.e., k=1 . Anyway, if you want to double check, just change
N-2
toN
in the snippet below and look at the last two columns: you'll see that they're actually useless (and they create issues for the fit, because the design matrix is now singular).Note that the frequencies are exactly the right ones, but the amplitudes of nonzero components are not (1,2,3,4). The reason is that the1,sinωx,cosωx,… . It's not 1π√ either, as it would have been for the orthonormal Fourier basis, 12π√,sinωxπ√,cosωxπ√,… .
fda
Fourier basis functions are scaled in a weird way: their maximum value is not 1, as it would be for the usual Fourier basisYou clearly see that:
Simply scaling the Fourier basis given by
fda
, so that the usual Fourier basis is obtained, leads to regression coefficients having the expected values:Essayons
fft
maintenant: notez que puisqu'ilYper
s'agit d'une séquence périodique, le dernier point n'ajoute pas vraiment d'informations (la DFT d'une séquence est toujours périodique). Ainsi, nous pouvons ignorer le dernier point lors du calcul de la FFT. De plus, la FFT n'est qu'un algorithme numérique rapide pour calculer la DFT, et la DFT d'une séquence de nombres réels ou complexes est complexe . Ainsi, nous voulons vraiment les modules des coefficients FFT:On multiplie par2N- 1 afin d'avoir la même mise à l'échelle qu'avec la base de Fourier 1 , péchéω x ,cosω x ,… . Si nous n'étions pas à l'échelle, nous récupérerions toujours les fréquences correctes, mais les amplitudes seraient toutes mises à l'échelle par le même facteur par rapport à ce que nous avons trouvé auparavant. Voyons maintenant les coefficients fft:
Ok: les fréquences sont correctes, mais notez que maintenant les fonctions de base ne sont plus des sinus et des cosinus (ce sont des exponentielles complexesexpn i ω x , où avec je Je dénote l'unité imaginaire). Notez également qu'au lieu d'un ensemble de fréquences non nulles (1,2,3,4) comme auparavant, nous avons obtenu un ensemble (1,2,5). La raison en est qu'un termeXnexpn i ω x dans cette expansion de coefficient complexe (donc Xn est complexe) correspond à deux termes réels unens i n ( n ω x ) + bnc o s ( n ω x ) dans l'expansion de la base trigonométrique, en raison de la formule d'Euler expi x =cosx +isinX . Le module du coefficient complexe est égal à la somme en quadrature des deux coefficients réels, c'est-à-dire| Xn| = a2n+ b2n------√ . À vrai dire,5 = 33+ 42------√ .
la source
daily
sont fournies avec lefda
package.