我想使用FastFourierTransformation來識別模式,以便預測未來的監測指標值。我想要做的是:如何使用apache的commons.math FastFourierTransformer進行時間序列預測
我監控傳入流量負載,這是季節性重複(白天高選),另外還有一週時間內的趨勢(週末時流量更低,季節性重複)。 雖然我嘗試了一些增強迴歸算法,但我也想使用FFT來識別最重要的係數,以識別這兩個最重要的頻率,然後嘗試進行外推以預測流量在不遠的將來。 雖然我在數學方面的理論背景給我帶來了一些麻煩,但我正在努力與apache.commons.math3.transform.FastFourierTransformation
。 假設我用doube [] array
存儲在觀察的時間內我最新的交通負荷,我使用下面的代碼:
double [] initialSignal = getMonitoringData(timeslide);
FastFourierTransformer fft = new FastFourierTransformer(DftNormalization.STANDARD);
Complex [] result = fft.transform(initialSignal, TransformType.FORWARD);
但是我不熟悉Complex []
數組表示什麼。數組中每個Complex對象的虛數屬性是否代表相關的正弦係數? 因此,如果我想採用去噪後的初始信號,我只需將Complex []結果數組的較低有效係數設置爲零即可。 但儘管如此,如果我有以下
Complex [] denoised = fft.transform(importantCoefficiants, TransformType.INVERSE);
的結果仍然是複雜的陣列。我怎樣才能得到時間序列的新變換的x(t)值? 如何預測x(t+1), x(t+2) ... x(t+n) values
,如何去除初始時間序列後?
自從大學以來已經有一段時間了,但我認爲複數的大小代表了該頻率的功率,而方向則表示該分量的相位。所以你想找到sqrt(re^2 + im^2)最大的係數。 – erickson