Comment faire un test de sac avec python

introduction

Décrivez comment effectuer le test du sac avec python

Qu'est-ce qu'un test de sac?

Une méthode pour tester s'il existe une corrélation dans une série de fonctions de corrélation.

Pour plus de détails, voir [wikipedia](https://ja.wikipedia.org/wiki/%E3%81%8B%E3%81%B0%E3%82%93%E6%A4%9C%E5% AE% 9A)

Fonctions utilisées dans le test du sac

Par exemple, lors de l'exécution du test Ljung-Box statsmodels.stats.diagnostic.acorr_ljungbox Est utilisé. Cliquez ici pour plus de détails (https://www.statsmodels.org/stable/generated/statsmodels.stats.diagnostic.acorr_ljungbox.html)

Exemple 1

Par exemple, le test est réalisé en utilisant un bruit généré aléatoirement (bruit gaussien blanc). Bien sûr, il ne devrait y avoir aucune corrélation, donc l'hypothèse nulle ne doit pas être rejetée.

import matplotlib as mpl
import matplotlib.pyplot as plt
plt.style.use('seaborn')
mpl.rcParams['font.family'] = 'serif'
%matplotlib inline
import numpy as np
from statsmodels.stats.diagnostic import acorr_ljungbox
p = print

#Les points de données sont de 1000 points
np.random.seed(42)
data = np.random.standard_normal(1000)

#Tracez d'abord les données
plt.figure(figsize=(10,6))
plt.plot(data,lw = 1.5)
plt.xlabel('time')
plt.ylabel('value')
plt.xlim([0,100])
plt.title('time vs. value plot');

Naturellement, les données chronologiques du bruit gaussien blanc sont tracées. img.png

Testons cela avec un sac.

result = acorr_ljungbox(data,lags = 5)
p(result)

Le résultat est le suivant.

(array([0.05608493, 0.05613943, 0.31898424, 3.27785331, 3.94903872]), array([0.81279444, 0.97232058, 0.9564194 , 0.51244884, 0.55677627]))

Elle est sortie dans un format tapple avec deux éléments, le premier est la statistique de test et le second est la valeur p. Faisons un tableau pour qu'il soit beau.

result_table = pd.DataFrame(data = result, index=['static value', 'P value'],columns=[str(i) for i in range(1,6)])
result_table

Le résultat suivant est sorti. La direction de la colonne correspond à la taille de la patte. キャプチャ.PNG

Exemple 2

Ensuite, testons le processus MA (2). Supposons la formule suivante.

y_t = 1 + \epsilon_t + 0.5 \epsilon_{t-3}

Cependant, $ \ epsilon_t $ est un bruit gaussien blanc. Comme vous pouvez le voir sur la forme de la formule, il semble qu'il y ait une corrélation lorsque le décalage horaire est de 3 (par exemple, $ y_5 $ et $ y_8 $). Bien sûr, cela peut être confirmé mathématiquement, mais cela est confirmé par le test du sac.

#Création de données de modèle
data = np.zeros(1000)
np.random.seed(42)
err = np.random.standard_normal(1000)
for i in range(1000):
    if i-3 < 0:
        data[i] = 1 + err[i]
    else:
        data[i] = 1 + err[i] + 0.5 * err[i-3]

#Tracez d'abord les données
plt.figure(figsize=(10,6))
plt.plot(data,lw = 1.5)
plt.xlabel('time')
plt.ylabel('value')
plt.title('time vs. value plot (MA(3) model)')
plt.xlim([0,100])

img.png

result = acorr_ljungbox(data,lags = 5)
result_table = pd.DataFrame(data = result, index=['static value', 'P value'],columns=[str(i) for i in range(1,6)])
result_table

キャプチャ.PNG

Par exemple, lorsque P est testé à 0,05, il n'y a pas de différence significative lorsque le décalage est de 2 ou moins, mais il s'avère qu'il y a une différence significative lorsqu'il est de 3 ou plus (c'est-à-dire lorsque $ \ rho_3 $ est inclus). Je vais.

Recommended Posts

Comment faire un test de sac avec python
Comment faire un traitement parallèle multicœur avec python
Comment faire un calcul de hachage avec Salt en Python
[Python] Comment faire PCA avec Python
Pour faire une récursion avec Python2
Comment démarrer avec Python
Que faire avec la sortie de PYTHON?
Comment calculer la date avec python
Comment effectuer un traitement arithmétique avec le modèle Django
Comment faire R chartr () en Python
Comment utiliser BigQuery en Python
Comment afficher le japonais python avec lolipop
Comment entrer le japonais avec les malédictions Python
Comment installer python3 avec docker centos
Jugement des nombres premiers avec Python
Comment installer Python
Jugement des nombres premiers avec python
Faites Houdini avec Python3! !! !!
Comment télécharger avec Heroku, Flask, Python, Git (4)
[Python] Comment tester l'analyseur de ligne de commande cliquez sur
Comment profiter de la programmation avec Minecraft (Ruby, Python)
[REAPER] Comment jouer à Reascript avec Python
[Python] Ce que j'ai fait pour faire un test unitaire
Comment recadrer une image avec Python + OpenCV
Comment spécifier des attributs avec Mock of Python
Comment mesurer le temps d'exécution avec Python Partie 1
Comment utiliser tkinter avec python dans pyenv
[Python] Comment gérer les caractères japonais avec openCV
[Python] Comment comparer la date / heure avec le fuseau horaire ajouté
Comment mesurer le temps d'exécution avec Python, partie 2
Connectez-vous à BigQuery avec Python
Comment convertir / restaurer une chaîne avec [] en python
Comment installer Python [Windows]
python3: Comment utiliser la bouteille (2)
Comment récupérer des données d'image de Flickr avec Python
[Introduction à Python] Comment itérer avec la fonction range?
Faites Django avec CodeStar (Python3.8, Django2.1.15)
Connectez-vous à Wikipedia avec Python
Comment mettre à jour Tkinter de Python vers la version 8.6
Publiez sur Slack avec Python 3
Comment télécharger avec Heroku, Flask, Python, Git (Partie 3)
Comment faire du zéro-padding sur une ligne avec OpenCV
Comment exécuter des tests avec Python unittest
[Python] Comment spécifier l'emplacement de téléchargement avec youtube-dl
Comment mesurer le temps de lecture d'un fichier mp3 avec python
Comment utiliser le mode interactif python avec git bash
Comment utiliser Python Argparse
Comment mettre à jour avec SQLAlchemy?
Comment convertir un fichier JSON en fichier CSV avec Python Pandas
Comment lancer avec Theano
Comment télécharger avec Heroku, Flask, Python, Git (Partie 1)
Python: comment utiliser pydub
[Python] Comment gérer l'erreur de lecture pandas read_html
[Python] Comment utiliser checkio
Comment exécuter Notepad ++ Python
Comment télécharger avec Heroku, Flask, Python, Git (Partie 2)
Comment modifier avec SQLAlchemy?
Basculer python vers 2.7 avec des alternatives