我目前正在使用库pmdarima构建一个ARIMAX模型,方法是:
pmdarima.pipeline.Pipeline.fit(y, exogenous=None, **fit_kwargs)该参数描述如下:
外生:数组样,shape=n_obs,n_vars,可选(default=None) 一个可选的二维外生变量数组。如果提供了这些变量,则在回归操作中使用这些变量作为附加功能。这不应包括不变或趋势。请注意,如果ARIMA适合于外生特征,则必须提供外生特征来进行预测。
但我不明白这种格式是什么意思:shape=[n_obs, n_vars]
n_obs和n_vars的含义是什么?
为什么我们需要这种格式而不是时间序列格式中的外生变量?
发布于 2019-05-07 15:04:15
泰勒史密斯先生给我发了一封电子邮件:
外生变量,或协变量,表示为大多数ML算法的二维矩阵,我相信您已经知道了。沿行轴是观察,沿列轴是变量或特征向量(因此
n_samplesxn_features)。您要问的约定是Numpy和scikit-learn用于表示类似数组的对象的形状(例如,请参阅关于scikit-learn's Lasso的文档)。shape=[n_obs, n_vars]简单地表示一个二维矩阵,其中包含沿列的行和变量的样本。 至于你为什么不能用时间序列..。您的y变量应该是一个时间序列(实际上只是一个向量或一维数组),因为这正是您将要预测的。这是唯一需要的数据。外生变量纯粹是补充数据的可选部分。
发布于 2022-11-16 01:13:39
我在寻找这个问题--这是我如何让它与外生变量一起工作的。使用model.summary()验证模型中的外生变量。
# result_df is the main df
# predicts next 12 months after 24 months of training
i_split = 24
model_input = 'arima'
target = 'target_var'
exogenous = 'exogenous_var'
y_train = result_df.loc[0:i_split, [target]+[exogenous]]
y_test = result_df.loc[i_split+1:36, [target]+[exogenous]]
if model_input == 'arima_auto':
model = pm.auto_arima(y_train,seasonal=False,m=12,stepwise=True,trace=True,start_p=0,start_q=0,start_P=0,start_Q=0,max_p=2,max_q=2,maxiter=50000,with_intercept=True,trend='ct')
elif model_input == 'arima':
model = pm.arima.ARIMA(order=(1,0,1),seasonal=False,m=12,stepwise=True,trace=True,maxiter=6000,with_intercept=True,trend='ct')
# Train on x_train, y_train
model.fit(y_train['target'],X=pd.DataFrame(y_train['exogenous']))
# Predict on x_test
preds = model.predict(n_periods=12,X=pd.DataFrame(y_test['exogenous']))https://stackoverflow.com/questions/55972899
复制相似问题