У меня есть массив 3d Numpy с наблюдениями за 3 точками времени:
a = np.array(time,x,y)
Моя цель - выполнить авторегрессию на наблюдениях за 3 точками времени и предсказать массив, содержащий будущие значения.
Я попытался сделать это, используя для l oop для строк и столбцов, но тогда моя авторегрессия учитывает только последние 3 значения (по одному на измерение), что приводит к ошибка:
ValueError: maxlag should be < nobs
Как применить авторегрессию к трем измерениям, используя не только указанные c x и y, но и все записи (как предполагается, что тренд быть таким же)? Кроме того, есть ли более быстрый способ, чем цикл, поскольку конечный массив np.array будет намного больше?
Спасибо!
Это код, который я написал:
a = np.array([[[ 5, 8, 6, 5],
[ 8, 2, 3, 3],
[ 0, 4, 7, 1],
[ 9, 9, 6, 1]],
[[ 2, 0, 10, 9],
[ 3, 6, 8, 7],
[ 1, 4, 2, 9],
[ 2, 4, 9, 2]],
[[ 6, 9, 9, 1],
[ 8, 7, 6, 1],
[ 5, 3, 2, 2],
[ 7, 7, 2, 5]]])
# Loop over each index in the array
for row in range(a.shape[0] ) :
for col in range(a.shape[1] ) :
data = (a[0,row,col], a[1,row,col], a[2,row,col])
# fit model
model = AR(data)
model_fit = model.fit()
# make prediction
yhat = model_fit.predict(len(data), len(data))
print(yhat)