对于已知具有季节性或日常模式的数据,我想使用傅立叶分析来进行预测。在运行时间序列数据fft后,我获得系数。如何使用这些系数进行预测?
我相信FFT假设它接收的所有数据构成一个周期,然后,如果我只是使用ifft重新生成数据,我也重新生成我的函数的延续,那么我可以将这些值用于未来的值吗?
简单地说:我运行fft为t = 0,1,2,.. 10然后在coef上使用ifft,我可以使用重新生成的时间序列为t = 11,12,... 20?
答案 0 :(得分:33)
我知道这个问题对你来说可能不再适用,但是对于那些正在寻找答案的人我写了一个非常简单的Python中{4}} {/ 3>的外推法的例子。
在运行脚本之前,请确保已安装所有依赖项(numpy,matplotlib)。随意尝试一下。 附:局部静止小波可能比傅立叶外推更好。 LSW通常用于预测时间序列。傅立叶外推的主要缺点是它只是用周期N重复你的系列,其中N是你的时间序列的长度。
答案 1 :(得分:23)
听起来你想要一个外推和去噪的组合。
您说您想要在多个时段重复观察到的数据。那么,只需重复观察到的数据。无需傅立叶分析。
但你也想找到“模式”。我认为这意味着在观察到的数据中找到主要频率成分。然后是,采用傅里叶变换,保留最大系数,并消除其余系数。
X = scipy.fft(x)
Y = scipy.zeros(len(X))
Y[important frequencies] = X[important frequencies]
关于周期性重复:设z = [x, x]
,即信号x
的两个周期。然后Z[2k] = X[k]
为{0,1,...,N-1}中的所有k
,否则为零。
Z = scipy.zeros(2*len(X))
Z[::2] = X
答案 2 :(得分:7)
在时间序列数据上运行FFT时,会将其转换为频域。系数乘以系列中的项(正弦和余弦或复指数),每个都具有不同的频率。
外推总是危险的,但欢迎你试试。当你这样做的时候,你正在使用过去的信息来预测未来:“通过今天的预测来预测明天的天气。”请注意风险。
我建议阅读"Black Swan"。