VAR模型ValueError:x已经包含一个常量

数据挖掘 机器学习 Python 时间序列 统计数据 预测
2022-02-01 14:25:25

我将 VAR 模型用于多元时间序列。其结构是,尽管每个变量都是其自身过去滞后和其他变量过去滞后的线性函数,但其​​中一个和/或两个变量在调查期间可能不会改变。在 10 个变量中。

下面是一个与我正在研究的数据框类似的数据框。实际数据集有 190 行。

x0 = [0,0,0,0,0]
x1 = [0.011866,0.013380,0.015357,0.024451,0.030889]
x2 = [0,2,2,3,3]
x3 = [1,1,2,3,3]
x4 = [0,0,0,0,0]

T = ['2000-01-01', '2000-01-02', '2000-01-03', '2000-01-04', '2000-01-05']
TDT = pd.to_datetime(T)
df = pd.DataFrame({'X0': x0, 'X1': x1, 'X2': x2, 'X3': x3, 'X4': x4})
df.index = TDT
df

model = VAR(df)
result = model.fit(1)

**ValueError: x already contains a constant**

有没有办法解决这个问题?

2个回答

您的两列X0X4是常量,即它们始终包含一个值。

该模型将在拟合期间尝试找到一个常数,因此可能会检查您不包括一个常数。

一旦你有你的整个数据框(例如称为df),你可以通过使用删除像上面两个一样的常量列:

df_no_constants = df.loc[:, (df != df.iloc[0]).any()]

然后尝试像以前一样将其放入您的模型中。

方法:1

在您的数据集中,如果任何列值在所有条目(行)中都是恒定的,或者如果数据的方差为零,则显示此错误。只需删除方差为零的列,然后再试一次

方法:2

如果您无法删除它,则生成方差为 1 的噪声数据(确保此值不应影响输出)并用噪声数据替换该值