Saya mencoba memahami apakah transformasi Fourier diskrit memberikan representasi kurva yang sama dengan regresi menggunakan basis Fourier. Sebagai contoh,
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 memberikan bilangan kompleks, sedangkan regresi memberikan bilangan real.
Apakah mereka menyampaikan informasi yang sama? Apakah ada peta satu ke satu di antara dua set angka?
(Saya akan sangat menghargai jika jawabannya ditulis dari perspektif ahli statistik alih-alih dari perspektif insinyur. Banyak bahan daring yang dapat saya temukan memiliki jargon teknik di mana-mana, yang membuat mereka kurang cocok untuk saya.)
Jawaban:
Mereka sama. Begini caranya ...
Melakukan Regresi
Katakanlah Anda sesuai dengan model dimana t = 1 , ... , N dan n = lantai ( N / 2 ) . Ini tidak cocok untuk regresi linier, jadi alih-alih Anda menggunakan beberapa trigonometri ( cos ( a + b ) = cos
dan β 2,j=Σ N t = 1 yt
Melakukan Transformasi Fourier Diskrit
Ketika Anda menjalankan transformasi Fourier, Anda menghitung, untuk :j=1,…,n
Ini adalah angka kompleks (perhatikan ). Untuk melihat mengapa persamaan itu berlaku, perlu diingat bahwa e i x = cos ( x ) + i sin ( x ) , cos ( - x ) = cos ( x ) dan sin ( - x ) = - sin ( x ) .i eix=cos(x)+isin(x) cos(−x)=cos(x) sin(−x)=−sin(x)
Untuk setiap , mengambil kuadrat dari konjugat kompleks memberi Anda " periodogram :"j
I <- abs(fft(Y))^2/length(Y)
, yang agak aneh, karena Anda harus skala itu.Anda juga dapat menentukan " skala periodogram "
P <- (4/length(Y))*I[(1:floor(length(Y)/2))]
Koneksi Antara Keduanya
Ternyata hubungan antara regresi dan dua periodogram adalah:
Sumber: https://www.amazon.com/Time-Analysis-Its-Applications-Statistics/dp/144197864X
sumber
R
objek yang saya posting.fft()
tidak skala cara saya menulis (saya sudah menyebutkan ini), bahwa saya belum membuktikan apa pun dengan penyadapan, dan yangcreate.fourier.basis()
skala dasar berfungsi dengan aneh.Mereka sangat terkait. Contoh Anda tidak dapat direproduksi karena Anda tidak memasukkan data Anda, jadi saya akan membuat yang baru. Pertama-tama, mari kita buat fungsi periodik:
Sekarang, mari kita buat basis Fourier untuk regresi. Perhatikan bahwa, denganN= 2 k + 1 , tidak masuk akal untuk membuat lebih dari N- 2 fungsi dasar, yaitu, N- 3 = 2 ( k - 1 ) sinus dan cosinus non-konstan, karena komponen frekuensi yang lebih tinggi alias pada kisi-kisi seperti itu. Misalnya, frekuensi sinusk ω tidak dapat dibedakan dari costant (sinus): pertimbangkan kasus N= 3 yaitu k = 1 . Lagi pula, jika Anda ingin memeriksa ulang, cukup ganti
N-2
keN
dalam cuplikan di bawah ini dan lihat dua kolom terakhir: Anda akan melihat bahwa mereka sebenarnya tidak berguna (dan mereka membuat masalah untuk kecocokan, karena matriks desain sekarang tunggal ).Perhatikan bahwa frekuensinya tepat, tetapi amplitudo komponen bukan nol tidak (1,2,3,4). Alasannya adalah bahwa1 , dosaω x ,cosω x ,... . Ini bukan1π√ baik, karena akan menjadi dasar Fourier ortonormal, 12 π√, dosaω xπ√, cosω xπ√, ... .
fda
fungsi-fungsi basis Fourier diskalakan dengan cara yang aneh: nilai maksimumnya bukan 1, seperti untuk basis Fourier biasaAnda jelas melihat bahwa:
Penskalaan basis Fourier yang diberikan oleh
fda
, sehingga basis Fourier yang biasa diperoleh, mengarah ke koefisien regresi yang memiliki nilai yang diharapkan:Mari kita coba
fft
sekarang: perhatikan bahwa karenaYper
adalah urutan periodik, titik terakhir tidak benar-benar menambahkan informasi (DFT urutan selalu periodik). Dengan demikian kita dapat membuang poin terakhir saat menghitung FFT. Juga, FFT hanyalah algoritma numerik cepat untuk menghitung DFT, dan DFT dari urutan bilangan real atau kompleks adalah kompleks . Jadi, kami benar-benar ingin modulus koefisien FFT:Kami berkembang biak dengan2N- 1 untuk memiliki skala yang sama dengan basis Fourier 1 , dosaω x ,cosω x ,... . Jika kami tidak skala, kami masih akan memulihkan frekuensi yang benar, tetapi amplitudo semua akan diskalakan oleh faktor yang sama sehubungan dengan apa yang kami temukan sebelumnya. Sekarang mari kita plot koefisien fft:
Ok: frekuensinya benar, tetapi perhatikan bahwa sekarang fungsi dasar bukan sinus dan cosinus lagi (mereka eksponensial kompleksexpn i ω x , dimana dengan saya Saya menunjukkan unit imajiner). Perhatikan juga bahwa alih-alih satu set frekuensi bukan nol (1,2,3,4) seperti sebelumnya, kami mendapat satu set (1,2,5). Alasannya adalah istilah ituxnexpn i ω x dalam ekspansi koefisien kompleks ini (dengan demikian xn kompleks) sesuai dengan dua istilah nyata Sebuahns i n ( n ω x ) + bnc o s ( n ω x ) dalam ekspansi dasar trigonometri, karena rumus Euler expi x =cosx +akuberdosax . Modulus koefisien kompleks sama dengan jumlah dalam kuadrature dari dua koefisien nyata, yaitu,| xn| = a2n+ b2n------√ . Faktanya,5 = 33+ 42------√ .
sumber
daily
dilengkapi denganfda
paket.