[PYTHON] Puissance des méthodes de prédiction dans l'analyse de données chronologiques Semi-optimisation (SARIMA) [Memo]

Aperçu

Lors de l'analyse de certaines données de puissance, on m'a demandé de «prédire la demande de puissance à l'aide des modèles AR, MA, ARIMA, SARIMA». Comme il s'agissait de la première méthode de prédiction en Python pour la première fois, j'ai décidé de rechercher des paramètres de manière circulaire.

Les paramètres sont order = (p, d, q) et season_order = (p, d, q), et nous avons décidé d'adopter le paramètre avec le plus petit aic.

La source

J'ai falsifié ce que j'ai trouvé dans stackoverflow et je l'ai incorporé. Quand j'ai récupéré la source, c'était 12 ans. Était-ce des données mensuelles? Cette fois, puisque les données de puissance pour une semaine sont prédites à partir des données d'entraînement pour un mois, s est égal à 24, ce qui est le plus petit aic. Pourquoi···


import numpy as np
import pandas as pd
import statsmodels.api as sm
import statsmodels
import time

p = d = q = range(0,3)

import itertools

pdq = list(itertools.product(p, d, q))

seasonal_pdq = [(x[0], x[1], x[2], 12) for x in list(itertools.product(p, d, q))]

y=TargetData

minaic = 999999
minparam = 0

starttime = time.time()
for param in pdq:
    for param_seasonal in seasonal_pdq:
        try:
            print('Commencer le montage')
            mod = sm.tsa.statespace.SARIMAX(y,
                                            order=param,
                                            seasonal_order=param_seasonal,
                                            enforce_stationarity=False,
                                            enforce_invertibility=False)

            results = mod.fit()
        
            print('ARIMA{}x{}12 - AIC:{}'.format(param, param_seasonal, results.aic))

            if minaic > results.aic: 
                minaic = results.aic
                minparam = param
                minparams = param_seasonal
            print('valeur minimale aic{} - valeur minimale aicのp,d,q{} - valeur minimale aicのp,d,q,s{}'.format(minaic, minparam,minparams))
            
        except:
            continue
        
duration = time.time() -starttime
print('p,d,Fin de l'estimation de q\n Temps de mesure:{}'.format(duration))

f = open('results_param(SARIMA).txt','w')
f.write('valeur minimale aic{} - valeur minimale aicのp,d,q{} - valeur minimale aicのp,d,q,s{}'.format(minaic, minparam,minparams))
f.close()

Tâche

――Je ne sais pas si j'ai pu optimiser par la force

Recommended Posts

Puissance des méthodes de prédiction dans l'analyse de données chronologiques Semi-optimisation (SARIMA) [Memo]
Analyse des séries chronologiques 3 Prétraitement des données des séries chronologiques
Analyse des séries chronologiques 4 Construction du modèle SARIMA
Lissage des séries temporelles et des données de forme d'onde 3 méthodes (lissage)
Python: analyse des séries chronologiques: prétraitement des données des séries chronologiques
Ce que vous ne devriez pas faire dans le processus d'analyse des données de séries chronologiques (y compris la réflexion)
Différenciation des données de séries chronologiques (discrètes)
Comparaison de la prédiction des données de séries chronologiques entre le modèle SARIMA et le modèle Prophet
Prédiction des données de séries chronologiques par projection simplex
Conversion des données de temps en notation 25 heures
Illustrez instantanément la période prédominante dans les données de séries chronologiques à l'aide de l'analyse spectrale
Tracer CSV de données de séries temporelles avec une valeur unixtime en Python (matplotlib)
Python: analyse des séries temporelles: création d'un modèle SARIMA
Obtenez des données de séries chronologiques de k-db.com avec Python
Acquisition de données chronologiques (quotidiennes) des cours des actions
Voir les détails des données de séries chronologiques dans Remotte
Comment lire les données de séries chronologiques dans PyTorch
Environnement enregistré pour l'analyse des données avec Python
Résumé des méthodes d'analyse de données statistiques utilisant Python qui peuvent être utilisées en entreprise
[Introduction à la décomposition des éléments] Organisons les méthodes d'analyse des séries chronologiques en R et python ♬
Détection d'anomalies des données de séries chronologiques par LSTM (Keras)
Liste du code Python utilisé dans l'analyse de Big Data
Python: analyse des séries chronologiques
Analyse des séries chronologiques RNN_LSTM1
Analyse des séries chronologiques 1 Principes de base
"Analyse des séries chronologiques de mesure des données économiques et financières" Résolution du problème de fin de chapitre avec Python
Comment calculer la somme ou la moyenne des données csv de séries chronologiques en un instant
[Comprendre au plus court] Principes de base de Python pour l'analyse des données
Graphique des données de séries chronologiques en Python à l'aide de pandas et matplotlib
Une histoire de regroupement de données de séries chronologiques d'échange
Analyse des séries chronologiques partie 4 VAR
Analyse de séries chronologiques Partie 3 Prévisions
[Python] Tracer des données de séries chronologiques
Analyse de séries chronologiques Partie 1 Autocorrélation
Comment extraire des fonctionnalités de données de séries chronologiques avec les bases de PySpark
Une analyse simple des données de Bitcoin fournie par CoinMetrics en Python
<Pandas> Comment gérer les données de séries chronologiques dans le tableau croisé dynamique