Estou tentando entender se a transformada de Fourier discreta fornece a mesma representação de uma curva que uma regressão usando a base de Fourier. Por exemplo,
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)
A FFT fornece um número complexo, enquanto a regressão fornece um número real.
Eles transmitem a mesma informação? Existe um mapa individual entre os dois conjuntos de números?
(Eu apreciaria se a resposta fosse escrita da perspectiva do estatístico em vez da perspectiva do engenheiro. Muitos materiais on-line que posso encontrar têm jargões de engenharia em todo o lugar, o que os torna menos palatáveis para mim.)
Respostas:
Eles são iguais. Aqui está como ...
Fazendo uma regressão
Diga que encaixa no modelo , onde t = 1 , ... , N e n = andar ( N / 2 ) . Porém, isso não é adequado para regressão linear; portanto, você usa alguma trigonometria ( cos ( a + b ) = cos
e β 2,j=Σ N t = 1 ytsin(2πt[j/N])
Fazendo uma transformação discreta de Fourier
Quando você executa uma transformação de Fourier, calcula, para :j=1,…,n
I <- abs(fft(Y))^2/length(Y)
, o que é meio estranho, porque você precisa escalá-lo.P <- (4/length(Y))*I[(1:floor(length(Y)/2))]
.A conexão entre os dois
Acontece que a conexão entre a regressão e os dois periodogramas é:
Fonte: https://www.amazon.com/Time-Analysis-Its-Applications-Statistics/dp/144197864X
fonte
R
objetos que publiquei.fft()
não dimensiona a maneira como escrevi (eu já mencionei isso), que eu não provei nada com interceptações e quecreate.fourier.basis()
dimensiona as funções básicas de maneira estranha.Eles estão fortemente relacionados. Seu exemplo não é reproduzível porque você não incluiu seus dados, portanto, criarei um novo. Primeiro de tudo, vamos criar uma função periódica:
Agora, vamos criar uma base de Fourier para regressão. Note que, comN= 2 k + 1 , não faz muito sentido criar mais do que N- 2 funções básicas, ou seja, N- 3 = 2 ( k - 1 ) senos e cossenos não constantes, porque os componentes de maior frequência são alias nessa grade. Por exemplo, um seno de frequênciak ω é indistinguível de um costante (seno): considere o caso de N= 3 , ou seja, k = 1 . De qualquer forma, se você quiser verificar novamente, basta alterar
N-2
paraN
no trecho abaixo e observar as duas últimas colunas: você verá que elas são realmente inúteis (e criam problemas para o ajuste, porque a matriz de design agora é singular )Observe que as frequências são exatamente as corretas, mas as amplitudes de componentes diferentes de zero não são (1,2,3,4). O motivo é que as1 , pecadoω x ,cosω x ,… . Não é1π√ ou, como teria sido para a base ortonormal de Fourier, 12 π√, sinω xπ√, cosω xπ√, … .
fda
funções da base de Fourier são dimensionadas de maneira estranha: seu valor máximo não é 1, como seria para a base usual de FourierVocê vê claramente que:
O simples dimensionamento da base de Fourier fornecida por
fda
, para que a base usual de Fourier seja obtida, leva a coeficientes de regressão com os valores esperados:Vamos tentar
fft
agora: observe que, comoYper
é uma sequência periódica, o último ponto não adiciona nenhuma informação (a DFT de uma sequência é sempre periódica). Assim, podemos descartar o último ponto ao calcular a FFT. Além disso, a FFT é apenas um algoritmo numérico rápido para calcular a DFT, e a DFT de uma sequência de números reais ou complexos é complexa . Assim, queremos realmente os módulos dos coeficientes da FFT:Nós multiplicamos por2N- 1 para ter o mesmo dimensionamento da base de Fourier 1 , pecadoω x ,cosω x ,… . Se não escalássemos, ainda assim recuperaríamos as frequências corretas, mas as amplitudes seriam todas escaladas pelo mesmo fator em relação ao que encontramos anteriormente. Vamos agora traçar os coeficientes fft:
Ok: as frequências estão corretas, mas observe que agora as funções básicas não são mais senos e cossenos (são exponenciais complexasexpn i ω x onde com Eu Denomino a unidade imaginária). Observe também que, em vez de um conjunto de frequências diferentes de zero (1,2,3,4) como antes, obtivemos um conjunto (1,2,5). A razão é que um termoxnexpn i ω x nesta complexa expansão do coeficiente xn é complexo) corresponde a dois termos reais umans i n ( n ω x ) + bnc o s ( n ω x ) na expansão da base trigonométrica, por causa da fórmula de Euler expi x =cosx +ipecadox . O módulo do coeficiente complexo é igual à soma em quadratura dos dois coeficientes reais, ou seja,| xn| = a2n+ b2n------√ . Na verdade,5 = 33+ 42------√ .
fonte
daily
vêm com ofda
pacote.