Wie man einen Taschentest mit Python macht

Einführung

Beschreiben Sie, wie Sie den Beuteltest mit Python durchführen

Was ist ein Taschentest?

Eine Methode, um zu testen, ob eine Reihe von Korrelationsfunktionen korreliert.

Weitere Informationen finden Sie unter [wikipedia](https://ja.wikipedia.org/wiki/%E3%81%8B%E3%81%B0%E3%82%93%E6%A4%9C%E5% AE% 9A)

Funktionen, die im Beuteltest verwendet werden

Zum Beispiel bei der Durchführung des Ljung-Box-Tests statsmodels.stats.diagnostic.acorr_ljungbox Wird genutzt. Klicken Sie hier für Details (https://www.statsmodels.org/stable/generated/statsmodels.stats.diagnostic.acorr_ljungbox.html)

Beispiel 1

Zum Beispiel wird der Test unter Verwendung von zufällig erzeugtem Rauschen (weißes Gaußsches Rauschen) durchgeführt. Natürlich sollte es keine Korrelation geben, daher sollte die Nullhypothese nicht zurückgewiesen werden.

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

#Datenpunkte sind 1000 Punkte
np.random.seed(42)
data = np.random.standard_normal(1000)

#Zeichnen Sie zuerst die Daten
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');

Natürlich werden die Zeitreihendaten des weißen Gaußschen Rauschens aufgezeichnet. img.png

Lassen Sie uns dies mit einer Tasche testen.

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

Das Ergebnis ist wie folgt.

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

Es wird in einem Tapple-Format mit zwei Elementen ausgegeben, das erste ist die Teststatistik und das zweite ist der p-Wert. Machen wir es tabellarisch, damit es schön aussieht.

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

Das folgende Ergebnis wird ausgegeben. Die Säulenrichtung entspricht der Größe der Nase. キャプチャ.PNG

Beispiel 2

Als nächstes testen wir den MA (2) -Prozess. Nehmen Sie die folgende Formel an.

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

$ \ Epsilon_t $ ist jedoch weißes Gaußsches Rauschen. Wie Sie der Form der Formel entnehmen können, scheint es eine Korrelation zu geben, wenn der Zeitunterschied 3 beträgt (z. B. $ y_5 $ und $ y_8 $). Natürlich kann es mathematisch bestätigt werden, aber dies wird durch den Beuteltest bestätigt.

#Modelldaten erstellen
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]

#Zeichnen Sie zuerst die Daten
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

Wenn beispielsweise P bei 0,05 getestet wird, gibt es keinen signifikanten Unterschied, wenn die Verzögerung 2 oder weniger beträgt, aber es stellt sich heraus, dass es einen signifikanten Unterschied gibt, wenn es 3 oder mehr ist (dh wenn $ \ rho_3 $ enthalten ist). Ich werde.

Recommended Posts

Wie man einen Taschentest mit Python macht
So führen Sie eine Mehrkern-Parallelverarbeitung mit Python durch
So führen Sie eine Hash-Berechnung mit Salt in Python durch
[Python] Wie man PCA mit Python macht
Schwanzrekursion mit Python2 durchführen
Erste Schritte mit Python
Was tun mit PYTHON Release?
So berechnen Sie das Datum mit Python
So führen Sie eine arithmetische Verarbeitung mit der Django-Vorlage durch
So machen Sie R chartr () in Python
So arbeiten Sie mit BigQuery in Python
So zeigen Sie Python-Japanisch mit Lolipop an
Wie man mit Python-Flüchen Japanisch eingibt
So installieren Sie Python3 mit Docker Centos
Primzahlbeurteilung mit Python
So installieren Sie Python
Primzahlbeurteilung mit Python
Mach Houdini mit Python3! !! !!
Hochladen mit Heroku, Flask, Python, Git (4)
[Python] So testen Sie den Befehlszeilen-Parser-Klick
Wie man Spaß am Programmieren mit Minecraft hat (Ruby, Python)
[REAPER] Wie man Reascript mit Python spielt
[Python] Was ich getan habe, um Unit Test zu machen
So beschneiden Sie ein Bild mit Python + OpenCV
So legen Sie Attribute mit Mock of Python fest
So messen Sie die Ausführungszeit mit Python Teil 1
Wie man tkinter mit Python in Pyenv benutzt
[Python] Umgang mit japanischen Zeichen mit openCV
[Python] Vergleichen von Datum und Uhrzeit mit der hinzugefügten Zeitzone
So messen Sie die Ausführungszeit mit Python Part 2
Stellen Sie mit Python eine Verbindung zu BigQuery her
So konvertieren / wiederherstellen Sie einen String mit [] in Python
So installieren Sie Python [Windows]
python3: Verwendung der Flasche (2)
So kratzen Sie Bilddaten von Flickr mit Python
[Einführung in Python] Wie iteriere ich mit der Bereichsfunktion?
Mach Django mit CodeStar (Python3.8, Django2.1.15)
Stellen Sie mit Python eine Verbindung zu Wikipedia her
So aktualisieren Sie Pythons Tkinter auf 8.6
Post to Slack mit Python 3
Hochladen mit Heroku, Flask, Python, Git (Teil 3)
So führen Sie mit OpenCV ein Null-Padding in einer Zeile durch
So führen Sie Tests zusammen mit Python unittest aus
[Python] So legen Sie den Download-Speicherort mit youtube-dl fest
So messen Sie die Wiedergabezeit von MP3-Dateien mit Python
Verwendung des interaktiven Python-Modus mit Git Bash
Wie benutzt man Python Argparse?
Wie aktualisiere ich mit SQLAlchemy?
So konvertieren Sie eine JSON-Datei mit Python Pandas in eine CSV-Datei
Wie man mit Theano besetzt
Hochladen mit Heroku, Flask, Python, Git (Teil 1)
Python: Wie man pydub benutzt
[Python] Umgang mit Pandas read_html Lesefehler
[Python] Verwendung von checkio
So führen Sie Notepad ++ Python aus
Hochladen mit Heroku, Flask, Python, Git (Teil 2)
Wie mit SQLAlchemy ändern?
Schalten Sie Python mit Alternativen auf 2.7 um