我有一个时间序列数据与一个城市的date和temperature记录。以下是我从时间序列分析中得出的意见:
date与temperature的关系图,观察其季节性。adfuller test时,我们发现数据已经是固定的,所以d=0。p=2和q=10。模型
model=sm.tsa.statespace.SARIMAX(df['temperature'],order=(1, 1, 1),seasonal_order=(2,0,10,12))
results=model.fit()此fit函数无限期运行,无法达到输出。我是运行在谷歌Colab CPU上。
如何解决这个问题?
发布于 2021-03-16 23:20:21
假设在dataframe中有多个城市。您可以在dataframe中创建一些新特性。例如,我在下面创建了一些特性,以尝试匹配PACF和ACF图形。
df['lag_1'] = df.groupby(['city'])['temperature'].transform(lambda x: x.shift(1))
d=1
df['d_1'] = df['temperature'] - df['lag_1']
P= 1:
df['p_1'] = df.groupby(['city'])['d_1'].transform(lambda x: x.shift(1))
Q= 1:
df['ma_1'] = df.groupby(['city'])['d_1'].transform(lambda x: x.shift(1).rolling(1).mean())
P=2 (及其他术语)
df['lag_t12'] = df.groupby(['city'])['temperature'].transform(lambda x: x.shift(12))
df['lag_t24'] = df.groupby(['city'])['temperature'].transform(lambda x: x.shift(24))
.
.
.
df['lag_t120'] = df.groupby(['city'])['temperature'].transform(lambda x: x.shift(120))
Q=10:
df['Q_10'] = df[col for col in df if col.startswith('lag_t')].mean()
在此之后,尝试使用LightGBM、XGBoost或其他回归包,以temprature作为目标变量,对这些新创建的特性进行回归。
或者,您可以完全放弃ACF/PCF方法,而是使用以下方法创建一系列常用的特性:
并对这些功能进行回归,并检查回归超参数中哪些特性最小化了RMSE/AIC/BIC。
由于交叉验证在时间序列的情况下是不同的,请考虑在scikit学习中使用TimeSeriesSplit。检查此帖子,以防您想要进行分组时间序列交叉验证。
https://datascience.stackexchange.com/questions/90327
复制相似问题