Python 有人能解释一下如何通过快速傅立叶变换(FFT)对时间序列中的季节性进行建模吗?
序列yt可分解并建模如下:Python 有人能解释一下如何通过快速傅立叶变换(FFT)对时间序列中的季节性进行建模吗?,python,scikit-learn,jupyter-notebook,fft,Python,Scikit Learn,Jupyter Notebook,Fft,序列yt可分解并建模如下: yt=漂移(或趋势)+季节性+噪音,这与帕塞瓦尔定理一致 用于模拟序列季节性的技术之一是FFT算法的应用。我读过几篇关于它(FFT)的文章,我了解它的作用,但在建模噪声之前,我如何将它重新纳入模型 我假设FFT将信号转换为构成信号的频率的正弦和余弦函数的线性组合。那么,如何将其合并回模型中?我读过几个我没有完全理解的例子,或者我应该说我的好奇心还没有得到满足 例如,考虑系列yt: from sklearn.linear_model import LinearRegre
yt=漂移(或趋势)+季节性+噪音
,这与帕塞瓦尔定理一致
用于模拟序列季节性的技术之一是FFT算法的应用。我读过几篇关于它(FFT)的文章,我了解它的作用,但在建模噪声之前,我如何将它重新纳入模型
我假设FFT将信号转换为构成信号的频率的正弦和余弦函数的线性组合。那么,如何将其合并回模型中?我读过几个我没有完全理解的例子,或者我应该说我的好奇心还没有得到满足
例如,考虑系列yt:
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeature
from sklearn.pipeline import Pipeline, FeatureUnion
from sklearn.model_selection import train_test_split
# data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# estimators
linear_model = LinearRegression()
poly_feat = PolynomialFeatures(degree=3)
# modeling trend
pipe = Pipeline([ ('poly_trans', poly_feat), ('regressor', linear_model) ])
pipe.fit(X_train, y_train).score(X_test, y_test) # 0.76
现在假设我要在这个系列中建模季节性,在这里我使用FFT,我想我会尝试使用一个特征联合来结合趋势和季节效应,因此:
from scipy.fftpack import fft
poly_fft_union = FeatureUnion([ ('poly_trans', poly_feat), ('fft', fft) ])
这就是我被困的地方。fft变换返回复数。我不想分享更多的信息,因为我不想周围的人假设我知道这件事的某些方面。我在线学习的例子要么避免使用fft,要么编写了一个直接应用正弦/余弦傅里叶变换公式的自定义估计器
如果我没有陷入困境,那么我会对趋势和季节性进行建模
pipe = Pipeline([ ('union', poly_fft_union), ('regressor', linear_model)
pipe.fit(X_train, y_train)
我需要满足我的好奇心。求你了,有人吗