Я пытаюсь создать модель ARIMA для прогнозирования дорожного движения для одного узла, используя набор данных PEMS08, предварительно обработанный для ASTGCN. Я использовал библиотеку statsmodels вместе с функцией auto_arima библиотеки pmdarima, чтобы автоматически определить лучшие параметры модели ARIMA. Однако когда я делаю прогнозы на основе тестовых данных, результатом является постоянная прямая линия, которая вообще не отражает изменения, наблюдаемые в исходном временном ряду.
Блок-схема р>
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pmdarima import auto_arima
from statsmodels.tsa.arima.model import ARIMA
from sklearn.metrics import mean_absolute_error, mean_squared_error
# Caricamento del dataset preprocessato per ASTGCN
data = np.load('data/PEMS08/PEMS08_r1_d0_w0_astcgn.npz')
# Estrazione della serie temporale per il nodo 0
data_node_0 = data['train_target'][:, 0, :] # (num_samples, num_for_predict)
# Riorganizzazione dei dati in una singola serie temporale
time_series_node_0 = data_node_0.flatten()
# Divisione dei dati in train e test
train_size = int(len(time_series_node_0) * 0.8)
train, test = time_series_node_0[:train_size], time_series_node_0[train_size:]
# Utilizzo di auto_arima per determinare i migliori parametri ARIMA
stepwise_model = auto_arima(train, seasonal=False, trace=True, error_action='ignore', suppress_warnings=True)
print(stepwise_model.summary())
# Creazione del modello ARIMA con i migliori parametri trovati
tuned_order = stepwise_model.order
model = ARIMA(train, order=tuned_order)
model_fit = model.fit()
# Predizione sui dati di test
start = len(train)
end = len(train) + len(test) - 1
predictions = model_fit.predict(start=start, end=end, typ='levels')
# Valutazione delle prestazioni del modello
mae = mean_absolute_error(test, predictions)
mse = mean_squared_error(test, predictions)
rmse = np.sqrt(mse)
mape = np.mean(np.abs((test - predictions) / test)) * 100
print(f'MAE: {mae:.4f}')
print(f'RMSE: {rmse:.4f}')
print(f'MAPE: {mape:.4f}%')
# Grafico delle previsioni rispetto ai valori reali
plt.figure(figsize=(10, 5))
plt.plot(test, label='Valori Reali', color='blue')
plt.plot(predictions, label='Previsioni ARIMA', color='red')
plt.title('Confronto tra Previsioni ARIMA e Valori Reali per il Nodo 0')
plt.xlabel('Tempo')
plt.ylabel('Valore del Flusso')
plt.legend()
plt.grid()
plt.show()
Я пытаюсь создать модель ARIMA для прогнозирования дорожного движения для одного узла, используя набор данных PEMS08, предварительно обработанный для ASTGCN. Я использовал библиотеку statsmodels вместе с функцией auto_arima библиотеки pmdarima, чтобы автоматически определить лучшие параметры модели ARIMA. Однако когда я делаю прогнозы на основе тестовых данных, результатом является постоянная прямая линия, которая вообще не отражает изменения, наблюдаемые в исходном временном ряду. Блок-схема р> [code]import numpy as np import pandas as pd import matplotlib.pyplot as plt from pmdarima import auto_arima from statsmodels.tsa.arima.model import ARIMA from sklearn.metrics import mean_absolute_error, mean_squared_error
# Caricamento del dataset preprocessato per ASTGCN data = np.load('data/PEMS08/PEMS08_r1_d0_w0_astcgn.npz')
# Estrazione della serie temporale per il nodo 0 data_node_0 = data['train_target'][:, 0, :] # (num_samples, num_for_predict)
# Riorganizzazione dei dati in una singola serie temporale time_series_node_0 = data_node_0.flatten()
# Divisione dei dati in train e test train_size = int(len(time_series_node_0) * 0.8) train, test = time_series_node_0[:train_size], time_series_node_0[train_size:]
# Utilizzo di auto_arima per determinare i migliori parametri ARIMA stepwise_model = auto_arima(train, seasonal=False, trace=True, error_action='ignore', suppress_warnings=True) print(stepwise_model.summary())
# Creazione del modello ARIMA con i migliori parametri trovati tuned_order = stepwise_model.order model = ARIMA(train, order=tuned_order) model_fit = model.fit()
# Predizione sui dati di test start = len(train) end = len(train) + len(test) - 1 predictions = model_fit.predict(start=start, end=end, typ='levels')
# Valutazione delle prestazioni del modello mae = mean_absolute_error(test, predictions) mse = mean_squared_error(test, predictions) rmse = np.sqrt(mse) mape = np.mean(np.abs((test - predictions) / test)) * 100
# Grafico delle previsioni rispetto ai valori reali plt.figure(figsize=(10, 5)) plt.plot(test, label='Valori Reali', color='blue') plt.plot(predictions, label='Previsioni ARIMA', color='red') plt.title('Confronto tra Previsioni ARIMA e Valori Reali per il Nodo 0') plt.xlabel('Tempo') plt.ylabel('Valore del Flusso') plt.legend() plt.grid() plt.show()
Я работаю над проблемой прогнозирования временных рядов, используя модель ARIMA из statsmodels. Моя цель — спрогнозировать транспортный поток для конкретного места (PEMS08). Первоначально я использовал произвольные параметры (p, d, q) = (2, 1, 2),...
Я работаю над проблемой прогнозирования временных рядов, используя модель ARIMA из statsmodels. Моя цель — спрогнозировать транспортный поток для конкретного места (PEMS08). Первоначально я использовал произвольные параметры (p, d, q) = (2, 1, 2),...
У меня есть набор данных о скорости вентилятора (об/мин), состоящий из 192,405 значений (значения поезда+тест). Я тренирую модель ARIMA и пытаюсь предсказать остальные будущие значения нашего набора данных и сравниваю результаты.
При подгонке модели...
У меня есть работающая модель прогнозирования временных рядов Prophet на основе данных об использовании за последние два года. Ради науки я также хочу воспроизвести на данных рабочую модель ARIMA, но что бы я ни пробовал, она не работает.
Я использую модель Auto ARIMA для прогнозирования спроса на набор данных временных рядов. Изучив результаты, я заметил, что прогнозируемые значения не очень хорошо согласуются с фактическими данными о спросе, хотя я рисую остатки и они случайны.
Вот...