Применить Autogression к массиву 3d numpy и массиву прогнозирования в Python - PullRequest
2 голосов
/ 02 апреля 2020

У меня есть массив 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)
...